GA4 Not Tracking Conversions? Here's Why (And How to Fix It)

Your GA4 conversions are missing or inconsistent. This guide covers the most common causes and exact fixes—from event configuration to attribution settings.

GA4conversionsmissing dataattribution

You set up conversions in GA4, but the numbers don’t match reality. Or worse—they’re zero. Here’s the systematic approach to diagnosing and fixing GA4 conversion tracking.

First: Understand How GA4 Conversions Work

Unlike Universal Analytics, GA4 conversions are just events marked as conversions. This means:

  1. The event must fire correctly
  2. You must mark it as a conversion in GA4
  3. GA4 must receive and process it
  4. Attribution must credit the right session

Failure at any step = missing conversions.

Check 1: Is the Event Actually Firing?

Before blaming GA4, verify the event is being sent:

Using GA4 DebugView

  1. Go to GA4 → Admin → DebugView
  2. Enable debug mode in GTM preview or add ?gtm_debug=1 to your URL
  3. Watch for your conversion event

If the event doesn’t appear in DebugView, the problem is event firing, not GA4.

Using Browser DevTools

  1. Open Network tab
  2. Filter by “collect”
  3. Look for requests to google-analytics.com
  4. Check the payload for your event name
// You should see something like:
en=purchase (event name)
ep.currency=USD (event parameter)
ep.value=99.99 (event parameter)

Check 2: Is the Event Marked as a Conversion?

This catches people constantly:

  1. GA4 → Admin → Events
  2. Find your event in the list
  3. Toggle “Mark as conversion” ON

Important: The event must fire at least once before it appears in this list. If you just set up the event, wait 24-48 hours or use DebugView to force it to appear.

Pre-defined vs Custom Events

Some events are automatically eligible as conversions:

  • purchase
  • generate_lead
  • sign_up
  • begin_checkout

Custom events need manual conversion marking.

Check 3: Event Parameters Are Correct

GA4 enhanced conversions require specific parameters. For purchase events:

dataLayer.push({
  event: 'purchase',
  ecommerce: {
    transaction_id: '12345',      // Required
    value: 99.99,                  // Required for value tracking
    currency: 'USD',               // Required
    items: [{ item_id: 'SKU001' }] // Required for product data
  }
});

Missing transaction_id? GA4 may dedupe or drop the event. Missing value? Your conversion value reports show $0.

If you use Google Consent Mode:

  1. Check that analytics_storage consent is granted
  2. Verify consent mode fires BEFORE your GA4 config tag
  3. Look for “Consent denied” in DebugView
// Consent should look like this BEFORE any GA4 tags:
gtag('consent', 'update', {
  'analytics_storage': 'granted'
});

Check 5: Data Retention Settings

GA4 has data retention that affects historical data:

  1. GA4 → Admin → Data Settings → Data Retention
  2. Default is 2 months for free accounts
  3. Set to 14 months if possible

This doesn’t delete conversion counts but affects detailed exploration reports.

Check 6: Attribution Model

GA4 uses data-driven attribution by default. This can cause confusion:

  • A conversion might credit multiple sessions
  • The converting session might get 0.3 conversions (partial credit)
  • Different reports show different numbers

For simple debugging, use the “Session conversion rate” report which shows standard attribution.

Check 7: Filters and Data Streams

Accidental filtering can hide conversions:

  1. GA4 → Admin → Data Streams → your stream → Configure tag settings
  2. Check “Define internal traffic” and “Exclude internal traffic”
  3. Verify you didn’t accidentally exclude real users

Also check:

  • Unwanted referral exclusions
  • Cross-domain tracking issues (separate sessions = lost attribution)

Check 8: Timing and Processing Delay

GA4 processes data with delays:

  • Realtime reports: 30-60 seconds delay
  • Standard reports: 24-48 hour delay
  • Conversions report: Can take 72+ hours

If you made changes today, check again in 48 hours before panicking.

The Data Layer Audit

Most conversion issues trace back to data layer problems. Audit yours:

// In console, after the conversion action:
console.log(dataLayer.filter(d => d.event === 'purchase'));

Check:

  • Event name matches exactly (case-sensitive)
  • All required parameters present
  • Values are correct type (numbers, not strings)
  • No duplicate events

When Numbers Don’t Match Your Backend

GA4 conversions will NEVER match your backend 100%. Reasons:

  1. Ad blockers: 10-30% of users block GA4
  2. Consent denied: GDPR/CCPA compliance reduces tracking
  3. Bot filtering: GA4 filters some automated traffic
  4. JavaScript errors: Some users don’t execute your tracking code
  5. Sampling: High-traffic sites may see sampled data

Expect GA4 to track 70-90% of actual conversions depending on your audience.

Still Missing Conversions?

If you’ve checked all of the above and conversions are still missing:

  1. Multiple GTM containers overwriting each other
  2. Client-side JavaScript errors breaking the data layer
  3. Server-side caching serving old pages without GTM
  4. Complex SPA routing not triggering events correctly

These require deeper investigation. Get a free scan and we’ll identify exactly what’s blocking your conversion tracking.