A missing GA4 event does not prove Google Tag Manager was blocked. The container might load while one of its tags or event requests fails. Start at gtm.js and follow the action downstream so you fix the stage that actually failed.
1. Check the GTM container request
Open developer tools → Network, clear the log, reload, and filter for gtm.js. Check the request URL for the expected GTM- container ID. A client-side blocking error on that request supports container blocking in this browser visit.
If no request appears, check the installed snippet, consent-controlled loading, cached HTML, and earlier script errors. If the request succeeds, continue to the tags it should load. The container downloading does not establish that every tag fired.
Compare your installation with Google’s GTM installation instructions. Keep the standard asynchronous loader as your baseline; moving the snippet later can change event coverage.
2. Follow the tag and its event request
For a GA4 event, look for the Google tag script and subsequent /g/collect request. For other tools, inspect their own script and measurement requests. Use Network’s Initiator information to investigate how a request was started.
- Container blocked: tags that depend on that container may never execute.
- Container loaded, tag script blocked: investigate that tool’s loader rather than assuming all GTM tags failed.
- Scripts loaded, measurement blocked: the tool attempted to send data, but the request was stopped.
- No blocked request: check the event trigger, consent state, destination ID, and published version.
The GA4 ERR_BLOCKED_BY_CLIENT guide walks through script-versus-event failures. GTM Preview helps inspect triggers when its connection works; a failed Preview connection alone does not prove production tags are blocked.
3. Reproduce with one variable changed
- Choose a test page and a single event. Record the container version, browser version, blocker configuration, and consent state.
- Disable the blocker for that page, keep analytics consent accepted, reload, and perform the action. Confirm baseline receipt in your destination tool.
- Enable the blocker with the same settings, reload, and repeat. Compare container, tag script, event request, and destination receipt.
- If the baseline is also broken, fix the setup before evaluating blocking. If both runs succeed, record that no loss was reproduced for this action.
For an anonymous public-page check, try the ad blocker scanner. A scan cannot replace your interactive checkout or consent test. Do not turn a blocked-request count into a percentage of visitors or lost conversions.
4. Choose a fix for the failure you observed
For implementation errors, correct the trigger, destination, installation, or container publication. For intended consent restrictions, preserve the visitor’s choice. Recovery is relevant only when you have reproduced a blocked request that your setup was intended to send.
The GTM ad blocker recovery page explains Introtrace’s script proxying and event relay. Install recovery directly in the page head before analytics and consent scripts; putting it only inside a blocked GTM container prevents it from starting. The shared CDN is the default, with a custom CNAME available on paid plans.
Server-side tagging still needs a source of events. Moving processing to a server does not by itself prove that a blocked browser loader has been fixed. Google’s server-side tagging introduction describes the browser-to-server architecture. For performance questions, use our GTM page-speed measurement guide.
5. Verify delivery and consent after the change
Repeat the original blocked test with recovery enabled, then confirm the event and its parameters in the destination. For GA4, use DebugView with debug mode enabled and the correct test device selected.
Check that a single action does not unexpectedly create duplicate events, and repeat with consent declined. Delivery, attribution, duplicates, and consent behavior are separate checks.
Our GA4 recovery testing checklist provides the complete three-run process and a recorded Brave example. That example tested GA4 on Introtrace with accepted consent; it does not establish recovery for every GTM container or tag.
