Tempio

Why platform numbers disagree

Tempio6 min read

Two systems reporting different numbers for the same week is the normal state of advertising measurement, not a fault. The useful skill is telling the three benign causes from the three structural ones, because only one group is worth an afternoon. This guide is that sorting, and the reading habits that stop a benign difference from being escalated into a crisis.

The three benign causes

Restatement. Platforms revise the recent past. Each sync re-pulls the days a platform is still willing to restate, and once a week the full ninety days are re-read, so late conversions and platform corrections arrive as corrections rather than as gaps. A connection whose sync rewrote a large amount of already-stored history is marked restated. This is the cause of most "the numbers changed overnight" reports, and the correct response is to note it and move on.

A partial day. Today is always partly filled in. A range ending today is reporting a day that is not over, and comparing it against whole days manufactures a decline that does not exist. Two windows compared against each other should end on the same kind of day.

An incomplete sync. A connection whose last sync finished with errors under-reports, because some accounts landed and some did not. A connection that has never synced answers with nothing at all. Neither is a disagreement about reality; both are a gap in collection, and the connection's own status line says which.

None of these three tell you anything about your advertising. Rule them out first, every time, before forming a theory.

The three structural causes

Different attribution windows. Two systems crediting a conversion to different lengths of history will disagree permanently and by a roughly stable amount. This is the single largest source of real difference, and it is a choice somebody made rather than a bug. Choose an attribution window is the decision itself.

Different definitions of the event. A conversion counted at checkout is not a conversion counted at payment capture, and neither is one counted at a page view with a delay. Platforms also report some conversions fractionally, which is correct and surprising the first time you see it.

A platform grading its own homework. A platform counts the conversions it can claim. Where several channels touched the same buyer, more than one platform can honestly claim the same sale, and the sum of what they claim can exceed what actually happened. This is not dishonesty and it is not fixable by reconciliation; it is what self-reported attribution is.

What Tempio stores, and why that removes one source of confusion

One row per entity per day, holding counts and money: spend, impressions, reach, clicks, conversions, conversion value, and the account's own currency stamped on the row. That is all that is stored. A re-sync of a Tuesday rewrites that Tuesday rather than adding a second one.

Every rate is arithmetic done when you look, by the same function everywhere, so the dashboard tile, the campaign table, the account brief and a programmatic result cannot disagree about what cost per acquisition means. Storing a ratio would let it drift from the counts beneath it, and a ratio that disagrees with its own numerator is the hardest kind of wrong to find.

Two consequences worth carrying around.

A zero denominator gives no answer rather than a zero, and the result says so explicitly. An empty cost per acquisition means there were no conversions to divide by. Read it as a zero and you assert that acquisitions were free.

Reach is not a count you may add up. Platforms report it de-duplicated, so one person who saw an ad on two days is one person across the week and two daily rows. Anything summing daily reach is summing daily reach, which is a different quantity from the reach of the range, and every surface that shows it says which one it is showing. Where a platform does not report reach at all the column is empty rather than zero, because did-not-report and reached-nobody are different facts.

The arrangement the reading side sits inside, stated once: your connections read your accounts, a change is written as a draft on the record with the state it would change from and the checks it passed, applying it is gated on approval — by you, or by a rule you wrote — and no platform write reaches a customer account until that platform has granted write access. Applying a cleared change to a platform is in private beta.

The question that sorts benign from structural

Did the gap change.

A gap that has been the same size for six months is definitional. You have already priced it in, your decisions have been made against it, and closing it would change nothing except the numbers you quote.

A gap that moved is either a real change in the business or something broken in collection, and those are worth an afternoon each. The diagnostic is whether the move is in the ratio or in one side: a ratio that shifted while both sides moved together is usually a mix change, and one side moving alone is usually collection.

This is why a stable ratio is a better target than equality. Equality is unattainable and uninformative; a stable ratio is attainable and tells you when something broke.

Making the comparison possible at all

Most disagreements that are worth investigating are impossible to investigate because nothing lines up. Three habits fix that, and all three are free at the start and expensive later.

One tagging convention, applied everywhere. If two systems cannot be joined on a common key, the comparison is a guess. Set up UTM conventions that last is the whole of that argument, and the UTM builder is the thing that stops the convention drifting.

Fixed windows, chosen in advance. A window picked after seeing the numbers is a window picked to support a conclusion.

One currency per comparison. Cross-currency totals are labelled estimates rather than facts, and comparing an estimate against an exact figure is not a comparison. Currency and FX in ad reporting is that trap in detail.

What to do with an irreconcilable difference

Pick one source as the one you make decisions from, write down which and why, and use the others as change detectors rather than as truth. A business that makes decisions from two sources makes them from whichever agrees with the plan.

Then grade the decision source on its own consistency rather than on its agreement with the others. Read a blended report honestly is how to do that without the blend hiding the very thing you are looking for.

Why none of the rates here are stored, and what that prevents, is Why ratios belong at read time.

Read next

Questions

Put frontier AI to work on every ad account you run.

Tempio connects your ad accounts into one workspace and hands your own AI the numbers and the tools. Every change it writes is a draft until you approve it, or until a rule you wrote does.

Request early access
  • Read and draft by default. Approve is a separate permission you grant.