Severity: HighOwner: DevTime to fix: 1-3 h
Server-side GTM consent issues
Align server-side GTM routing and consent propagation so server-side tagging does not bypass the visitor’s consent state.
Covers: ssgtm_consent_issue, server_side_gtm_before_consent
Why this matters
Server-side GTM can reduce client-side leakage, but it can also hide consent failures if events are proxied without respecting denied states.
How to verify manually
- Inspect whether client-side requests still proxy analytics or ad events to the server container before consent.
- Check how consent state is forwarded into server-side GTM requests.
- Compare Accept and Reject flows to confirm denied states suppress server-side dispatch too.
Typical root causes
- Server-side GTM receives events without consent context.
- Client-side code forwards page-view events to the server endpoint before consent.
- Consent checks exist in the browser container but not in the server container.
GTM fix
- Pass explicit consent state into events forwarded to server-side GTM.
- Mirror consent checks in the server-side container instead of trusting client defaults.
- Audit tags in both browser and server containers for duplicate or bypassed dispatch.
WordPress fix
- Review whether plugins or theme snippets send events to a server-side GTM endpoint automatically.
- Disable server-side analytics forwarding until consent state is wired correctly.
- Retest both browser and network behavior after updates.
Generic fix
- Treat server-side GTM as another enforcement layer, not an exemption from consent logic.
- Forward denied states explicitly and suppress optional event proxying before consent.
- Document how browser and server tagging share the same consent source of truth.
How to confirm the fix worked
- Confirm no optional events are proxied to server-side GTM before consent.
- Confirm Accept enables the intended event flow and Reject keeps it denied.
- Run a fresh scan and verify consent issues around server-side GTM are resolved.
Next step
Re-scan after deployment to confirm that the runtime behavior changed, not just the banner copy.