The 3 categories of "event not showing" failures
Before debugging, identify which category the failure falls into:
Category A — Event doesn't fire at all GTM tag never executes. The event doesn't appear in GTM Preview, DebugView, or network requests.
Category B — Event fires in GTM but doesn't reach GA4 GTM shows the tag fired, but the event doesn't appear in DebugView or GA4 reports.
Category C — Event reaches GA4 but doesn't appear in reports DebugView shows the event, network requests show it, but the event doesn't appear in GA4's Events report after 24–48 hours.
Each category has different root causes and different fixes.
The 7-step debugging framework
Step 1 — Reproduce the problem in GTM Preview Mode
Open GTM → Preview → browse to the page → perform the action that should trigger the event.
In GTM Preview panel, check:
- Does a tag fire for this event? Look in the "Tags Fired" section after performing the action.
- If no tag fired: the trigger didn't match. Proceed to Step 2.
- If a tag fired: the issue is downstream. Proceed to Step 4.
Step 2 — Debug the GTM trigger (Category A)
The trigger didn't fire. Check:
Is the trigger type correct?
- Custom Event trigger: the
eventname in the dataLayer push must exactly match the trigger's Event Name field (case-sensitive) - Click trigger: is it "All Clicks" or "Just Links"? Link clicks need "Just Links"; button clicks need "All Elements"
- Page View trigger: is it firing on the correct URL pattern?
Trigger condition check:
Open GTM Preview → click the trigger name → check "Variables" tab → see what the variable value actually is vs what the trigger expects.
Common custom event trigger mismatch:
Fix: match the trigger event name exactly to the dataLayer push event name.
Step 3 — Debug dataLayer timing (Category A)
The event is supposed to fire when a user completes an action but the dataLayer push fires before the user action (on page load instead of on click/submit).
Test: In GTM Preview → check the Summary tab. Does the event appear in the "Tags Fired" list under "Page View — Container Loaded" (wrong — page load timing) or under the correct user action (click, form submit, etc.)?
Fix: Move the dataLayer push to the correct lifecycle point. For form submissions, push inside the form success callback, not on page load.
Step 4 — Check GA4 tag configuration (Category B)
GTM tag fired but event isn't reaching GA4. Check:
Want to see which hidden implementation gaps are affecting your GA4 data quality?
Is the Measurement ID correct? GTM Preview → click the GA4 tag that fired → check the "Tag Configuration" panel → verify the Measurement ID (G-XXXXXXXX) matches the property you're checking in GA4 Admin.
Is consent blocking the tag? If you're using Consent Mode, the GA4 tag may require analytics_storage: granted to fire. In GTM Preview → "Consent" tab → check the consent state when the event fires. If analytics_storage is denied, the tag fires a cookieless ping but not a full event hit.
Network request check:
Open Chrome DevTools → Network tab → filter by collect or g/collect → perform the action. Does a network request appear to https://www.google-analytics.com/g/collect?
- Yes: event reached GA4's servers. Issue is in Step 6 (reporting delay or configuration).
- No: the tag fired in GTM but the network request wasn't made. Check consent state and tag configuration.
Step 5 — Check DebugView (Category B)
If the network request was made, the event should appear in DebugView within 1–2 seconds.
GA4 Admin → DebugView → check if the event appears.
If it doesn't:
- Wrong Measurement ID in the tag (event went to a different property)
- The
debug_modeparameter isn't being sent (DebugView only shows debug-mode events — ensure GTM Preview is active when you trigger the event)
If it does appear in DebugView but not in reports: This is Category C — see Step 6.
Step 6 — Check reporting delay and event naming (Category C)
GA4 standard reports have 24–48 hour processing delay. If you just implemented the event today, it may not appear in reports until tomorrow. Check:
In DebugView: Does the event appear? If yes, the data is flowing correctly. Wait 24 hours.
In Realtime report: GA4 → Reports → Realtime → Events tab. Does the event name appear? Realtime has a 30-second delay (much faster than standard reports). If the event appears in Realtime but not in standard reports, it's a reporting lag issue — not a tracking failure.
Event name in reports vs event name sent:
GA4 event names are case-sensitive in the data layer but normalised to lowercase in reports. FormSubmit becomes formsubmit in reports. Check the Events report using the lowercase version of your event name.
Step 7 — BigQuery verification (Category C, historical events)
If the event should have fired historically but isn't visible in GA4 reports:
- Returns rows: The event exists in GA4's raw data. If it's not in standard reports, check custom dimension registration and cardinality.
- Returns no rows: The event genuinely didn't fire or wasn't received by GA4 during the period.
The most common silent failures
Silent failure 1 — Consent Mode blocking in production In GTM Preview, you're in debug mode which bypasses some consent requirements. In production, real users who rejected consent don't trigger events. This is correct behaviour — but it means "working in Preview, not in production" is often consent mode functioning correctly, not a bug.
Silent failure 2 — GTM container not published Changes were made in GTM and previewed, but the container was never published to production. Production site still runs the old container version without the new event.
Silent failure 3 — Event fires on wrong pages The trigger fires the event on every page (Page View trigger with no URL condition) instead of only the intended page. The event fires but you're checking the wrong page in DebugView.
Silent failure 4 — Variable returning undefined GTM variable that should contain the event parameter returns undefined. The event fires but with (not set) for the key parameter. Check variables in GTM Preview's Variables tab.
FAQ: GA4 Debugging Custom Events When They Don't Show
What should a team validate first when ga4 debugging custom events when they don't show appears?
How do I know whether the fix actually worked?
When should this become a full GA4 audit instead of a quick fix?
Related guides for GA4 Debugging Custom Events When They Don't Show
BigQuery Cost Optimisation for GA4 Exports: 9 SQL Patterns (2026)
The biggest cost wins come from nine SQL patterns: (1) partition pruning via _TABLE_SUFFIX BETWEEN (10–50x cost difference vs derived filters), (2) clustering on source/medium/event_name (30–60% reduction on top of partitioning), (3) explicit column selection (never SELECT *)…
How to Stitch GA4 BigQuery Sessions Manually (2026)
GA4 doesn't store sessions as records in BigQuery exports — only individual events with session identifiers. To reconstruct sessions: join on user_pseudo_id + (SELECT value.int_value FROM UNNEST(event_params) WHERE key='ga_session_id') as the unique session key…
Run a GA4 audit before ga4 debugging custom events when they don't show spreads into reporting decisions
Use GA4 Audits to surface implementation gaps, broken signals, and the next fixes to prioritize before the issue becomes harder to trust or explain.