MatauFree review
Englishen

Insights

Is your ad tracking lying to you? A 15-minute check

Eight checks you can run without a specialist to see whether Google Ads and Meta count your sales correctly, from double counting to consent mode.

Google Ads and Meta each report the sales they believe their ads caused. They also spend your budget based on those numbers: Google bids on your primary conversion actions [1], and Meta's ad delivery system works from the events you send it [2]. If a tag fires twice, a test order counts as revenue or a redirect drops the click ID, you pay for the error twice: once in the report and again in the next auction.

You do not need a specialist to find most of these problems. You need read access to Google Ads, GA4 and Meta Events Manager, an order or lead export from your shop or CRM, and 15 minutes.

1. Compare platform numbers with your own records (4 minutes)

Pick a closed period, such as last month. Write down four numbers: orders or qualified leads in your shop or CRM, purchases in GA4, conversions in Google Ads and purchases in Meta Ads Manager.

Line up the dates first. Google Ads reports a conversion on the date of the click that led to it; Google Analytics reports it on the date it happened [3]. For a fair comparison, add the "Conversions (by conv. time)" column in Google Ads, which counts conversions on the day they occurred [4]. Leave out the last day or two, because conversions imported from GA4 can arrive up to 24 hours late [3].

Then read the gaps:

  • Each platform counts what it attributes to itself, and Meta can also credit people who saw an ad without clicking (its "1-day view" window) [5]. Google and Meta together claiming somewhat more than your real orders is expected.
  • One platform alone claiming more purchases than your shop recorded is a warning sign. Look for double counting first: checks 2 and 5.
  • Platforms reporting far less than your records while your ads clearly drive traffic: look for lost signals in checks 3, 4 and 8.

2. Look for double counting in Google Ads (2 minutes)

In Google Ads, open Goals, then the conversions summary, and list every action that measures a purchase or a lead. Only actions set to "Primary" feed the "Conversions" column and bidding; "Secondary" actions are for observation [1].

Check whether you have both a Google Ads purchase tag and a GA4 purchase event imported into Google Ads. Actions created from Google Analytics start as secondary [3], but if someone has switched both to primary, each sale is counted twice and your bids are trained on the inflated number. Keep one primary action per purchase.

Also check that your purchase tag sends a transaction ID. Google Ads drops a second conversion with the same transaction ID in the same conversion action, but only if the IDs match exactly; a prefix or an extra space breaks the match [6].

Google's EU user consent policy covers users in the EEA, the UK and Switzerland [7]. Consent Mode passes each visitor's banner choice to Google's tags; the two signals that matter for advertising are ad_user_data and ad_personalization [8]. What you lose without them:

  • Audiences. If you take no action, GA4 audiences used in linked Google advertising products include only users outside the EEA, a change in force since early March 2024. Remarketing and personalised ads require affirmative consent signals [9].
  • Conversions. If your tags simply wait for the banner and send no consent signals, Google says it cannot verify consent choices and you may lose data [10]. In "basic" consent mode, tags stay blocked for visitors who decline, so nothing is sent for them and Google can only apply a general model. In "advanced" mode, tags send cookieless pings, which give Google an advertiser-specific model of the missing conversions [8].

Modelling has a floor. Among other conditions, consent mode conversion modelling needs 700 ad clicks over seven days per country and domain grouping [11]. Below that, a declined banner is simply a missing sale.

To check, open the diagnostics for your main conversion action in Google Ads, which show consent mode status [10].

4. Check Enhanced Conversions (1 minute)

Enhanced Conversions add customer data from the order, such as the email address or phone number, to your conversion tag. The data is hashed with SHA256 before it is sent [12]. There are versions for website sales and for leads that close offline; Google presents both as a way to make conversion measurement more accurate [12]. Check that the setting is on for your main conversion actions.

5. Check Meta's deduplication (2 minutes)

Meta recommends sending events from both the browser pixel and the Conversions API [2]. That only works if Meta can tell the two copies are one event. Both must carry the same event name and the same event ID, and Meta only merges them if they arrive within 48 hours of the first one [2]. In Events Manager, compare purchases with your shop's orders for the same days. If Meta shows close to double, deduplication is failing.

While you are there, look at Event Match Quality, a score out of 10 for how well the customer information on your server events can be matched [13].

6. Send value and currency (1 minute)

