Ensuring your Google Consent Mode implementation is correctly set up is essential for accurate measurement and compliance. This guide walks you through how to verify your implementation using the Consentik diagnostic tool and manual methods.
What the diagnostic checks
The Consentik diagnostic tool scans your pages and evaluates five criteria:
| Check | What it means |
|---|---|
| CMP first | The Consentik script loads before any Google tag (GTM, gtag.js, Google Ads) |
| Default fired | A gtag('consent', 'default', {...}) command is present in dataLayer on page load |
| Default valid | The default consent values match your Consentik configuration |
| No late consent | Consent signals are sent before Google tags start executing, not after |
| Tag Gateway | Whether Google Tag Gateway (GTG) is active on the page |
A page passes all checks only when all five criteria are met. Any failure means consent data may be incomplete or inaccurate.
Using the built-in diagnostic tool
The fastest way to verify your implementation is through the Consentik dashboard.
- Log in to your Consentik account
- Go to Google Consent Mode V2 from the left navigation
- Scroll to the Consent Mode Diagnostic section
- Click Run diagnostic scan (or Re-scan if a previous scan exists)
- Wait for the scan to complete — results appear as a per-page table
Reading the results
| Column | Green (pass) | Red / Warning (action needed) |
|---|---|---|
| Default fired | ✓ | ✗ — consent default is missing or fires too late |
| CMP first | ✓ | ✗ — Consentik script loads after Google tags |
| Late consent | ✓ | ⚠ Late — consent update fires after Google tags |
| Tag Gateway | None | Active — GTG detected, may affect load order |
| Status | OK | Fix needed |
If any page shows Fix needed, the tool will display specific guidance below the table explaining what is wrong and how to resolve it.
Manual verification
You can also verify your implementation without the dashboard using browser developer tools.
1. Check the dataLayer for consent commands
Open your site in Chrome, press F12 to open DevTools, go to the Console tab and run:
dataLayer.filter(e => e[0] === 'consent')
You should see at least two entries:
['consent', 'default', { ad_storage: 'denied', ... }]— fires on page load before any tags['consent', 'update', { ad_storage: 'granted', ... }]— fires after the user makes a choice
If the default entry is missing or appears after GTM entries, your CMP is not configured correctly.
2. Check script load order
In DevTools, go to the Network tab and filter by Script. Reload the page.
Look for:
index.js(your Consentik script) — this must appear beforegtm.jsorgtag/js- If
gtm.jsloads first, move the Consentik embed code above your GTM snippet in the HTML<head>
3. Check the consent state in the console
// Current consent state read by Consentik
window.otkConsent
This object should reflect the user’s actual consent choice. If it is empty or undefined, the Consentik script may not have loaded correctly.
4. Use Google Tag Assistant
Google Tag Assistant can verify that consent signals are being received by Google tags. Look for a green Consent status on each tag. A yellow or red status indicates consent is not being passed correctly.
Common issues and fixes
CMP first = ✗ (Consentik loads after Google tags)
Cause: The Consentik embed script is placed in the HTML after the GTM or gtag snippet.
Fix: Move the Consentik script to the very top of the <head> section, before any other scripts:
<head>
<!-- 1. Consentik embed code (copy from Dashboard → Settings → Embed) -->
[Consentik embed code here]
<!-- 2. Google Tag Manager snippet — placed AFTER Consentik -->
[GTM snippet here]
</head>
Late consent detected
Cause: A consent update command is firing after Google tags have already started loading. This is commonly caused by Google Tag Gateway (GTG), which injects Google scripts via CDN before your CMP can set the default.
Fix: Switch to Advanced Consent Mode (U+C) in your Consentik settings. This is the only mechanism that is guaranteed to work when GTG controls the script load order.
Default not fired
Cause: Google Consent Mode is not enabled in Consentik, or the script is not loading at all.
Fix:
- In the Consentik dashboard, go to Google Consent Mode V2
- Enable Google Consent Mode and save settings
- Confirm the embed code is present on your site by checking for
#cst-packagein DevTools → Elements
Default valid = ✗ (consent values do not match)
Cause: The default consent values sent to Google do not match what is configured in Consentik. This can happen if the embed code is outdated (cached version of index.js).
Fix: Force a cache refresh by appending a version parameter to your Consentik script URL, or clear your CDN/server cache so the latest index.js is served.
Further reading
- Google Consent Mode overview — Google Developers
- Google Tag Gateway and Consent Mode — Consentik Documentation
- How to implement Consent Mode V2 with Consentik — Consentik Documentation
- Google Tag Gateway overview — Tag Manager Help