Debug Google Consent Mode
If Google Ads, GA4, or other Google services show consent signal issues, use these debugging steps to verify Arqam360's GCM v2 implementation.
Consent Mode or TCF signals missing or wrong on your Google tags? Contact Arqam360 support first, not Google. Email admin@arqam360.com or use our contact page. We troubleshoot your Arqam360 setup, your banner and your Consent Mode signals, on every plan. Google support may ask for proof that you contacted your consent management platform first.
Debug mode: check your consent load order
Consent Mode only works as designed when the consent default is set before any Google tag runs. The Arqam360 script checks this on every page load, just before it sets its own default. Debug mode prints the full result in your browser's console (DevTools, then Console). Visitors see nothing either way. Turn it on in any of these ways:
- Add data-debug="true" to the Arqam360 script tag, as below. It stays on for every page load until you remove it.
- Add ?debug=1 to the page URL, for example https://yourstore.com/?debug=1. Only that page load is affected.
- Add ?arqam_debug=1 instead, if your site already uses a debug parameter for something else.
<script src="https://cdn.arqam360.com/widget-v2.js"
data-key="YOUR_SITE_KEY"
data-debug="true"></script>What you see without debug mode
The check also runs when debug mode is off. When it finds a real problem, it writes one warning per problem to the console, so you can spot it while testing:
- Late consent default: "[Arqam360] Consent Mode: Google tags ran before the Arqam360 consent default was set, so they may have sent data before consent applied. Load the Arqam360 script before every Google tag (gtag.js / Google Tag Manager). Detected: …". The Detected part says what the check saw: a Google tag had already executed (window.google_tag_manager is set), dataLayer already held a command such as "config" before any consent default, or Google requests had already started, with their URLs.
- Late TCF stub, only when TCF is enabled: "[Arqam360] TCF: Google tags ran before the Arqam360 TCF stub (window.__tcfapi) was registered, so they could not read the visitor's TC string. Load the Arqam360 script before every Google tag."
- Both warnings end with the same pointer: "First check whether the late tag is served from your own domain through Google tag gateway (GTG); if it is, follow the GTG instructions in this guide: https://arqam360.com/help/installation/google-tag-gateway".
What debug mode adds
With debug mode on, the console also shows:
- Check passed: "[Arqam360 debug] Consent Mode check passed: the consent default was set before any Google tag ran." With TCF enabled it reads "the consent default and the TCF stub were set". Nothing to fix.
- Near miss: "[Arqam360 debug] Consent Mode: a Google tag script appears before the Arqam360 script (…). It has not run yet, so the default is on time on this load, but on a faster connection it can run first. Move the Arqam360 script above it.", followed by the same Google tag gateway pointer. The order works by luck on that load, so fix it.
- Google tag gateway: "[Arqam360 debug] A Google tag on this page is served from a first-party URL, which usually means Google tag gateway. See https://arqam360.com/help/installation/google-tag-gateway".
- The full result: "[Arqam360 debug] Load-order findings:" followed by an object you can expand. late, tcfLate and risk say which problem was found; ran, queued, firstCommand, requests and scriptsBefore say what the check saw; gtgSuspected says whether a Google tag looked like it was served through Google tag gateway.
If the check finds a late default
Check for Google tag gateway first
Find the late tag in the message. If it loads from your own domain rather than googletagmanager.com, it is probably served through Google tag gateway, and the fix depends on how the gateway was set up. Follow the Google tag gateway guide linked below.
Otherwise, load Arqam360 first
Make the Arqam360 script the first script in <head>, above gtag.js and the Google Tag Manager snippet. In Google Tag Manager, use the Arqam360 template on the Consent Initialization - All Pages trigger.
Reload with ?debug=1
Check that the console now shows "Consent Mode check passed".
Late tag served from your own domain? Google tag gateway (GTG) and consent timing explains how to verify it and what to change.
Debugging Tools
- Google Tag Assistant (tagassistant.google.com) — Real-time consent state monitoring
- Browser DevTools Console — View gtag() calls and consent events
- Google Ads Diagnostics — Check consent coverage in your Google Ads account
- GA4 DebugView — See real-time events and consent parameters
Open Tag Assistant
Go to tagassistant.google.com and connect to your website.
Check consent state
In the Consent tab, verify you see 'denied' for all parameters on page load.
Accept consent
Click accept on your consent banner.
Verify update
Check Tag Assistant shows consent parameters changing to 'granted'.
Check data layer
In browser console, type dataLayer and verify consent events are logged.

Common Issues
- No consent signal — Arqam360 script loads after Google tag. Fix: ensure Arqam360 loads first.
- Consent stuck on denied — Check if there's a JavaScript error preventing the consent update from firing.
- Only some parameters update — Verify your consent categories map correctly to GCM parameters.
- Tag Assistant shows 'Unknown' — Clear Tag Assistant cache and reconnect.
If a Google tag runs before your consent default, or your tags use Google tag gateway: Google tag gateway (GTG) and consent timing.
The two ways to run Consent Mode, and how to switch: Consent Mode: basic vs advanced.
Next Steps
Was this article helpful?