Meta's Purchase event requires a value and a currency [14]. Google Ads expects the currency as an ISO 4217 code, such as EUR or GBP [15]. Open one recent conversion in each platform and check that the value matches the order total you want to optimise for, with or without VAT and shipping, defined the same way everywhere. If you sell in several currencies and send every value as euros, your return on ad spend is wrong.

7. Remove test orders and refunds (2 minutes)

Exclude your own team in GA4 with an internal traffic filter. Run it in testing mode first: once a filter is active, the excluded data is gone for good [16]. Place test orders from the filtered network, or mark them in your shop.

For refunds and cancellations, Google Ads accepts conversion adjustments. You can retract a conversion or restate its value, normally matched by order ID, within 54 days [17]. If refunds are a real share of your sales and nobody uploads adjustments, your reported return is gross, not net. Say so in your report.

8. Make sure tagging survives redirects (1 minute)

Google's own test: open a landing page with ?gclid=TeSter-123 added to the URL and check that the parameter is still there once the page has loaded [18]. If a redirect removes it, the click cannot be matched to the sale [3]. Repeat with one of your UTM-tagged links, and test every redirect your site uses: http to https, www to non-www, country or language redirects, link shorteners. Check spelling too. UTM values are case sensitive, so "Facebook" and "facebook" are two different sources [19].

Re-check after every site change

Tracking can break without anything looking wrong on the page. Re-run checks 1, 5 and 8 after a new theme, checkout app, consent banner, domain or tag container. Google's Tag Assistant tests conversion tags from inside Google Ads [20], and Meta's Test Events tool does the same for the pixel and the Conversions API [13]. Set a monthly reminder and keep a one-line change log, so that when the numbers move you know what changed.

A second pair of eyes

If the numbers do not add up and you want someone to look at them with you, book our free 20-minute account review. We go through these checks on a call and tell you what we see. No pitch, no obligation.

Sources

  1. Google Ads Help, "About primary and secondary conversion actions". https://support.google.com/google-ads/answer/11461796?hl=en
  2. Meta for Developers, "Handling Duplicate Pixel and Conversions API Events". https://developers.facebook.com/docs/marketing-api/conversions-api/deduplicate-pixel-and-server-events
  3. Google Ads Help, "Create conversions from Google Analytics events in Google Ads". https://support.google.com/google-ads/answer/2375435?hl=en
  4. Google Ads Help, "Understand conversions by time with new columns". https://support.google.com/google-ads/answer/9549009?hl=en
  5. Meta for Developers blog, "Ads Insights API metric availability updates", 16 October 2025. https://developers.facebook.com/blog/post/2025/10/16/ads-insights-api-metric-availability-updates/
  6. Google Ads Help, "Use a transaction ID to minimize duplicate conversions". https://support.google.com/google-ads/answer/6386790?hl=en
  7. Google, "EU user consent policy". https://google.com/about/company/user-consent-policy/
  8. Google for Developers, "Consent mode overview". https://developers.google.com/tag-platform/security/concepts/consent-mode
  9. Google Analytics Help, "[GA4] Verify and update consent settings in Google Analytics". https://support.google.com/analytics/answer/14275483?hl=en
  10. Google Ads Help, "Updates to consent mode for traffic in European Economic Area (EEA)". https://support.google.com/google-ads/answer/13695607?hl=en-AU
  11. Google Ads Help, "About consent mode modelling". https://support.google.com/google-ads/answer/10548233?hl=en-GB
  12. Google Ads Help, "About enhanced conversions". https://support.google.com/google-ads/answer/9888656?hl=en
  13. Meta for Developers, "Conversions API: Best practices". https://developers.facebook.com/documentation/ads-commerce/conversions-api/best-practices
  14. Meta for Developers, "Meta Pixel reference". https://developers.facebook.com/docs/meta-pixel/reference
  15. Google Ads Help, "Track transaction-specific conversion values". https://support.google.com/google-ads/answer/6095947?hl=en
  16. Google Analytics Help, "Filter out internal traffic". https://support.google.com/analytics/answer/10104470?hl=en
  17. Google Ads Help, "How to adjust your conversions". https://support.google.com/google-ads/answer/7686280?hl=en
  18. Google Analytics Help, "Check if Google Ads auto-tagging works". https://support.google.com/analytics/answer/2938246?hl=en
  19. Google Analytics Help, "URL builders: Collect campaign data with custom URLs". https://support.google.com/analytics/answer/10917952
  20. Google Ads Help, "Use Tag Assistant to troubleshoot your unverified or inactive conversion actions". https://support.google.com/google-ads/answer/10989978?hl=en