The Complete Tracking Verification Checklist
- Home
- / Blog
- / Data Driven Marketing
- / The Complete Tracking Verification Checklist
Table of Contents
- Why Your Tracking Is Probably Broken (Even If It “Works”)
- How to Use This Checklist
- Part 1: Strategic Foundation, Before You Check the Tech
- Part 2: Data Quality, What You’re Actually Collecting
- Part 3: Attribution Integrity, Where the Data Gets Lost
- Part 4: The Big Picture
- What to Do With This Checklist
- The Fastest Way to Fix All of This at Once
For ad agencies and eCommerce brands that don’t want to discover the problem after the budget is already gone
“Meta says we did 80 conversions last week. Shopify shows 40 orders.”
That’s the message a media buyer for a $5M DTC brand sent us last Tuesday. The campaigns hadn’t changed. The traffic hadn’t changed. The only thing that had changed was their ability to see what was actually happening.
By Friday we’d traced the gap to four broken pieces in their stack: a duplicate Meta Pixel triggering alongside their Conversion API, a checkout running on a subdomain with no cross-domain setup, UTMs being stripped by their payment redirect, and a Tracking Tag that wasn’t installed on the product pages. Once those were fixed, the numbers reconciled within 4%.
Here’s the thing: that’s not a rare audit result. It’s the median.
Over the years, AnyTrack has worked with hundreds of agencies and eCommerce operators. The pattern is consistent. Most teams have tracking that works, in the sense that pixels show “active” in their respective dashboards. But the data flowing through that tracking is wrong, duplicated, or missing entirely. And every budget decision made on top of it is a guess dressed up as a number.
This is the audit checklist we run. Eighteen items. For each one: what to look for, why it matters, and how to fix it. Print it out. Mark each one ✅ or ❌. By the end, you’ll know where your money is actually leaking.
Why Your Tracking Is Probably Broken (Even If It “Works”)
There’s a big difference between tracking that works and tracking that gives you an accurate picture.
A Tracking Tag that’s installed doesn’t mean conversions are being recorded correctly. A conversion that’s recorded doesn’t mean it’s attributed to the right ad. Data that reaches your platform doesn’t mean it’s accurate.
Most businesses only spot the problem when their campaign manager asks the question we just opened with: “Why is Meta reporting 80 conversions but Shopify shows 40 orders?”
The answer is in the gaps you’re about to check.
How to Use This Checklist
The eighteen items are grouped into four sections:
| Part | Focus | Items |
|---|---|---|
| 1. Strategic Foundation | Ownership, stack, naming, funnel goals | 1–4 |
| 2. Data Quality | What you’re collecting and what reaches the platforms | 5–9 |
| 3. Attribution Integrity | Where the data gets lost between click and conversion | 10–15 |
| 4. The Big Picture | CRM, client comms, single source of truth | 16–18 |
If you mark 3+ ❌, your budget decisions are running on broken data right now. 6+ ❌, you’re likely wasting 20–30% of your ad spend on channels that aren’t delivering but look like they are. All ✅ puts you in the 10% of businesses whose data can actually be trusted.
Part 1: Strategic Foundation, Before You Check the Tech
These questions aren’t technical. But getting them wrong makes everything else harder.
1. Who Owns Tracking in Your Organization?
What to check. Is there one person, or one team, responsible for tracking implementation, QA, and ongoing maintenance? Or is it split between the developer who set it up once two years ago, the media buyer who adds tags on the fly, and the agency account manager who assumes someone else is handling it?
Why it matters. Tracking without a single owner gets stale fast. Platforms update their pixels. Shopify ships a new checkout. GTM tags accumulate with no one auditing them. Agencies we audit typically find 8–15% of conversions misattributed when nobody owns the stack.
How to fix it. Assign one person (internal or agency-side) who owns the tracking stack. They run the QA after every platform update, every new campaign launch, and every site change. They’re the one who gets called when the numbers don’t add up.
2. How Is Your Tracking Stack Built?
What to check. Map out exactly where your tracking lives. Is everything in Google Tag Manager? Or is some of it in GTM, some baked into plugins (Shopify apps, WordPress plugins), and some hardcoded directly in the theme?
Why it matters. A fragmented stack is the number one cause of duplicate events, misfiring tags, and tracking that breaks silently after a site update. You’ve seen this. The developer added a Meta Pixel directly to the <head> two years ago. The agency set up the same pixel in GTM last quarter. Now both are sending events. Nobody’s looking at both.
How to fix it. Consolidate everything through a single tag management layer, ideally GTM, or through a single tracking tool like AnyTrack that handles the platform fan-out for you. Audit every plugin and theme file for hardcoded pixels. Document what triggers where, and make that documentation required reading before anyone touches the site.
3. Do You Have a Company UTM Policy?
What to check. Are you using standard UTM parameters or custom ones? More importantly, is there a consistent naming convention that every team member, every freelancer, and every client follows?
Open your GA4 Source/Medium report. If you see Facebook, facebook, fb, FB, paid-social, and meta all showing up as separate sources, you don’t have a policy.
Why it matters. Without UTM consistency, your attribution data is fragmented across dozens of naming variations. You can’t accurately compare channel performance. You can’t build reliable audiences from UTM values. You can’t automate reporting.
How to fix it. Create a UTM taxonomy document. Define which parameters you use, the exact values for each channel and campaign type, who is responsible for generating UTMs (one tool, one person), and the QA process before any link goes live. Use utm_id for the campaign identifier so the value matches what your ad platform passes through dynamically.
4. What Are Your Goals by Funnel Stage, and Does Your Tracking Reflect Them?
What to check. Do you have clearly defined KPIs for awareness (top of funnel), consideration (middle), and purchase (bottom)? And are the events you’re tracking mapped to each stage?
- Awareness: video views, content engagement, landing page sessions
- Consideration: lead form submissions, email signups, quiz completions
- Purchase:
Purchase, subscription activations, upsells
Why it matters. Most tracking setups are purchase-only. Everything is set up to measure the order. But if you’re running awareness campaigns and only optimizing for purchase conversions, you’re either burning budget on an impossible signal, or you’re attributing assisted conversions incorrectly.
How to fix it. Define your conversion hierarchy before you build anything. Awareness campaigns should optimize for awareness events. Consideration retargeting should optimize for consideration completions. Purchase campaigns optimize for purchase. Track them all, but feed each campaign type the right signal.
Part 2: Data Quality, What You’re Actually Collecting
5. Are You Over-Tracking or Under-Tracking?
What to check. Look at the events triggering in your GTM Preview or in Meta and Google’s helpers. Count how many unique events trigger on a standard page load and on a standard purchase.
- Under-tracking: missing key funnel events. No
AddToCart, noInitiateCheckout, noLeadevent before the purchase. You’re optimizing in the dark. - Over-tracking: every click, every scroll, every hover triggers an event. You’re feeding the algorithm noise and inflating your “conversion” numbers.
Why it matters. Over-tracking is just as damaging as under-tracking. If you’re sending 40 events per session to Meta and calling all of them conversions, Smart Bidding will optimize toward traffic that generates lots of events, not actual buyers. A campaign that looks like 4x ROAS on inflated event data often comes back to 2x once duplicates are pulled out.
How to fix it. Define a clear event taxonomy. Choose the 5–8 events that actually matter across the funnel (typically ViewContent, AddToCart, InitiateCheckout, Purchase, Lead, plus a couple of custom events). See AnyTrack’s Standard Events reference for the full list. Send those, and only those, as conversions to your ad platforms. Everything else can go to GA4 for analysis, but don’t signal it as a conversion.
6. Are You Collecting All Relevant Data at the Right Moment?
What to check. For each conversion event, verify that all the fields you’ll need later are being captured at the time of the event, not inferred or reconstructed afterward.
On a Purchase event, are you capturing:
transactionId(for deduplication)value(net, not gross)itemsarray withid,name,quantity,price- Customer data (
email,phone,firstName,lastName, hashed for matching) - The original click ID and UTMs
On a Lead event, are you capturing:
- Form source (which form on which page)
- UTM data
- Any pre-qualification data (plan interest, company size, source detail)
Why it matters. You can’t go back and add data to historical events. If you capture a conversion but don’t attach transactionId, you can’t deduplicate. If you capture a lead but not the UTM, you can’t attribute it. The event is only as useful as the Event Attributes attached to it. Richer Event Attributes also raise your Event Match Quality on Meta, which directly affects how well the algorithm can optimize.
How to fix it. Map out every conversion event and every Event Attribute it should carry. Test before launch. Spot-check weekly after launch.
7. Is Your Tracking Tag Installed on Every Page?
What to check. Open a few random pages on your site (product page, category page, thank-you page, even a 404 error page) and check in your browser’s developer tools (F12 → Network) whether the tag triggers on each one.
Why it matters. A Tracking Tag installed only on your homepage and checkout misses 80% of the user journey. You have no funnel data, no ability to build quality audiences, and no retargeting based on real intent.
How to fix it. Use GTM with an All Pages trigger, or install the AnyTrack Tracking Tag once and let AutoTrack handle event capture across the site. If you’re on Shopify, make sure the tag also runs on checkout (a separate setup, especially on Shopify Plus).
8. Are Your eCommerce Events Accurate?
What to check. Run a test purchase and verify that the following events trigger correctly:
ViewContenton the product page with item level attributes such as variant id, price, name and currency.AddToCartwhen you add a product to the cart – not just when interacting with the cartInitiateCheckoutwhen entering checkout, including the cart objectPurchasewith the exactvalue, correctcurrency, and thetransactionIdand item level object
Why it matters. If your Purchase event reports the wrong value (price including VAT, or without subtracting a coupon), every ROAS number you have is distorted. You’re making budget decisions on false data.
How to fix it. Inspect the dataLayer payload in GTM. If you’re on Shopify, AnyTrack handles this end to end: the Tracking Tag captures the order, the Conversion API sends a clean, deduplicated Purchase to every connected ad platform with the correct net value, no per-platform configuration needed.
9. Is the Revenue You’re Reporting to Ad Platforms Accurate?
What to check. Compare the revenue figures in Google Ads and Meta Ads against what your store backend actually shows. Verify:
- Does the
valueinclude VAT? - Is shipping included?
- Are cancelled orders subtracted?
- Are refunds accounted for?
Why it matters. ROAS calculated on gross revenue that includes VAT and shipping is inflated. The real marketing margin is often 15–25% lower than what the dashboard shows. On a $1M/month budget, that gap is $150K–$250K of decisions made on a bad number.
How to fix it. Always pass net revenue (excluding VAT, shipping, and discounts) in the value Event Attribute. AnyTrack lets you control exactly what’s sent to each platform, so Meta, Google, and TikTok all see the same net revenue figure your finance team would recognize.
Part 3: Attribution Integrity, Where the Data Gets Lost
10. Are UTMs Captured on Landing and Stored for the Session?
What to check. Click one of your ads. On the landing page, confirm three things:
- The URL contains your UTMs (
utm_source,utm_medium,utm_campaign, ideallyutm_id). - A first-party cookie is set with those UTM values on landing (check your browser’s Application tab).
- Run a test conversion. Confirm the conversion event in your tracking tool carries the original UTMs from step 1, even if the conversion happens on a different page or domain hours later.
What you do not want to see: UTMs being appended to internal links as the user navigates. That’s a common misconfiguration, and it actively breaks attribution.
Why it matters. UTMs are session inputs, not navigation parameters. They should be captured once, on the landing page, and stored. If you propagate them through internal links, every internal click looks like a new session from the original source, every refresh re-fires attribution, and the moment the user lands on a page from a different UTM (an email click mid-session, for example), the original ad source gets overwritten. You end up with inflated session counts and corrupted attribution.
How to fix it. Capture UTMs on landing, store them in a first-party cookie tied to the session, and reference that stored value at conversion time. Do not pass UTMs through internal links. AnyTrack handles this by default: the Tracking Tag reads UTMs on the first page load, stores them in a first-party cookie, and attaches them to the conversion event server-side via Conversion API when the order completes. The attribution survives the domain hop, the redirect through a payment provider, and the eventual cookie expiry. (Full mechanics: AnyTrack’s attribution model. Worth pairing with Ignored Sources so platforms like PayPal or Mailchimp don’t overwrite the original UTMs mid-funnel.)
11. Are Click IDs (gclid, fbclid, ttclid, msclkid) Being Captured and Passed?
What to check. Click a Google ad, then check the URL contains gclid=. Same with Meta (fbclid), TikTok (ttclid), Microsoft (msclkid). Then complete a test conversion and verify each click ID comes back attached to the conversion event.
Why it matters. Google, Meta, TikTok, and Microsoft Ads all use click IDs to know exactly which ad click led to a conversion. Without them, Smart Bidding works with incomplete data, and your audience signals degrade over time.
How to fix it. Two sides to this:
- On the ad-platform side: enable Google Ads auto-tagging so
gclidlands on every paid click. Make sure your Meta links keepfbclidintact through any redirects (some redirect plugins strip it). - On the site side: AnyTrack’s Tracking Tag captures
gclid,fbclid,ttclid, andmsclkidautomatically when a visitor lands. From there, AutoTag appends the AnyTrack click ID (atclid) to every outbound link and form, AutoScan keeps the trackable element list current as the page changes, and AutoTrack records form submissions and outbound clicks. Theatclidis what carries attribution across the domain hop to your checkout. Conversions then flow back to each ad platform via Conversion API with the original click ID still attached.
12. Are You Still Using Thank-You Page Tracking?
What to check. Is your conversion tag triggering on the thank-you / order confirmation page? If yes, this is the most common root cause of bad tracking data, and it’s worth understanding why.
Why it matters. Thank-you page tracking was the standard 20 years ago. Today it causes more problems than it solves:
- Duplicate conversions. Users bookmark the page, share the URL, or hit back-and-refresh. Every visit triggers a new “purchase.”
- UTM loss. By the time a user reaches the thank-you page, after a payment gateway redirect and possibly across domains, the UTMs are gone. The conversion lands as Direct.
- Cross-domain breaks. Payment providers (Stripe, PayPal, and local equivalents) break the session. The thank-you page has no idea where the customer came from.
- No
transactionIddeduplication. Without server-side confirmation, you have no reliable way to tie the page event to a specific order.
How to fix it. Move away from page-load conversion tracking. Use server-side conversion events triggered by the actual order confirmation in your backend, not by a page load. AnyTrack’s server side tracking gets data from the backend of your shop, CRM or affiliate network and processes the data on its server before sending it to Meta CAPI regardless of what happens to the browser session.
13. Are There Duplicate Conversions in Meta? Here’s How to Check.
What to check. Go to Meta Events Manager → Your Pixel. Look for:
- Event Deduplication tab. Meta will flag if it’s receiving the same event from multiple sources (Pixel + Conversion API) without a matching
event_id. Any events should show an overlap of 100%, otherwise you are 100% sure to see overreporting in Meta. - Event Match Quality (EMQ) score. Should be above 6/10. A low score means Meta can’t match events to real people, reducing audience quality and attribution accuracy.
- Event count vs. actual order count. In the event overview, compare the number of
Purchaseevents in the last 7 days against your actual orders. - Duplicate pixel instances. In the Pixel settings, check how many domains the pixel is associated with. Multiple domains can indicate duplicate implementations.
Why it matters. Duplicate conversions inflate ROAS artificially. A campaign that appears to hit 4x ROAS may actually be at 2x once duplicates are removed. Worse, Meta’s algorithm will optimize for the inflated signal, wasting budget chasing duplicate-prone users.
How to fix it. Always pass a unique event_id with every conversion, identical between the browser Pixel event and the Conversion API server event. Meta uses this to collapse duplicates. AnyTrack handles deduplication automatically. It also sends rich Event Attributes (hashed email, phone, firstName, lastName, plus product and transaction data) on every conversion, which is what raises EMQ above 6 and keeps Meta’s algorithm matching events to real people.
14. Are You Tracking Across Domains?
What to check. Most performance funnels cross at least one domain boundary. Look at yours:
- Pre-lander (advertorial, VSL, bridge page) on Domain A, Shopify or WooCommerce checkout on Domain B
- Lead form on your marketing site, payment on a Stripe or ThriveCart subdomain
- Quiz on one domain, scheduling tool on another
Why it matters. Every one of those hops is where attribution dies in a default setup. The browser drops the UTMs. The click ID is gone. The conversion lands as Direct, and the ad platform never gets the signal it needs to optimize.
This is especially brutal for affiliate marketers and direct-response operators running advertorials and VSLs: 100% of their traffic crosses a domain boundary on the way to checkout, by design.
How to fix it. GA4 has a Cross-Domain Tracking setting in your Data Stream config (you’ll also need the GTM linker to pass parameters in the query string). For richer attribution, AnyTrack maintains the chain across the hop: the Tracking Tag and AutoTag pass the atclid from Domain A to Domain B, and the Conversion API sends the conversion back to the ad platform with the original gclid, fbclid, ttclid, or msclkid still attached. Same flow works for affiliate funnels: AnyTrack connects to 77+ affiliate networks and reconciles the postback against the original click. (Step-by-step: Cross-Domain Tracking Setup Guide.)
15. Are Attribution Windows Consistent Across Platforms?
What to check. Each platform’s defaults:
- Meta Ads: 7-day click, 1-day post-view
- Google Ads: 30-day conversion window
- GA4: data-driven attribution
- AnyTrack: configurable (1, 7, 30 days, or unlimited), last-click only
Why it matters. If Meta reports 100 conversions on a 7-day click window, and Google reports 80 on a 30-day window, you’re comparing apples to oranges. Both platforms will always appear to be “winning.” You can never make a clean budget allocation decision.
How to fix it. Set a consistent reporting policy. For eCommerce, 7-day click / 1-day view is typically the most practical baseline. Document the window in every report you produce. Make your single source of truth (see #18) use one consistent window so the platform-specific dashboards become inputs, not the verdict. AnyTrack’s Conversion Attribution Matrix shows side-by-side how Meta Ads Manager, GA4, and AnyTrack each count the same conversion.
Part 4: The Big Picture
16. Is Conversion Data Reaching Your CRM and Email Tool?
What to check. Run a test purchase and verify:
- Is the contact added to your CRM (HubSpot, your email tool, your data warehouse) automatically?
- Did the original UTM and click ID pass through to the contact record?
- Is LTV being updated as the customer’s behavior evolves?
Why it matters. Without this data, your segmentation is blind. You’re sending the same campaign to people who came from Google brand search and people who arrived from cold Meta prospecting, even though they’re at completely different stages.
How to fix it. AnyTrack sends every processed conversion to outbound Webhooks, and to Zapier, Make.com, or any HTTPS endpoint, so your CRM record carries utm_source, utm_campaign, utm_id, and the atclid from day one. Your email and CRM tools can then segment and personalize based on the actual acquisition source, not a guess.
17. Are Attribution Windows Aligned with Your Client’s Goals?
What to check. If you’re an agency, have you explicitly discussed attribution windows and reporting methodology with your client? Do they understand that Meta’s 7-day click window and Google’s 30-day window mean the numbers in each platform’s dashboard aren’t directly comparable?
Why it matters. This is where client relationships get damaged. You report a great month. The client compares it to their Shopify revenue and sees a 40% discrepancy. Trust erodes, even when the campaigns are actually performing.
How to fix it. Set expectations during onboarding. Share a one-pager that explains what each platform measures, what window you use for reporting, and what your single source of truth is. Get the client to sign off on the methodology before the first campaign goes live. (#15 is the technical setup; #17 is the conversation.)
18. Do You Have a Single Source of Truth?
What to check. Where do you actually look when evaluating campaign performance? If the answer is “a bit in Meta, a bit in Google, a bit in GA4,” you don’t have a single source of truth.
Why it matters. Every platform claims credit. Meta says 80 conversions. Google says 70. Shopify shows 60 actual orders. That’s 90 conversions of overcounting between just two platforms, on a base of 60 real orders. If you rely on each platform’s own numbers, both will always look like they’re “working,” and you’ll never know where to scale and where to cut.
How to fix it. Use an external attribution layer that sees all the data in one place: clicks, events, revenue, by source. AnyTrack’s Campaign Report combines ad-platform metrics (Amount Spent, Impressions, Link Clicks) with AnyTrack-tracked conversions and revenue, all reconciled on last-click attribution. One number per campaign. One scoreboard.
What to Do With This Checklist
If you marked ❌ on 3 or more items, your tracking is broken in ways that are actively shaping your budget decisions right now.
If you marked ❌ on 6 or more, you’re likely spending 20–30% of your budget on channels and ads that aren’t delivering, but look like they are. Most of the agencies we audit fall in this bucket on first pass.
If you marked ✅ on everything, you’re in the 10% of businesses whose data can actually be trusted. Send us the writeup, we’ll feature it.
The Fastest Way to Fix All of This at Once
You can work through this list one item at a time. It’s a real audit, and it works. But for agencies running multiple client accounts, and for eCommerce brands doing real volume, there’s a faster path.
AnyTrack connects every piece of this checklist into one tracking layer.
- One Tracking Tag installed on your site, with server-side connections to every major ad platform: Meta, Google, TikTok, Microsoft Ads.
- AutoTag, AutoScan, and AutoTrack capture every click ID (
gclid,fbclid,ttclid,msclkid), propagate the AnyTrackatclidacross links, forms, and the domain hop to your checkout, and record form submissions and outbound clicks automatically. - Conversion API sends deduplicated conversions back to each ad platform with full Event Attributes (customer data, product data, transaction context) so your Event Match Quality stays above 6.
- 77+ affiliate network integrations, plus Shopify, WooCommerce, ClickFunnels, Typeform, and more, all reporting into a single Campaign Report.
- One dashboard showing real revenue by campaign, last-click attribution, no more reconciliation spreadsheets on Monday morning.
Start free. 5,000 sessions a month. No credit card.
Laurent Malka is the Co-Founder of Anytrack. He was born and raised in Switzerland, and now lives and works in Israel. He is a serial entrepreneur with over 15 years of experience in marketing and business development. Laurent has been a panelist and speaker at numerous digital marketing events including SEMrush and IG Affiliates. He prides himself on his ability to connect the dots across disciplines, industries, and technologies to solve unique challenges.