← Insights
Field Notes

Four stages went flat. Nothing was wrong.

Our conversion funnel showed zero movement at four consecutive stages. The instrument was working, the data was fresh, and the number was correct. It was also meaningless — because eight visitors cannot move a stage that converts at two percent.

Zak Data Solutions · September 21, 2026

A conversion funnel is the most-watched number most businesses own. Visitors land, some reach an account page, fewer sign in, fewer still start the thing they came for. We measure ours on a schedule and write each reading to a ledger, because the raw analytics rows expire on their own and a number recorded only in a document loses its source.

One recent reading showed eight new sessions landing and one reaching the account page. Below that: authenticated, unchanged. Wizard shown, unchanged. Create clicked, unchanged. Create succeeded, unchanged. Four consecutive stages at exactly zero movement, and the count of authentication events frozen at the same value it held the previous run.

That reads like a stall. It reads even more like a stall when the instruction you are following says, in so many words, that a level which has not changed is itself a finding on a product this small.

The arithmetic that took ten seconds

Authentication converts at 5.25 percent of sessions that land. Eight new landings therefore predict 0.42 authentications. Not one — a little under half of one. The probability of observing exactly zero at that rate is about 66 percent. Zero is not merely consistent with a healthy funnel; it is the single most likely outcome.

The same holds at every stage below it. Wizard shown converts at 3.36 percent, so eight landings predict 0.27 and zero is 76 percent likely. Create clicked: 0.19 expected, zero 82 percent likely. Create succeeded: 0.17 expected, zero 85 percent likely. To expect a single authentication you need roughly nineteen landings. The window delivered eight.

Nothing had stalled. Nothing had even been asked to move.

Why a right number is harder to catch than a wrong one

We write a lot about empty results and broken instruments — a query that returns zero because the pattern was malformed, a watcher that reports success because it stopped watching. Those failures share a shape: the number is wrong, and once you suspect it, one probe settles it.

This is the opposite case and it is the more dangerous one. Every stage count was correct. The instrument was fine, the source data was eighteen hours fresh, and an independent check on the same run came back clean. There was nothing to debug, because nothing was broken. The number was right and it still told us nothing, because it had been separated from the quantity that gives it meaning.

A wrong number eventually contradicts something. A right number read without its denominator agrees with everything, including the story you brought to it.

The same mistake wearing three other costumes

Once we had a name for it we found it three more times in a single day of routine work, each in a different disguise.

An archival job reported clearing 27 records where it usually clears single digits, against a standing note saying a large number meant something had changed upstream. It had not. That run covered 28 hours instead of the usual 8, because an outage had swallowed the two runs before it. Divided by its own elapsed window, 27 is 7.8 — squarely in the single digits the note predicted. The threshold had been written in a unit that moves with the length of the run.

A second job counted how many times a rule had been applied and compared it against a target, using a window wider than the one the target was written for. The tally was arithmetically perfect and answered a question nobody had asked.

A third — and this one is the constructive version — watches for a class of identifier collision and had reported the same count for five consecutive runs. A flat count is not evidence that the thing producing collisions has stopped. A stopped producer and an unwatched one give identical readings, and this particular detector had spent months with no caller at all. What made the flat number mean something was the denominator beside it: the corpus had grown by six thousand records over the same window and the count had not moved. A producer still minting collisions cannot hold a count flat across six thousand new records.

What we changed

Not the instrument — it was correct every time. We changed what a reading is allowed to say on its own.

Before a flat level can be reported as a stall, the window's new arrivals get multiplied by that stage's own rate, and the reading is compared against that expectation rather than against zero. Before a per-run count can be reported as a trend, it gets divided by the run's elapsed window, or read off a series that carries its own dates and needs no window at all. Before a steady number is called stable, the population it was measured over has to have moved.

None of that is sophisticated. It is one line of arithmetic in each case, and in each case it was the difference between a finding and a false alarm. The discipline is not computing it — it is remembering that a number arriving on a dashboard has already been separated from the thing that made it interpretable, and that nothing about its appearance will tell you so.

For anyone reading a dashboard this week

The questions worth asking are short. How much traffic did this window actually get, and is that enough for this stage to move at its normal rate? Is this count per run, and did this run cover the usual span? Did the population underneath the number change while the number did not?

If a metric cannot answer those beside itself, it is not yet a measurement. It is a number with a story attached, and the story came from the reader.

The engineering behind the story.

We build data pipelines for people who have to act on what the pipeline reports, including when it reports that nothing moved. That means metrics that carry the population they were measured over, thresholds written in units that do not drift with the length of a run, and a written record when a number turns out to have been correct and uninformative at the same time.