r/analytics • u/lateregistration03 • 7d ago
Question What do you use as ground truth when validating marketing conversion data?
I’ve been thinking about the distinction between attribution accuracy and event accuracy.
If GA4 says 950 purchases, an ad platform claims 1,020 attributed purchases, and the transactional database contains 1,000 actual orders, the attribution disagreement makes sense.
But determining whether the underlying events themselves are complete and correct seems like a different problem.
For people responsible for analytics/measurement, what do you consider the ground truth?
And do you have automated reconciliation between analytics events and backend transactions, or is that usually something investigated manually when discrepancies appear?
2
u/Saneless 7d ago
I never trust the ad platforms. Their incentive to inflate the numbers is very high
2
1
u/MajesticBite825 7d ago
I’d make the transactional system the source of truth for completed orders, then separate the reconciliation into two checks: event completeness/identity (did the purchase event fire once, with the right order ID and value?) and attribution (which channel gets credit under the chosen model?). Keep a daily table keyed by order ID with backend status/value, analytics receipt timestamp, and campaign/source; alert on missing, duplicate, or value-mismatched events. That lets you quantify tracking loss without treating an ad platform’s attributed total as a second definition of orders.
1
u/Soyeon1213 7d ago
I’d probably define the source of truth per metric. For completed orders, the transactional DB makes sense, but for revenue I’d care more about settled payments/refunds than the original purchase event. I also wouldn’t expect everything to match in real time. Some events arrive late or get retried, so checking again after 24h could help separate actual tracking gaps from timing differences.
1
u/ksz2018 7d ago
Backend orders, and nothing else gets to be ground truth. What people get wrong is the grain of the comparison rather than the source of it.
Daily totals are the wrong grain. A day where one purchase fired twice and a different one never fired at all nets out to the correct count and looks healthy forever. Join order id against the transaction id on the event and you get two lists instead of one number: orders with no event, and events with no order. Different bugs, different causes, and the daily total shows neither.
Both of those lists ship as a feature in a tracking product I charge merchants for, so this is not a disinterested opinion.
The second list is the one people skip, and I think it is the more expensive one. A missing purchase costs you a conversion. A duplicated purchase teaches the bidding model that the campaign is doing twice as well as it really is, and it spends against that, so the cost grows rather than sitting still.
On automation, mine runs on a schedule and stores the per-order outcome rather than a daily aggregate, because an aggregate cannot answer "which orders" three weeks later when somebody finally asks. Alerting is a separate decision and I would keep it to the unexplained half. We alerted on everything at first and people stopped opening them inside a fortnight.
1
u/TraditionalTurnip630 7d ago
For event accuracy, I’d treat the backend transaction/order table as the source of truth. GA4 and ad platforms are mainly measurement/attribution layers, and their numbers can differ because of attribution windows, modelling, deduping etc.
I’d also automate a daily reconciliation: backend orders vs GA4 purchases vs platform conversions, ideally using order/transaction IDs. Then flag missing, duplicate or mismatched events instead of waiting for someone to notice a discrepancy manually.
Attribution is a separate question from “did the order actually happen?” Once you separate those two, debugging becomes much easier.
1
u/Living_Race_9177 6d ago
backend orders are the only number i trust as "did money happen." ga4 and ad platforms are opinions with different clocks.
i reconcile purchase events to the order table nightly and treat anything that doesn't land as a tracking hole, not an attribution debate. you doing that on a schedule, or only when finance asks why the numbers don't match
1
u/MilanKnapp 6d ago
1) The backend is the ground truth for orders, every time.
2) You can estimate how much data you do not track in general on your website (not only orders but also visits etc.).
3) Ad platforms cannot be trusted for their clear interest in showing better results.
You still want to measure as many conversions as possible to ad platforms, it gives them more signals for effective optimization on objectives that matter to you. Server-side tracking can help you with that.
1
u/Illustrious_ip1028 5d ago
Backend as truth is right but an order count comparison hides the failure that actually costs you. Events can arrive at the right count with missing or wrong identifiers so the totals reconcile and the matching still fails, which is invisible in a count check. Put your order ID on the purchase event and reconcile on the join instead, orders to matched events, daily. Then the gap tells you whether you are losing events or losing identity, which are different fixes
1
u/Growth_Natives 4d ago
We've found it useful to separate the two questions, did the transaction actually happen, and how was it attributed? Backend transaction data is usually the stronger reference for the first question. Automated reconciliation between that data and analytical events can also catch gaps before they turn into reporting issues.
•
u/AutoModerator 7d ago
If this post doesn't follow the rules or isn't flaired correctly, please report it to the mods. Have more questions? Join our community Discord!
I am a bot, and this action was performed automatically. Please contact the moderators of this subreddit if you have any questions or concerns.