Conversion Mismatch | Blue Frog Docs

Conversion Mismatch

Diagnose and fix conversion number discrepancies between analytics platforms and advertising platforms

Conversion Mismatch

What This Means

Conversion mismatch occurs when different platforms (Google Analytics vs Google Ads, Facebook Ads vs Analytics, etc.) report different numbers of conversions for the same actions. While some discrepancy is normal and expected, large differences indicate tracking problems or misunderstanding of how platforms measure conversions.

Impact on Your Business

Decision Making:

  • Cannot accurately calculate ROI
  • Unclear which campaigns actually work
  • Budget allocation based on wrong data
  • Trust issues in reporting

Attribution Confusion:

  • Different platforms claim credit for same conversion
  • Cannot identify true conversion source
  • Multi-touch attribution impossible
  • Channel value miscalculated

Budget Optimization:

  • Over/under-investing in channels
  • Wrong campaigns get budget
  • Cannot optimize effectively
  • Wasted advertising spend

How to Diagnose

Method 1: Compare Platform Reports

  1. Google Analytics vs Google Ads:

    • GA4: Acquisitions → Traffic acquisition → Source
    • Google Ads: Campaigns → Conversions
    • Compare conversion numbers for same time period
    • Note the difference percentage
  2. Check date range and time zone:

    • Use same dates in both platforms
    • Verify time zones match
    • Check daylight savings transitions
  3. Compare attribution windows:

    • Google Ads: Default 30-day click, 1-day view
    • GA4: Default last-click attribution
    • Facebook: 7-day click, 1-day view

What to Look For:

  • Discrepancy > 20% (investigate)
  • Systematic under/over-reporting
  • Platform-specific patterns
  • Timing differences

Method 2: Test Conversion Path

  1. Perform test conversion:

    • Click your ad
    • Complete conversion action
    • Wait 24-48 hours
  2. Check both platforms:

    • Google Ads: Should show conversion
    • GA4: Should show conversion
    • Note which platform(s) recorded it
  3. Identify where tracking fails:

    • Did both platforms track it?
    • Was attribution correct?
    • Were all parameters captured?

Method 3: Review Attribution Settings

  1. Google Analytics 4:

    • Admin → Data display → Attribution settings
    • Check attribution model (last click, data-driven, etc.)
    • Note reporting attribution model
  2. Google Ads:

    • Tools & Settings → Measurement → Attribution
    • Review conversion window settings
    • Check attribution model
  3. Facebook Ads:

    • Events Manager → Settings
    • Check attribution window
    • Review conversion tracking

What to Look For:

  • Different attribution models between platforms
  • Different conversion windows
  • Different counting methodologies
  • Assisted vs last-click differences

General Fixes

Fix 1: Understand Normal Discrepancies

Accept expected differences:

  1. Attribution model differences:

    Scenario: User clicks Facebook ad, then Google ad, then converts
    - Facebook Ads: Claims conversion (7-day click window)
    - Google Ads: Claims conversion (30-day click window)
    - GA4: Credits Google (last-click attribution)
    Result: 1 conversion, counted 3 times across platforms
    
  2. Conversion window differences:

    Google Ads: 30-day click window
    GA4: 90-day lookback (default)
    Result: GA4 may credit older traffic that Ads doesn't count
    
  3. Tracking method differences:

    Google Ads: Uses last Google click
    GA4: Can use data-driven attribution (multi-touch)
    Result: Different conversions credited
    
  4. Timing differences:

    Conversion happens at 11:58 PM PST
    GA4 (PST): Counted on current day
    Google Ads (UTC): Counted on next day
    Result: Same conversion, different dates
    

Fix 2: Align Conversion Definitions

Ensure platforms track same actions:

  1. Use identical conversion actions:

    // GA4 conversion
    gtag('event', 'purchase', {
      transaction_id: 'T123',
      value: 99.99,
      currency: 'USD'
    });
    
    // Google Ads conversion (should match)
    gtag('event', 'conversion', {
      'send_to': 'AW-123456789/AbCdEfGhIjKlMnOpQr',
      'transaction_id': 'T123', // Same transaction ID
      'value': 99.99,
      'currency': 'USD'
    });
    
  2. Import GA4 conversions to Google Ads:

    • Google Ads → Tools → Conversions
    • Click "+" → Import → Google Analytics 4
    • Select GA4 property
    • Choose conversions to import
    • Benefit: Single source of truth
  3. Match Facebook Pixel events:

    // GA4 purchase event
    gtag('event', 'purchase', {...});
    
    // Corresponding Facebook Purchase event
    fbq('track', 'Purchase', {
      value: 99.99,
      currency: 'USD',
      content_ids: ['123'],
      content_type: 'product'
    });
    

Fix 3: Synchronize Time Zones

Align reporting time zones:

  1. Check GA4 time zone:

    • Admin → Property Settings → Reporting time zone
    • Note current time zone
  2. Check Google Ads time zone:

    • Settings → Account settings → Time zone
    • Cannot be changed after account creation
  3. Align if possible:

    • GA4 time zone can be changed (affects future data)
    • Use same time zone for comparing
    • Or adjust mentally when comparing reports
  4. Document differences:

    GA4: Pacific Time (UTC-8)
    Google Ads: Eastern Time (UTC-5)
    3-hour difference means date boundaries differ
    

