Two tools, one week, three different numbers

Thirty eight, forty one, fifty two. Same seven days, same small shop.

Thirty eight was the payment processor. Forty one was the website analytics. Fifty two was the ad platform I was paying to send people to the site in the first place, which is the sort of number that makes you suspicious for reasons that turn out to be correct, but not the reasons you had in mind.

I lost most of a Saturday to deciding which one was lying. None of them were. That is nearly always the answer, and the useful skill is being able to say why in under twenty minutes rather than treating it as a mystery every time.

The same word, meaning different things

Most of the gap lives in vocabulary before it lives anywhere else.

A sale, to your website, happens when somebody lands on the thank you page. To your processor it happens when the card is actually charged. To your bookkeeping it happens when the money clears into the account, which might be two days after either of those. Three correct counts of three different moments, all filed under one word.

A user is worse. Analytics usually means a browser it recognises. Your app means an account. You mean a human being. One person with a laptop and a phone is two of the first, one of the second, one of the third, and no amount of care fixes that.

A session is invented outright. Most tools close one after thirty minutes of inactivity, and several also close it at midnight whether or not the person has gone anywhere. Somebody who reads your pricing page, gets distracted by dinner, comes back and buys has had one visit in their own life and produced two sessions in your report.

None of that is an error. It is three systems measuring three things and reaching for the same handful of words.

Midnight is somewhere else for each tool

The dullest cause is also the most common one.

Your processor reports in the time zone of the account. Your analytics reports in whatever you selected in settings, which for most people is the default nobody looked at. Your ad platform reports in the time zone of the ad account, which may have been created by somebody else in a different country.

Any mismatch there shifts every daily figure by however many hours of real activity sit on the wrong side of a midnight. Over a month it mostly cancels out. Over a single Tuesday it can be a fifth of the count, which is exactly the day you happen to be looking at when something feels off.

Weeks add their own layer, because some tools start on Monday and some on Sunday, and the two windows never sit on top of each other.

Every channel claims the same customer

Attribution is where that fifty two came from.

An ad platform records a sale as its own if the buyer clicked one of its ads inside some window before purchasing. Seven days is a common default. Some platforms also count a view, meaning the person saw the ad, never clicked, and bought anyway later that week. Your analytics tool, meanwhile, usually hands all the credit to the last thing that was not somebody typing your address in directly.

So one buyer who clicked a search ad on Monday and saw a social ad on Wednesday before buying on Friday is a single sale to your processor and a claimed sale to each of two ad platforms.

Add up what every channel says it produced and you will always exceed the number of orders you actually took. No dishonesty is required. Each platform can only see itself.

Optimism versus outcome

Your checkout page fires its event the second somebody presses the button. Nothing has moved yet.

The card can still be declined. The payment can be held for review. The bank can settle two days later and date it accordingly. A tool sitting on the checkout page is counting intentions, and a tool sitting in the path of the money is counting results. The space between the two is roughly your failed payment rate, which for a small shop runs somewhere between two and eight percent without anything being wrong at all.

Refunds only widen it. A refund appears in the processor the moment you issue it and will essentially never appear in analytics, because the thank you page did load and there is no mechanism to unload it. Your analytics revenue therefore drifts permanently high by exactly the amount you have ever handed back.

The sale one tool never saw

Analytics runs as a script inside somebody else’s browser, and plenty of things stop that script. Ad blockers. Browsers that block it by default. A consent banner nobody engages with. Privacy features that wipe the marker analytics uses to recognise a returning visitor, so a customer back after three weeks arrives looking brand new.

Then there are the sales that never touch the site. An invoice you emailed. A bank transfer. Somebody who paid you at a market stall and got typed into the system on Sunday night. Real revenue that analytics has no way of knowing occurred.

Your processor has none of these problems, because a sale cannot happen without it. That one fact decides most of what follows.

When the gap really is a bug

Some gaps are worth an hour. The tracking tag installed in both the page template and the app, so every purchase counts twice. A payment method you added without wiring its event, so an entire method reports zero.

I judge these on shape instead of size. A gap that holds steady week after week is definitions doing their job. A gap that appeared on a Tuesday and stayed is something you shipped on the Tuesday, and that one you go and find.

An afternoon costs more than the gap

Here is the part people push back on.

If the gap is under about five percent and stable, leave it. Do the arithmetic once. A two thousand dollar week with a four percent disagreement is eighty dollars of ambiguity. Now price four hours of the only person in the business who could otherwise be selling, answering customers, or building the product. Whatever you value your own hour at, it clears twenty dollars.

Reconciling loses money on every run. In my case it has never once changed a decision I went on to make. What it does do is feel productive, which is the trap: it is measurable, it finishes, and it lets you avoid whatever on your list is genuinely difficult.

One source of truth per question

People try to nominate a single source of truth for the whole company. Nominate one per question instead.

Money questions go to the processor, always. How much came in, how many orders, what the refund rate is, what a given customer actually paid. It is the only system that watches the money move and no browser setting can hide it.

Behaviour questions go to analytics. Which page loses people, how far into signup they get, what they searched for. It does not need to be complete to be useful, because you are reading direction rather than totals.

Campaign questions get assembled by hand: spend from the ad platform, because only it knows what you paid, revenue from the processor, then divide. The ad platform’s own conversion count is for deciding which of its ads to switch off and nothing else. It is allowed to rank its own inventory. It does not get to tell you whether it made you money.

Then write it down. One page, plain text: what counts as a sale, which tool says so, which time zone, which window. Mine is six lines and a sale is a captured payment in the processor, in Singapore time, net of refunds in the month the refund happened. That last clause took two attempts to get right and is precisely the sort of thing you have forgotten by April if you never wrote it in January.

Set the tolerance in advance too. Mine is five percent. Deciding the threshold afterwards means you will find the same gap alarming on a slow day and perfectly fine on a busy one.

The time I fixed it and broke it

I once moved my purchase event off the thank you page and onto a message coming back from the processor, purely because the nine percent disagreement annoyed me. Cleaner. More accurate. A better setup by any technical measure.

It also broke every comparison to anything before that day. My conversion rate dropped nine percent on the chart and the drop was me. I spent a fortnight staring at a step change I had personally created before the penny landed.

Changing how you measure resets your history. If you do it, write the date on the chart in large letters and keep the old series running alongside the new one for a quarter.

What I still cannot pin down

I do not know my true customer count and I have stopped pretending otherwise. Between people with two email addresses, companies buying twice under slightly different names, and my processor and my email tool keying on different fields, any figure I give is approximately right and no better.

For revenue that is harmless, since money is money whoever sent it. For anything measured per customer it matters, and I quote those numbers with a shrug attached.

I also still open three tabs on a Monday morning and compare them, knowing full well it will tell me nothing. More on the numbers a one person business actually runs on is on the home page.

Get new guides and videos first — join the Telegram channel.