Data Discrepancies Between Platforms
Data discrepancies occur when different analytics or advertising platforms report different numbers for seemingly identical metrics. While some variance is normal and expected, understanding the causes helps you reconcile differences and trust your data.
What This Means
Common discrepancy scenarios:
- GA4 shows 1,000 conversions, Google Ads shows 850 - Attribution window differences
- Meta Ads reports 500 purchases, Shopify shows 475 - Tracking method differences
- Adobe Analytics shows 50K visitors, GA4 shows 48K - User/session definition differences
- CRM has 200 leads, GA4 shows 185 - Deduplication and validation differences
- Last week: 5,000 sessions, this week: 4,950 for same dates - Data processing and retroactive updates
Why This Matters
Business implications:
- Confusion about which numbers to trust
- Difficulty proving ROI to stakeholders
- Challenges optimizing campaigns
- Reporting inconsistencies across teams
Note: Some discrepancy (typically 5-15%) is normal and acceptable. The goal is understanding why numbers differ, not making them match perfectly.
How to Diagnose
1. Compare Apples to Apples
Check if you're comparing equivalent metrics:
| GA4 Term | Google Ads Term | Meta Ads Term | What It Measures |
|---|---|---|---|
| Users | N/A | People | Unique individuals |
| Sessions | Visits | N/A | Groups of interactions |
| Conversions | Conversions | Conversions | Goal completions |
| Purchase | Purchase | Purchase | Transaction events |
Watch out for:
- Sessions (GA4) vs Users (GA4) vs Clicks (Google Ads)
- Conversions (total) vs Conversions (unique)
- Revenue vs Revenue (minus refunds)
2. Verify Date Ranges and Timezones
Timezone mismatches:
GA4: UTC timezone
Google Ads: Account timezone (PST)
Shopify: Store timezone (EST)
Same "day" = different 24-hour periods
Check each platform:
- GA4: Admin → Property Settings → Reporting time zone
- Google Ads: Settings → Account Settings → Time zone
- Meta Ads: Ad Account Settings → Time Zone
- Adobe Analytics: Report Suite Settings → Time Zone
Processing time:
- GA4: 24-48 hours for full processing
- Google Ads: Real-time to 3 hours
- Meta Ads: Up to 24 hours for conversions
- Adobe Analytics: 30-90 minutes
3. Review Attribution Models
Different platforms use different attribution:
| Platform | Default Attribution | Window |
|---|---|---|
| GA4 | Data-driven (or last click) | 90 days |
| Google Ads | Last Google Ads click | 30 days |
| Meta Ads | 7-day click, 1-day view | Customizable |
| Adobe Analytics | Last touch | Customizable |
Attribution model comparison:
User journey: Facebook Ad → Google Search Ad → Direct (purchase)
Meta Ads attributes to: Facebook Ad (7-day click window)
Google Ads attributes to: Google Search Ad (last click)
GA4 attributes to: Data-driven model (distributed credit)
To diagnose:
- Document each platform's attribution settings
- Use same attribution window when possible
- Compare using "last click" model across all platforms
- Understand that differences reflect attribution philosophy
4. Check for Tracking Implementation Differences
Different tracking methods:
GA4 might use:
- gtag.js (client-side)
- Google Tag Manager
- Measurement Protocol (server-side)
- Firebase SDK (mobile)
Ad platforms might use:
- Conversion tracking pixels
- Offline conversion imports
- API conversions
- Mobile SDK
Diagnosis checklist:
- Are all platforms tracking the same events?
- Do they fire on the same page/action?
- Are conversion values calculated the same way?
- Are test transactions excluded consistently?
Test with browser console:
// Check what's firing
window.dataLayer // GTM/GA4
fbq('track', 'PageView') // Meta Pixel
gtag('event', 'conversion') // Google Ads
5. Investigate Filtering and Sampling Differences
Filtering varies by platform:
| Platform | May Filter Out |
|---|---|
| GA4 | Internal traffic (if configured), bot traffic |
| Google Ads | Invalid clicks (automatically) |
| Meta Ads | Invalid activity (automatically) |
| Adobe Analytics | Bot traffic (if configured), IP exclusions |
Sampling:
- GA4: Sampled data in standard reports (high traffic properties)
- Adobe Analytics: Sampled after certain thresholds
- Ad platforms: Generally not sampled
6. Check for Deduplication Differences
Transaction deduplication:
Scenario: User completes purchase, refreshes thank you page
| Platform | Behavior |
|---|---|
| GA4 | May record duplicate if transaction_id not implemented |
| Shopify | Only records one transaction |
| Google Ads | May record duplicate conversion |
Check for transaction_id implementation:
// GA4 with transaction ID (prevents duplicates)
gtag('event', 'purchase', {
transaction_id: 'T12345',
value: 99.99,
currency: 'USD'
});
7. Review Data Collection Periods
Historical data changes:
- GA4 processes data retroactively (24-48 hours)
- Numbers for "yesterday" may change slightly today
- Use "report last updated" timestamp
Cardinality limits:
- GA4: High-cardinality dimensions may show (other)
- Some data aggregated to protect user privacy
General Fixes
1. Standardize Attribution Settings
Choose a consistent attribution model for comparison:
In GA4:
- Admin → Data Display → Attribution Settings
- Choose "Last click" or "Data-driven"
- Set consistent lookback window (30/60/90 days)
In Google Ads:
- Tools → Conversions
- Click conversion action
- Attribution model → Select model
- Lookback window → Match GA4
In Meta Ads:
- Events Manager → Configure Web Events
- Attribution Setting → Choose window
- Use 7-day click / 1-day view for comparison
Document your choice:
Standard Attribution for Reporting:
- Model: Last Click
- Window: 30 days
- Comparison date: [Date range]
Platforms: GA4, Google Ads, Meta Ads, Adobe Analytics
2. Align Timezones
Pick one timezone for all platforms:
Best practice: Use your business headquarters timezone
Implementation:
- Set GA4 reporting timezone
- Set Google Ads account timezone (can't change after setup)
- Set Meta Ads account timezone
- Set Adobe Analytics report suite timezone
- Document timezone in all reports
Note: Google Ads timezone is permanent after account creation.
3. Implement Consistent Transaction IDs
Prevent duplicate conversion counting:
// Server-side: Generate unique transaction ID
const transactionId = `${orderId}-${timestamp}`;
// GA4
gtag('event', 'purchase', {
transaction_id: transactionId,
value: orderTotal,
currency: 'USD'
});
// Google Ads
gtag('event', 'conversion', {
'send_to': 'AW-XXXXX/YYYYY',
'transaction_id': transactionId,
'value': orderTotal,
'currency': 'USD'
});
// Meta Pixel
fbq('track', 'Purchase', {
value: orderTotal,
currency: 'USD'
}, {
eventID: transactionId // Deduplication ID
});
4. Use Conversions API / Server-Side Tracking
Reduces discrepancies by bypassing browser limitations:
- Send same event from server and browser
- Use same event_id for deduplication
- More accurate than pixel alone
Google Ads Enhanced Conversions:
- Sends hashed user data from server
- Improves attribution accuracy
- Complements gtag conversions
GA4 Measurement Protocol:
- Server-side event tracking
- Bypasses ad blockers
- Use same client_id for user continuity
5. Create Reconciliation Reports
Build a regular reconciliation process:
Weekly/Monthly Report:
Metric: Purchases
Date Range: Last 7 days
Timezone: EST
Platform | Count | Revenue | Variance
GA4 | 1,000 | $50,000 | Baseline
Google Ads | 920 | $48,500 | -8% / -$1,500
Meta Ads | 850 | $45,000 | -15% / -$5,000
Shopify (source)| 1,050 | $52,000 | +5% / +$2,000
Notes:
- GA4 -5% vs Shopify: consent blocking, ad blockers
- Google Ads -8% vs GA4: attribution window (30d vs 90d)
- Meta Ads -15% vs GA4: attribution model, iOS tracking limits
Acceptable variance guidelines:
- ±5% - Normal, no action needed
- ±10% - Investigate if new, monitor if stable
- ±20% - Investigation required
- ±30%+ - Critical issue, immediate review
6. Document Platform Differences
Create a platform comparison guide:
# Platform Tracking Differences
## GA4
- Attribution: Data-driven, 90-day window
- Timezone: EST
- Tracking: GTM + Measurement Protocol
- Filters: Internal traffic excluded
- Notes: Includes all devices, cross-device tracking
## Google Ads
- Attribution: Last Google Ads click, 30-day window
- Timezone: EST
- Tracking: Enhanced Conversions + gtag
- Filters: Invalid clicks auto-filtered
- Notes: Only attributes to Google Ads clicks
## Meta Ads
- Attribution: 7-day click / 1-day view
- Timezone: EST
- Tracking: Pixel + Conversions API
- Filters: Invalid activity auto-filtered
- Notes: iOS 14.5+ tracking limited
## Shopify (Source of Truth for Transactions)
- Records all completed orders
- Timezone: EST
- Notes: Refunds processed separately
7. Use a Single Source of Truth per Metric
Assign authoritative sources:
| Metric | Source of Truth | Why |
|---|---|---|
| Revenue | Shopify/Payment Processor | Actual money received |
| Transactions | Shopify/CRM | Confirmed orders |
| Marketing Attribution | GA4 | Cross-channel view |
| Ad Platform ROI | Individual ad platforms | Platform-specific optimization |
| Website Behavior | GA4/Adobe Analytics | Comprehensive site tracking |
8. Implement Cross-Platform Validation
Tag events with platform identifiers:
// Track which platforms received the event
gtag('event', 'purchase', {
transaction_id: 'T12345',
value: 99.99,
debug_platforms: 'GA4,GAds,Meta' // For debugging only
});
Log to server for verification:
// Server-side event log
{
transaction_id: 'T12345',
timestamp: '2025-12-24T10:30:00Z',
platforms_notified: ['GA4', 'Google_Ads', 'Meta_Pixel'],
shopify_order_id: '4567890'
}
9. Account for Date Range Calculation Differences
Be precise with date ranges:
Instead of: "Last 7 days" Use: "December 17-23, 2025, EST timezone"
Different platforms calculate "last 7 days" differently:
- Some include today (partial day)
- Some use complete days only
- Timezone affects which day
Best practice:
- Use specific start/end dates
- Use complete days (not "last 30 days")
- Account for data processing delays
Platform-Specific Guides
| Platform | Guide |
|---|---|
| GA4 vs Google Ads | Reconciling GA4 and Google Ads data |
| GA4 vs Meta Ads | Understanding Facebook and GA4 discrepancies |
| Shopify vs GA4 | Shopify analytics discrepancies |
| Adobe Analytics | Adobe attribution models |
Further Reading
- GA4 Attribution - Attribution models explained
- Google Ads Attribution - Conversion attribution
- Meta Attribution - Facebook attribution windows
- Conversion Mismatch Issues - Related tracking issue
- Attribution Modeling - Understanding attribution