Get your How we measure accuracy tracking to 95%+ accuracy guaranteed in writing.
We put a 95%+ accuracy figure on our work, so we owe you the arithmetic. This page defines the ratio, the measurement window, what counts as a matched conversion, what gets excluded before counting, and where the guarantee stops. Read the limits — that's the part most vendors leave off.
Free30 minutesNo obligation
How we measure accuracy · what breaks
What goes wrong without a defined ratio — How we measure accuracy
- 01
"Accuracy" usually names neither number
Most accuracy claims never say what was divided by what. With no stated numerator and denominator, any figure at all can be produced and none of it can be checked by you afterward.
- 02
Measuring one platform against another platform
Holding Meta's purchase count next to GA4's compares two attribution models. Neither is a record of money received, so the comparison can't settle whether tracking is working.
- 03
Counting across two different clocks
Platforms date a conversion to the ad click; your backend dates it to the order. Compare on mismatched timestamps and a perfectly healthy setup looks broken at both edges of the window.
- 04
Over-counting gets read as a win
A deduplication failure pushes the platform's number above the backend's, and a team asking "did we recover conversions" will celebrate it. It's the same defect as under-counting, pointed the other way.
How we measure accuracy · the fix
What a defined ratio changes — How we measure accuracy
You can check the work without asking us
The formula, the window and the exclusions are fixed in writing. Export your own orders any month, run the same division, and see whether the number still holds.
Disputes become arithmetic instead of opinion
When a figure looks wrong, we go to the rows that failed to match and the reason code on each, rather than trading impressions about whether tracking feels better than it did.
Bidding gets a stable signal, not a one-time jump
Holding the ratio near parity month after month matters more to Smart Bidding and Advantage+ than any single reporting change, because the algorithms learn from consistency.
Refunds and test orders stop distorting the read
Pulling them out before counting means the ratio measures data delivery — not your return rate, and not how many test checkouts your QA team ran last week.
How we measure accuracy · architecture
How the ratio is built: window, key, exclusions — How we measure accuracy
Accuracy here is one division — conversions the platform received, over real conversions in your source of truth. Everything else is the set of rules that makes both sides countable.
- 1
Denominator: real conversions, from one system
Orders in the store backend, charges in the payment processor, or closed-won deals in the CRM — whichever we named as the source of truth, never a blend of them.
- 2
Numerator: events the platform received
That platform's own count of conversion events it accepted for the window, calculated per platform, excluding modeled or estimated conversions.
- 3
Window: dated by the backend, settled 14 days
Both exports use the backend order timestamp and identical date boundaries, pulled only once the period has been closed 14 days, because platforms keep writing into it.
- 4
Match key: transaction ID, value and currency
A row matches when the same order or transaction ID appears on both sides with identical currency and a value equal within rounding — never on volume or on timing proximity.
- 5
Exclusions: itemized, never summarized
Test and staff orders, cancellations and refunds inside the window, zero-value orders and internal IP traffic come out first, listed by order number so you can put them back.
How we measure accuracy · diagnose
Compute your own accuracy ratio, step by step
This needs a spreadsheet and about an hour, and it will tell you whether you have a problem worth paying anyone to fix.
- 01
Pick a month that closed at least 14 days ago
Anything more recent is still being written into by the platforms, and a perfectly healthy setup will look broken at the edges. Note the exact start and end dates — both exports must use them.
- 02
Export the source of truth, dated by order time
Shopify order export, Stripe charge list or CRM closed-won report for that window, with order ID, value and currency on every row. This is your denominator's raw material.
- 03
Strip the exclusions, and keep the removed rows
Take out test and staff orders, anything canceled or refunded inside the window, zero-value orders and known internal traffic. Keep them in a second tab so you can see how much they moved the result.
- 04
Export the platform's conversions with the order ID
In Meta, Google Ads or GA4, pull that same window's conversions with the transaction or order identifier attached. If your setup never sent that ID, you've found something bigger than the ratio.
- 05
Join on the ID and divide, one platform at a time
Matched platform events divided by remaining backend rows is that platform's ratio. Don't blend platforms into a single number — a blend hides whichever one is actually broken.
- 06
Run the join in reverse to catch over-counting
Platform events with no matching backend order mean duplicate fires, a rebill counted as a new purchase, or modeled conversions sitting in your export. Anything above 100% is a failure, not a bonus.
How we measure accuracy · prove
What we check before certifying a 95%+ result — How we measure accuracy
A ratio clearing 95% isn't enough on its own — it has to be clean in both directions and reproducible by you without us. The figure also has a stated scope: it covers conversion data arriving and matching your backend, not attribution credit, not ROAS, not platform-side modeling, not visitors whose consent denial we honor, and not changes another vendor or a theme update makes after handoff.
Source of truth
Shopify or WooCommerce orders · Stripe charges · CRM closed-won
- Both exports cover identical date boundaries, dated by backend order time, on a window that has been closed for at least 14 days.
- The reverse join is near zero: platform events with no backend order are a dedup failure, and above 100% blocks sign-off.
- Every unmatched order carries a reason code: consent denied, event never fired, payload rejected, outside window, excluded.
- The exclusion list is itemized by order number, and the ratio is recomputed with them added back so you see their weight.
- The ratio is calculated per platform, because a blended figure can clear 95% while one platform sits well below the floor.
- The scope is written down: what the figure covers, when it gets re-measured, and what we do if a re-measure lands under 95%.
How we measure accuracy · free audit
What we check in the free audit
- Pick a month that closed at least 14 days ago
- Export the source of truth, dated by order time
- Strip the exclusions, and keep the removed rows
- Export the platform's conversions with the order ID
- Join on the ID and divide, one platform at a time
- Run the join in reverse to catch over-counting
Checked against
Shopify or WooCommerce orders · Stripe charges · CRM closed-won
Free30 minutesNo obligation
How we measure accuracy · when not to buy
When measuring this formally isn't worth it
The ratio costs real hours to produce, and there are situations where those hours buy you nothing.
- You already compare monthly orders to platform counts and they land within a few points. You have the measurement — formalizing it changes nothing.
- One platform, one checkout path, modest spend. A rough manual comparison answers the same question the formal ratio does, for free.
- Your conversion has no stable transaction ID on both sides yet. Fix that first, because without a match key the ratio can only be estimated.
- You're mid-migration on the store or the CRM. Measure once the new order pipeline is live, or you'll certify a system you're about to replace.
How we measure accuracy · what we deliver
What the accuracy measurement produces
The ratio, stated per platform
Meta, Google Ads, GA4 and anything else you run each get their own figure. A single blended number hides whichever platform is actually broken.
A matched-order export
Your backend orders for the window joined to the platform's received events by transaction ID, with a match or miss flag on every single row.
A miss-reason breakdown
Every unmatched order labeled with why: consent denied, event never fired, payload rejected, landed outside the window, or excluded by rule. With counts per reason.
The exclusion list, itemized
Test and staff orders, cancellations, refunds inside the window, zero-value orders and internal IPs — listed by order number so you can add them back and re-check.
The over-count check
The same join run in reverse: platform events with no matching backend order. That direction is how duplicate fires and phantom conversions surface.
A written guarantee scope
One page naming what the 95%+ covers, what it excludes, how it gets re-measured, and what we do if a re-measure comes in under the floor.
Written guarantee
95%+ tracking accuracy
Measured against Shopify or WooCommerce orders · Stripe charges · CRM closed-won. Miss it and we keep working at no cost.
FAQ
How we measure accuracy questions, answered
The numerator is the count of conversions the platform reports receiving for the window. The denominator is the count of real conversions in your source of truth for the same window — orders in the store backend, charges in the payment processor, or won deals in the CRM, depending on what we named in step two. Divide the first by the second.
Because platforms keep writing conversions into a period for days after the event, so measuring too early undercounts a working setup. We count by the backend's order timestamp, then wait until the window has been closed for 14 days before pulling either export. Both sides get the same date boundaries — that part matters more than the specific length.
The same transaction or order ID present on both sides, with the currency identical and the value equal within rounding. We don't match on volume or on timing proximity, because two events happening to land in the same hour proves nothing. If the ID isn't there, it's a miss and it gets a reason code.
It could, which is why the exclusions are itemized by order number rather than summarized. We exclude test and staff orders, orders canceled or refunded inside the window, zero-value orders, and traffic from internal IPs. You can add any of them back and recompute. If the exclusions are doing heavy lifting in the result, that will be visible.
Because the platform can't legitimately receive more real conversions than your backend recorded. Over-count means a browser and server event failed to deduplicate, a tag double-fired, a rebill got counted as a new purchase, or modeled conversions got mixed into a count of received events. We treat it as an equal-severity defect and fix it before sign-off.
It covers conversion data arriving in the platform and matching your backend. It does not cover attribution credit, ROAS, or where a platform decides to assign a sale. It doesn't cover platform-side modeling, users whose consent choice means we honor a denial and send nothing, platform API outages, or changes another vendor or a theme update makes after handoff. Those are real limits, not fine print.
If you already export orders monthly and compare them to your platform counts, and they land within a few points of each other, you have the measurement and you don't need us to formalize it. Low spend on a single platform is the same story. The ratio earns its keep when several platforms disagree and nobody can say which one to believe.
More on How we measure accuracy
- GuideHow Accurate Is Your Conversion Tracking? Here's How to Actually Measure It
- GuideWhy Every Platform Shows a Different ROAS (And Which Number to Trust)
- GuideThe 20-Minute Conversion Tracking Self-Audit (Checklist)
- Measurement strategyDecide which number answers which question, once
- Measurement StrategyMost tracking rebuilds get quoted before anyone has decided what the conversion …
- Measurement planTracking measurement plan template
Free · 30 min
Run the ratio on your own numbers first
Free30 minutesNo obligation
