Most audit checklists walk through tags, triggers and duplicates. That is useful. It is also tag housekeeping. We did not find one that ties each check to a simple question: would this fault change what you spend? This piece orders the checks by that test.
If you would rather have someone else run it, see our ecommerce tracking audit service. Our free tracking audit is also an option.
Which tracking errors actually change a spend decision?
A tracking fault matters when it moves a number that moves a budget. A misnamed event in a report nobody reads is untidy. Purchases counted twice in the report that sets next month's spend is expensive.
So rank faults by what they distort:
- Revenue and orders. If reported purchases do not match real orders, every ROAS and CPA built on them is off.
- Duplicates. The same order counted more than once inflates the platform that counts it.
- Consent signals. If consent choices are not passed on, platforms may see less, or the wrong, data.
- Everything else. Naming, UTM hygiene, internal traffic filters, event parameters. Fix these, but later.
That order is our view, not an industry standard. It follows one rule: the closer a fault sits to money, the earlier it gets checked.
Audit the numbers you make decisions on first, not every tag.
How do you reconcile Shopify, GA4 and ad platforms?
Treat shop orders as the reference for revenue. Ad platforms and analytics tools are estimates built around that record. They attribute orders by their own rules, so they will not match the shop exactly. They should not drift far from it without a reason.
The reconciliation, in order:
- Pick one period and one definition of revenue. Say whether it includes tax, shipping, discounts and refunds.
- Pull orders and revenue from the shop for that period.
- Pull purchases and revenue from Google Analytics 4 basics and from each ad platform.
- Compare on the same attribution window. A platform with a longer window will claim more by design.
- Put the three side by side. Write down the gap per source, and whether it is stable or moving.
A stable gap is a property of counting rules. A gap that jumps after a site release, a banner change or a new tag is a fault. Vendor guides on why numbers never match list causes such as differing windows and tracking loss, and they sell fixes for them1. Read them for the causes. For the full diagnosis of one common gap, see Meta ROAS vs Shopify revenue.
Check the basics on the Google side as well. Conversion actions feed bidding, so Google Ads conversion tracking should be built on the same purchase event GA4 counts. Otherwise the two drift for reasons nobody wrote down.
Is deduplication of pixel and server events working?
A tracking pixel sends visitor actions from the browser to an ad platform. The Conversions API (CAPI) sends events from the advertiser's server instead. Meta describes it as a connection between an advertiser's marketing data and Meta's systems for targeting and measurement2. Running both is a normal setup. It also means one purchase can arrive twice.
Event deduplication is the fix. Meta's developer documentation says an event arriving from both sources is counted once when the event name and event ID match and the second copy arrives no more than 48 hours after the first3. If the IDs differ or are missing, this method cannot match the two copies. Meta documents a fallback based on browser and user identifiers, but it works in narrower cases3.
What to check:
- Does every purchase event from the browser carry an event ID?
- Does the server event carry the same ID and the same event name?
- Does the platform's own diagnostics view show the two sources as matched?
Meta's Conversions API overview also tells advertisers to confirm that events are received, deduplicated and matched correctly2. A purchase count in Ads Manager far above shop orders is the symptom to look for. The detailed fix is in Meta pixel and Conversions API deduplication. If you are weighing the server route itself, read is server-side tracking worth it. Server-side tracking means collecting data on a server you control and passing it on, instead of running every tag in the browser.
Are consent signals passed correctly for EEA traffic?
This check is about whether the banner's decisions reach your tags. Consent Mode is a Google mechanism where the consent banner passes the visitor's choices to Google tags, which then change what data they send4. Google's documentation distinguishes basic and advanced implementations. In basic mode, Google tags do not load until the visitor responds to the banner. In advanced mode, they load straight away and send cookieless pings while consent is denied4. For the practical difference, see consent mode basic vs advanced.
For advertisers with EEA traffic, Google's EU user consent policy sets obligations and refers to consent signals for ad user data and ad personalisation5. We are not your lawyer, and this is not legal advice. For the privacy side, see server-side tracking GDPR.
The audit question is mechanical:
- Does the banner pass a consent state to the tags on every page?
- Does the state change when the visitor changes their mind?
- Do purchases from visitors who declined behave as your setup says they should?
A broken consent signal is a high-impact fault because it shrinks what the platforms see without any error message.
What gap between systems is normal, and what isn't?
You will find "normal" gap ranges online. Treat them as rules of thumb. The ones we found come from vendors and have no primary source behind them1. We do not quote a number here, because we cannot stand behind one.
Use three tests instead:
- Is it stable? A steady gap points to counting rules. A moving gap points to a fault.
- Does it move with a release? Gaps that change the day a tag, theme or banner changed are tracking problems.
- Does it differ by event? If purchases match and add-to-carts do not, look at that event.
A gap you can explain is fine. A gap you cannot explain is the work.
What do you fix first, and who owns it?
Fix in the order of the money, and name an owner for each item. An audit without owners tends to end at "someone should look at this".
| Priority | Check | Typical owner |
|---|---|---|
| 1 | Revenue reconciliation: shop vs analytics vs platforms | Head of Growth or analytics lead |
| 2 | Duplicate purchase events | Developer or tag manager owner |
| 3 | Consent signals reaching tags | Developer with the privacy owner |
| 4 | Campaign tagging and naming | Paid media team |
For campaign tagging, UTM parameters tell analytics where a visit came from, and UTM naming conventions decide whether your channel report can be read at all. It is boring work. It is also why some channel reports say "direct" far too often.
Then re-run the reconciliation. An audit with no before and after is a document, not a fix.
How often should you audit ecommerce tracking? We know of no sourced standard interval. Our view: repeat the revenue reconciliation every month, and run the full audit again after any change to tags, theme, checkout or the consent banner.
For ZFD: We run the audit in this order because a fault near the money costs more than a fault in a tag name. We also say plainly that a clean audit does not tell you which sales the ads caused. That is a separate question, covered in incrementality.
Sources
- Why Meta, Google, GA4 and Shopify Never Match (TrueROAS)Vendor
- Conversions API overview (Meta for Developers)Primary source
- Handling Duplicate Pixel and Conversions API Events (Meta for Developers)Primary source
- About consent mode (Tag Manager Help)Primary source
- EU user consent policy (Google Ads Help)Primary source