Is your conversion tracking lying to you?
This is the cheapest performance work available and almost nobody does it, because it is unglamorous and because the dashboard looks fine. The dashboard always looks fine.
The short version
- Take one settled day. Count orders in your back office. Compare to what each ad platform reported. If they do not roughly reconcile, stop optimising and fix this first.
- The usual culprits: the tag firing on every page, a reachable and refreshable thank-you page, missing deduplication, test orders, and the wrong value being sent.
- Some divergence is attribution, not error. Knowing which one you have is the whole skill.
The ten-minute check
Pick a day at least a week ago, so attribution windows have settled. Then:
- Count the real orders for that day in the system that takes the money — Shopify, Stripe, your CRM. This is truth, because it is the only system with no opinion about who deserves credit.
- Note the total revenue for those orders.
- Open each ad platform and pull conversions and conversion value attributed to that day.
- Compare.
You are not looking for an exact match — you will not get one, and expecting one is its own mistake. You are looking for whether the numbers live in the same universe. If your store did 20 orders and Google reports 74 conversions, you have a bug, not an attribution nuance. If the platforms together claim 26, you are probably looking at overlapping credit, which is normal and needs a different fix.
The five ways it usually breaks
- The tag fires on every page. Somebody installed the conversion snippet in the site-wide template. Every page view becomes a conversion. This is the most common serious break and the easiest to spot: your conversion count will be absurd and roughly proportional to traffic.
- The thank-you page is reachable and refreshable. If a customer refreshes the confirmation page, or it can be reached directly by URL, the conversion fires again. Look for a suspiciously round ratio between conversions and orders.
- No deduplication between browser and server. If you send events both from the page and from your server — which is now standard — and they do not share an event ID, every sale is counted twice.
- Test orders and internal traffic. Your own team, your developer, and every test transaction are in the numbers unless somebody excluded them. On a low-volume account this is not a rounding error.
- The value is wrong. Sending revenue including tax and shipping when your margin maths assumes neither, sending the wrong currency, or sending a static value for a variable-price catalog. The conversion count looks right and every value-based bidding decision is made on a false number.
Attribution is not the same as an error
Once the bugs are out, the numbers still will not agree, and this is where people either shrug or start a war between channels. The differences that remain are usually structural:
- Different windows. A 7-day click window sees sales a 1-day window does not. Neither is wrong; they answer different questions.
- Different models. Last-click gives everything to the final touch. Data-driven models spread it. Your analytics tool and your ad platform will disagree by design.
- Overlapping claims. Two platforms both touched the same buyer and both counted the sale. Adding them together produces a number your accountant cannot find.
- Modelled conversions. Where consent or cookie restrictions block observation, platforms estimate. Those estimates are labelled and they are not observations.
The practical rule: use platform numbers to compare campaigns within that platform, and your own order data to decide what the whole channel is worth.
Server-side tracking is not automatically the answer
Sending events from your server rather than the browser genuinely helps with ad blockers and browser restrictions, and it is worth doing. It is not a fix for measurement being wrong.
A server-side setup with no deduplication makes double-counting worse, not better. A server-side setup sending the wrong value sends the wrong value more reliably. Get the events correct first, then move where they are sent from.
What good looks like
- One conversion per order, verified against the back office on a settled day.
- Revenue sent as the amount you actually keep the arithmetic on — consistently, whichever definition you chose.
- Deduplication IDs shared between browser and server events.
- Internal and test traffic excluded, in writing, so the next person knows.
- A written note of which window and model each platform is using, so a future comparison is not made against an assumption.
- The reconciliation repeated monthly, because tracking breaks silently every time somebody edits the site.
Expect the numbers to get worse
When tracking is fixed, reported conversions usually fall. That is the point, and it is worth telling whoever reads the report before it happens rather than after.
An inflated conversion count is not a harmless vanity metric. It sets bids, it sets budgets, and it makes losing campaigns look like winners for as long as nobody checks the bank account. Accounts go quietly broke this way with a green dashboard the whole time.
Common questions
My platform reports more conversions than I have orders. Is that always a bug?
How often should I check?
Is GA4 or the ad platform right?
If you would rather not do this yourself
The listings this guide is about. Every one prints its price and names the company that sells it, and the status is what it says it is.
-
Tracking that records what actually happened, installed and verified end to end.
LiveFrom $890 one-offROAS Performance, LLC
-
Your own event tracking, so the numbers are not only the platform's word.
Private betaFrom $1,900 one-offROAS Performance, LLC
-
A written read of what your account is wasting and what to fix first.
LiveFrom $690 one-offROAS Performance, LLC
Nothing above is a promise of a result. Read the disclaimer for what this site refuses to claim.
Keep reading
Landing page or homepage?
A homepage answers who you are. An ad has already answered that, and the click deserves the next question instead. The exceptions are real, though, and worth knowing before you build anything.
Paid media · 8 minHow much should you spend on Google Ads?
There is no universal starting budget. There is a floor set by your cost per sale and the number of conversions it takes to learn anything — here is the arithmetic for both.
Paid media · 7 minWhat is a good ROAS?
A good ROAS is not 3x or 4x or whatever the last article said. It is whatever clears the break-even your own gross margin produces — here is how to calculate it and why the platform's number is not the one that matters.