Fix 4: Use Transaction ID De-duplication

Prevent duplicate conversion counting:

  1. Send transaction ID with every conversion:

    // GA4
    gtag('event', 'purchase', {
      transaction_id: 'T' + Date.now(), // Unique ID
      value: 99.99,
      currency: 'USD'
    });
    
    // Google Ads (same transaction ID)
    gtag('event', 'conversion', {
      'send_to': 'AW-123456789/AbCdEfGhIjKlMnOpQr',
      'transaction_id': 'T' + Date.now(), // Same ID
      'value': 99.99
    });
    
  2. Ensure transaction IDs are truly unique:

    // Generate unique transaction ID
    const transactionId = 'T-' + Date.now() + '-' + Math.random().toString(36).substr(2, 9);
    
  3. De-duplication in Google Ads:

    • Google Ads automatically de-duplicates based on transaction_id
    • Multiple conversions with same ID counted once
    • Prevents inflated numbers from duplicate tracking

Fix 5: Fix Cross-Domain Tracking

Track users across domains:

  1. Enable cross-domain tracking (GA4):

    gtag('config', 'G-XXXXXXXXXX', {
      'linker': {
        'domains': ['example.com', 'shop.example.com']
      }
    });
    
  2. Configure in GA4 Admin:

    • Admin → Data Streams → Configure tag settings
    • Configure your domains
    • Add all related domains
  3. Test cross-domain tracking:

    • Click from domain A to domain B
    • Check that GA4 client ID persists
    • Verify attribution maintained

Fix 6: Align Attribution Models

Use consistent attribution:

  1. Understand each platform's default:

    Google Ads: Last Google Ads click
    GA4: Data-driven (or last click)
    Facebook: 7-day click, 1-day view
    
  2. Choose primary platform for truth:

    Option 1: Use GA4 as source of truth
    - Import GA4 conversions to Google Ads
    - Use GA4 attribution model
    - Accept GA4 numbers as correct
    
    Option 2: Use platform's native attribution
    - Accept discrepancies
    - Understand each platform's value
    - Use each for optimization decisions
    
  3. Custom attribution in GA4:

    • Admin → Attribution settings
    • Choose model: Data-driven, Last click, First click, etc.
    • Apply to reporting

Fix 7: Account for View-Through Conversions

Understand view vs click conversions:

  1. Google Ads view-through conversions:

    • Conversions → Columns → Modify columns
    • Add "View-through conv."
    • Separate from click conversions
  2. Facebook view-through:

    • Default: 1-day view window
    • User saw ad but didn't click
    • Converted within 24 hours
  3. GA4 handling:

    • GA4 typically doesn't count view-throughs
    • Only click-through attribution
    • Results in lower conversion count vs ad platforms
  4. Compare apples to apples:

    Google Ads: Click conversions only (exclude view-through)
    GA4: All conversions (inherently click-based)
    Result: More comparable numbers
    

Platform-Specific Guides

Detailed implementation instructions for your specific platform:

Platform Troubleshooting Guide
Shopify Shopify Conversion Mismatch Guide
WordPress WordPress Conversion Mismatch Guide
Wix Wix Conversion Mismatch Guide
Squarespace Squarespace Conversion Mismatch Guide
Webflow Webflow Conversion Mismatch Guide

Verification

After implementing fixes:

  1. Perform test conversions:

    • Complete 5-10 test transactions
    • Use different attribution paths
    • Wait 48 hours for processing
  2. Compare numbers:

    • Check both platforms
    • Calculate discrepancy percentage
    • Should be < 10-15%
  3. Review over time:

    • Check weekly for 1 month
    • Monitor trend in discrepancy
    • Investigate new anomalies
  4. Document baselines:

    Normal discrepancy: 10%
    Reason: Attribution model differences
    Acceptable range: 5-15%
    Alert if > 20%
    

Common Mistakes

  1. Comparing different time zones - Align time zones
  2. Ignoring attribution model differences - Understand each model
  3. Not using transaction ID - Enable de-duplication
  4. Expecting exact matches - Some difference is normal
  5. Comparing clicks to conversions - Use consistent metrics
  6. Including view-through in one but not other - Be consistent
  7. Not accounting for conversion delays - Allow processing time
  8. Cross-domain tracking not set up - Revenue attributed wrong
  9. Different conversion actions - Ensure same actions tracked
  10. Bot/spam traffic - Filter in both platforms

Acceptable Discrepancy Range

Normal: < 15% difference

  • Attribution model differences
  • Conversion window differences
  • Timing and time zone variations

Investigate: 15-25% difference

  • Check configuration
  • Verify conversion definitions match
  • Review attribution settings

Critical: > 25% difference

  • Major tracking problem
  • Missing conversion tags
  • Wrong platform configuration
  • Need immediate fix

Additional Resources

// SYS.FOOTER