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:
- The event must fire correctly
- You must mark it as a conversion in GA4
- GA4 must receive and process it
- 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
- Go to GA4 → Admin → DebugView
- Enable debug mode in GTM preview or add
?gtm_debug=1to your URL - Watch for your conversion event
If the event doesn’t appear in DebugView, the problem is event firing, not GA4.
Using Browser DevTools
- Open Network tab
- Filter by “collect”
- Look for requests to google-analytics.com
- 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:
- GA4 → Admin → Events
- Find your event in the list
- 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:
purchasegenerate_leadsign_upbegin_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.
Check 4: Consent Mode Blocking
If you use Google Consent Mode:
- Check that analytics_storage consent is granted
- Verify consent mode fires BEFORE your GA4 config tag
- 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:
- GA4 → Admin → Data Settings → Data Retention
- Default is 2 months for free accounts
- 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:
- GA4 → Admin → Data Streams → your stream → Configure tag settings
- Check “Define internal traffic” and “Exclude internal traffic”
- 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:
- Ad blockers: 10-30% of users block GA4
- Consent denied: GDPR/CCPA compliance reduces tracking
- Bot filtering: GA4 filters some automated traffic
- JavaScript errors: Some users don’t execute your tracking code
- 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:
- Multiple GTM containers overwriting each other
- Client-side JavaScript errors breaking the data layer
- Server-side caching serving old pages without GTM
- 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.