
Make confident, data-driven decisions with actionable ad spend insights.
© 2026 DataCops. All rights reserved.
16 min read
What’s wild is how invisible it all is. We pour thousands into advertising, our dashboards fill with green numbers, conversions, revenue, ROI. It shows up in reports, headlines, and budget approvals. Yet, almost nobody questions the fundamental integrity of that one number: the conversion count. They rarely ask, "Did the tracking script actually fire for this user?" or "Did the server receive the data?"

Orla Gallagher
PPC & Paid Social Expert
Last Updated
December 13, 2025
The Problem: Google Ads reports 200 conversions last month worth $50,000. Your CRM shows 300 actual sales worth $75,000. You are optimizing campaigns based on incomplete data that underreports revenue by 33%.
The Reason: Ad blockers prevent conversion tags from firing for 30-40% of users. Safari ITP expires conversion cookies within 7 days, losing delayed conversions. Conversion tags fire with missing or incorrect data (undefined transaction values, wrong currency). Your CRM and ad platform count conversions differently (CRM counts all sales, Google Ads only counts clicks within attribution window).
The Solution: Test conversion tags using GTM Preview Mode and browser DevTools to verify tags fire with correct data. Compare conversion counts between ad platforms and CRM monthly to identify gaps. Implement server-side Conversion API with logging to track all conversion transmissions and response codes. Use first-party tracking via CNAME to bypass ad blockers and capture conversions for 95%+ of users.
Conversion tracking verification is the process of testing that conversion tags fire correctly, transmit accurate data, and report conversions that match actual business results.
Verification answers three questions:
Do conversion tags fire when they should?
Do tags send correct data (transaction ID, value, currency)?
Do reported conversions match actual sales in CRM?
Why verification matters:
You spend $20,000 on Google Ads monthly.
Google reports 100 conversions ($200 CPA).
You decide to increase budget based on this performance.
But verification reveals: Actual sales are 150 (true CPA is $133).
Google Ads underreports by 33% due to ad blocker losses.
You should increase budget even more aggressively.
Without verification:
You make decisions on incomplete data.
Cut budgets on profitable campaigns that appear expensive.
Miss optimization opportunities from accurate data.
Conversion tracking fails at three points: tag execution, data transmission, and platform recording.
Here are the failure points:
Conversion tags load from third-party domains like googletagmanager.com and facebook.com.
Ad blockers maintain lists of known tracking domains and prevent scripts from these domains from loading.
The failure:
User completes purchase on your website.
Browser attempts to load Google Ads conversion tag from googletagmanager.com.
Ad blocker (uBlock Origin, Brave browser) blocks the request.
Conversion tag never executes.
No conversion data sent to Google Ads.
Sale happens but Google Ads shows zero conversions.
The statistics:
30-40% of desktop users run ad blockers.
15-20% of mobile users run ad blockers.
You lose conversion tracking for 1 in 3 customers.
Conversion tracking relies on cookies to store click IDs (GCLID) and attribute sales to original ad clicks.
Safari's Intelligent Tracking Prevention classifies tracking cookies and limits their lifespan.
ITP cookie restrictions:
Third-party cookies: Blocked entirely.
First-party cookies set via JavaScript: 7-day maximum.
Cookies from cross-site requests: 24-hour maximum.
The delayed conversion problem:
Day 1: Customer clicks ad, GCLID cookie set.
Day 10: Customer returns and purchases.
Day 10: Safari already deleted GCLID cookie (expired Day 8).
Conversion tag fires but has no GCLID to send.
Google Ads cannot attribute conversion to original campaign.
Conversion appears as "Direct" traffic.
Tag fires successfully but sends wrong or missing data values.
Common data errors:
Transaction ID: Sends "undefined" because data layer not loaded when tag fired.
Conversion value: Sends "$0" because variable name mismatch (transactionTotal vs transaction_total).
Currency: Missing currency code, Google assumes USD (wrong for non-US businesses).
Email hash: Email not hashed properly, fails to match for Enhanced Conversions.
Why this happens:
Timing issue: Tag fires before website pushes transaction data to data layer.
Variable name mismatch: Tag looks for "orderValue" but data layer provides "purchaseAmount".
Developer error: Code changed on website but GTM configuration not updated.
The impact:
Google Ads records conversion but with $0 value.
Smart Bidding cannot optimize because conversion has no revenue signal.
ROAS reporting shows 0% return.
Use Google Tag Manager Preview Mode to test if tags fire when expected.
Verification process:
Step 1: Enter GTM Preview Mode
Open Google Tag Manager workspace.
Click "Preview" button (top right).
Enter your website URL.
GTM opens site in new tab with Tag Assistant panel.
Step 2: Complete test conversion
Fill out lead form or complete purchase on test site.
Navigate to thank you / confirmation page.
Step 3: Check Tag Assistant panel
Left sidebar shows all events that fired (Page View, Form Submit, Purchase, etc.).
Click the event that should trigger conversion tag (usually "Purchase" or page view of /thank-you).
Step 4: Verify tag fired
Under "Tags Fired" section, find your conversion tag.
If tag appears here: Tag fired successfully.
If tag in "Tags Not Fired" section: Trigger condition failed.
Step 5: Check trigger conditions
Click the tag name to see details.
Review trigger conditions (green checkmark = passed, red X = failed).
Common failures:
URL condition: Expected /thank-you but actual URL is /thank-you/ (trailing slash)
Variable undefined: Trigger waits for transactionID but variable empty
Event mismatch: Trigger expects "purchase" event but event name is "transaction"
Verifying tag fires is not enough. You must verify tag sends correct data.
Use browser DevTools Network tab:
Step 1: Open DevTools
Right-click on page, select "Inspect".
Click "Network" tab.
Step 2: Filter for conversion requests
In filter box, type: google-analytics.com OR googleadservices.com OR facebook.com
This shows only tracking requests.
Step 3: Complete test conversion
Fill form or complete checkout.
Step 4: Find conversion request
Look for new request in Network tab after conversion.
Google Ads: Request to googleadservices.com/pagead/conversion
Meta: Request to facebook.com/tr
Step 5: Inspect request payload
Click the request.
Click "Payload" or "Request" tab.
Review all parameters sent:
For Google Ads conversions:
gclid: Must be present for attribution
value: Must match your transaction amount
currency: Must match your business currency (USD, EUR, etc.)
transaction_id: Must be unique order ID
For Meta conversions:
fbclid: Must be present for Facebook ads
value: Transaction amount
currency: Currency code
content_ids: Product IDs purchased
Common errors to catch:
Value shows "undefined" or "0": Data layer timing issue.
Currency shows "undefined": Missing currency parameter in tag configuration.
Transaction ID missing: No deduplication possible, risk of duplicate conversions.
GCLID/FBCLID missing: Conversion cannot attribute to campaign.
Standard testing uses clean browser with no extensions. This misses the largest failure scenario.
Test with ad blocker installed:
Step 1: Install ad blocker
Add uBlock Origin extension to Chrome.
Or use Brave browser (built-in ad blocker).
Step 2: Complete test conversion
Navigate to your website with ad blocker active.
Complete purchase or form submission.
Step 3: Check if tag fired
Open browser DevTools > Network tab.
Filter for googletagmanager.com or your tracking domain.
If requests appear: Tag not blocked (good if using first-party tracking).
If zero requests: Tag blocked (expected for third-party tracking).
Step 4: Verify in ad platform
Wait 24 hours.
Check Google Ads conversions report.
If conversion appears: Tracking works despite ad blocker (you're using first-party solution).
If no conversion: Ad blocker successfully prevented tracking (standard setup failure).
Why this test matters:
Your test without ad blocker always passes.
30-40% of real users have ad blockers and silently fail.
You think tracking works but lose data for 1 in 3 customers.
Safari expires tracking cookies faster than other browsers. Test specifically on Safari.
Verification process:
Step 1: Test on Safari browser
Use Safari on Mac or iPhone (not Chrome, which uses Safari engine on iOS).
Step 2: Click test ad and capture GCLID
Click Google Ad (or add ?gclid=TEST123 to URL manually).
Land on your website.
Step 3: Check cookie in Safari
Safari > Preferences > Privacy > Manage Website Data.
Search for your domain.
Find cookie containing GCLID (_gcl_aw for Google Ads).
Step 4: Check cookie expiration
Note the cookie expiration date.
If set via JavaScript from third-party domain: 7 days maximum.
If set via first-party CNAME: Can be 12+ months.
Step 5: Test delayed conversion
Return to site 10 days later.
Complete conversion.
Check if GCLID still in cookie (likely expired on standard setup).
Conversion will not attribute to original ad click if GCLID gone.
Server-side tracking sends conversions from your server to ad platforms via API.
Verification requires checking server logs for successful transmissions.
What to verify:
API request sent:
Your server sent POST request to Google Ads or Meta Conversions API.
Check application logs for outbound API calls.
Correct payload:
Request included:
GCLID or FBCLID (for attribution)
Transaction ID (for deduplication)
Conversion value and currency
Hashed customer email (for Enhanced Conversions)
Proper timestamp
Successful response:
API returned 200 OK status code.
Any other code (400, 401, 500) means conversion rejected.
Check error message for reason (invalid GCLID, missing email hash, etc.).
Deduplication working:
Send same conversion twice (once client-side, once server-side).
Ad platform should record only 1 conversion (not 2).
This proves Event ID deduplication is functioning.
Monthly reconciliation compares conversion counts between ad platforms and CRM to identify gaps.
Reconciliation process:
Step 1: Export conversion data
Google Ads: Export conversions for last 30 days with GCLID and transaction ID.
CRM: Export sales for same period with order ID and source.
Step 2: Count totals
Google Ads: 200 conversions
CRM: 300 sales
Gap: 100 conversions (33% missing)
Step 3: Analyze the gap
Common causes of discrepancy:
Attribution window difference:
Google Ads: 30-day click window
CRM: All sales regardless of click age
Sales from clicks older than 30 days do not appear in Google Ads
Ad blocker data loss:
30-40% of conversions never tracked due to blocked tags
This matches your 33% gap
Cross-device conversions:
Customer clicks ad on mobile, buys on desktop
Cookie does not transfer across devices
Conversion appears as "Direct" in CRM
Step 4: Match individual transactions
Take 10 random order IDs from CRM.
Search Google Ads conversion report for matching transaction IDs.
If 3 out of 10 missing: 30% tracking failure rate.
Identify why those specific conversions failed (check for GCLID in your database).
Client-side verification:
[ ] GTM Preview Mode shows tag fires on conversion page
[ ] Tag fires with correct trigger conditions (no red X indicators)
[ ] Network request payload includes transaction ID, value, currency
[ ] GCLID parameter present in payload for paid traffic conversions
[ ] Test on Safari browser to verify cookie persistence beyond 7 days
[ ] Test with ad blocker to verify tag still fires (if using first-party tracking)
[ ] Consent banner blocks tags when user declines consent
Server-side verification:
[ ] Application logs show Conversion API requests sent to ad platform
[ ] API payload includes GCLID, transaction ID, value, hashed email
[ ] API response shows 200 OK status (not 400/500 errors)
[ ] Event ID included for deduplication
[ ] Test duplicate conversion sends, verify platform records only 1
[ ] Match rate above 40% for Enhanced Conversions (Google Ads diagnostics page)
Monthly reconciliation:
[ ] Compare Google Ads conversion count to CRM sales count
[ ] Gap less than 20% (if gap larger, investigate ad blocker losses)
[ ] Match 10 random CRM order IDs to Google Ads conversion report
[ ] If match rate under 70%, review GCLID capture reliability
[ ] Check for sudden drops in conversion rate (data layer break indicator)
[ ] Verify average conversion value matches CRM average order value
Failure 1: Tag fires but sends value = 0
Cause: Conversion tag fires before data layer loads transaction value.
Fix: Change trigger to fire on custom event after data layer push, not on page view.
Failure 2: Conversions appear in GTM Preview but not in Google Ads
Cause: Ad blocker test, GCLID missing, or wrong conversion ID in tag.
Fix: Check Network tab for actual request sent, verify conversion ID matches Google Ads.
Failure 3: 50% of CRM sales missing from Google Ads
Cause: Ad blockers prevent tracking + Safari ITP expires cookies.
Fix: Implement first-party tracking via CNAME to bypass blockers and extend cookie life.
Failure 4: Enhanced Conversions match rate under 20%
Cause: Email not hashed correctly or GCLID not captured with email.
Fix: Verify SHA-256 hashing, ensure GCLID and email captured together on form submit.
Failure 5: Duplicate conversions (same sale counted twice)
Cause: Both client-side tag and server-side API fire without Event ID deduplication.
Fix: Add unique Event ID to both client and server payloads for deduplication.
{
"@context": "https://schema.org",
"@type": "FAQPage",
"mainEntity": [
{
"@type": "Question",
"name": "What is conversion tracking verification?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Conversion tracking verification is the process of testing that conversion tags fire correctly, send accurate data including transaction IDs and values, and that reported conversions match actual sales in your CRM or point-of-sale system."
}
},
{
"@type": "Question",
"name": "How do I verify Google Ads conversion tracking is working?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Verify Google Ads conversion tracking by testing tags in GTM Preview Mode, checking network request payloads in browser DevTools for GCLID and transaction data, and comparing Google Ads conversion counts to your CRM sales data to identify gaps."
}
},
{
"@type": "Question",
"name": "Why do my Google Ads conversions not match my CRM sales?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Google Ads conversions do not match CRM sales because ad blockers prevent tracking for 30-40% of users, Safari ITP expires conversion cookies within 7 days, attribution windows exclude older conversions, and cross-device purchases lack cookie continuity."
}
},
{
"@type": "Question",
"name": "How do I test conversion tracking with ad blockers?",
"acceptedAnswer": {
"@type": "Answer",
"text": "Test conversion tracking with ad blockers by installing uBlock Origin extension, completing a test conversion, and checking browser DevTools Network tab to see if tracking requests were blocked or allowed. First-party tracking via CNAME bypasses ad blockers."
}
}
]
}
DataCops is a first-party data platform that eliminates common conversion tracking failures through CNAME-based script delivery, server-side Conversion API with comprehensive logging, and automated verification reporting.
How DataCops solves verification challenges:
First-party tracking eliminates ad blocker failures:
Script loads from analytics.yourcompany.com (your subdomain, not third-party tracking domain).
Ad blockers do not block your own domain.
Conversion tracking works for 95%+ of visitors instead of 60-70%.
Verification tests with ad blockers installed show tags still fire successfully.
Extended cookie persistence for delayed conversions:
First-party cookies avoid Safari ITP's 7-day expiration limit.
GCLID persists for 12+ months in first-party cookie.
Conversions that happen weeks or months after ad click still attribute correctly.
Verification on Safari shows cookies survive beyond ITP restrictions.
Server-side logging for payload verification:
Every Conversion API request logged with full payload details.
Logs include: GCLID, transaction ID, value, currency, timestamp, API response code.
Verification reviews logs to confirm 200 OK responses (successful transmission).
Failed requests (400/500 errors) flagged with error messages for troubleshooting.
Automated conversion reconciliation reporting:
Weekly automated reports compare:
DataCops conversion count (client-side captures)
Google Ads conversion count (what platform received)
CRM sales count (ground truth)
Gaps between systems quantified automatically.
Identifies specific failure points (ad blocker loss vs attribution window vs data errors).
Event ID deduplication:
Platform automatically generates unique Event IDs for each conversion.
Same Event ID sent in both client-side tag and server-side API call.
Google Ads and Meta recognize duplicate Event IDs and count conversion only once.
Verification tests confirm duplicate sends result in single counted conversion.
Enhanced Conversions validation:
Automatically hashes customer email using SHA-256 before transmission.
Includes hashed email in Conversion API payload for improved match rates.
Google Ads diagnostics page shows match rate > 70% with proper implementation.
Verification reviews match rate metrics monthly and flags low rates.
Real-time data layer monitoring:
Platform monitors data layer for undefined or null values before tag fires.
Prevents conversion tags from sending incomplete data.
Alerts when transaction value, currency, or transaction ID missing.
Verification catches data errors before they reach ad platforms.
Consent-compliant verification:
TCF-certified Consent Management Platform ensures tags only fire after user consent.
Verification tests confirm tags blocked when consent declined.
Maintains audit trail proving conversions only tracked with valid consent.
GDPR and CCPA compliant verification process.
Implementation timeline:
Week 1: CNAME DNS setup and first-party script deployment
Week 2: Conversion tag migration and data layer validation
Week 3: Server-side Conversion API configuration and logging setup
Week 4: Automated verification reporting and reconciliation dashboards
Total deployment: 4 weeks from start to fully verified tracking infrastructure.
Platform provides ongoing monitoring with alerts for conversion tracking failures, sudden rate changes, or data quality issues.
Supported platforms for verification:
Google Ads (conversion tracking and Enhanced Conversions)
Meta (pixel and Conversions API)
Microsoft Ads
LinkedIn Ads
Custom conversion endpoints via API
Verification reporting features:
Daily conversion count comparison across platforms
Weekly reconciliation against CRM/POS data
Monthly match rate analysis for Enhanced Conversions
Real-time alerts for conversion tracking failures
Server-side API response code monitoring
Data layer error detection and logging
Key Takeaways:
Verify conversion tracking in three phases: client-side tag firing, server-side transmission, and CRM reconciliation
Use GTM Preview Mode to test tags fire with correct trigger conditions
Check browser DevTools Network tab to verify payload includes transaction ID, value, currency, and GCLID
Test on Safari and with ad blockers to catch ITP and blocking failures
Compare monthly conversion counts between ad platforms and CRM to identify 30-40% typical gaps
Server-side Conversion API logs must show 200 OK responses for successful conversions
First-party tracking via CNAME bypasses ad blockers and extends cookie life for accurate verification
Automated verification reporting catches failures before they impact optimization decisions