hello@datascale.de+49 89 921 35 623tracked cookie-free · /openDEEN

Search services, integrations and blog posts.

DatascaleResourcesChecksConsent Mode V2

Check · C01 · Consent Mode V2

Consent Mode V2 audit: default, update, four parameters

The check looks for the gtag(consent) call with the four V2 parameters. If it is not in the HTML, the deep scan watches in the browser whether a CMP sets it.

What we check

In the HTML: is there a gtag('consent', 'default', {…}) or 'update' call, and which of the four V2 parameters does it carry: ad_storage, analytics_storage, ad_user_data, ad_personalization. All four means "ok", a subset "to review". A missing call is critical when no CMP was detected, and "to review" when one is present, because it probably sets the default inside the tag manager.

In the deep scan: the browser hooks dataLayer.push before any script runs and records the first consent default with its parameters. That result replaces the static line. If the browser sees no default but Google pings carrying a gcs stamp, Consent Mode is active; the completeness of the parameters then remains to be verified in Tag Assistant.

Why it matters

Since March 2024 Google requires Consent Mode V2 from advertisers with users in the EEA. Without the two new parameters no signals flow into remarketing lists and conversion modelling, and the campaigns optimise on a fraction of the real conversions. What the migration looks like in practice is covered in the hands-on guide to Consent Mode V2.

Common causes

  • Consent Mode is "enabled", but only the two old parameters are set; ad_user_data and ad_personalization have been missing since the mandatory V2 update.
  • The default is set in the tag manager, but only after the first tag, the classic race condition on SPAs.
  • The CMP categories were never mapped to the Consent Mode parameters. The banner collects consents, gtag never hears about them.
  • A template or plugin sets the parameters only on subpages, the homepage loads without a default state.

The fix

Run gtag('consent', 'default', {…}) with all four parameters set to denied before any Google tag, in the HTML or through the Consent Initialization trigger in the tag manager. After the banner decision, send an update with the granted values. Then verify in Tag Assistant that the first ping carries the default and the second the update.

Matching template

Consent Mode Audit Checklist

Seven layers, each with a check, a failure signal and an owner. Covers this finding and the six around it.

Get the checklist →

Check it yourself first

The Tracking Check tests this point along with all the others, in seconds.

Start the Tracking Check →
The check says "not found", but our CMP sets Consent Mode. Who is right?

Probably both. Cookiebot, Usercentrics and the GTM templates often set the default inside the tag manager, not in the page source. The static scan cannot see that and, with a detected CMP, reports "to review" instead of critical. The deep scan watches the call in the browser; if it sees one, it replaces the line with the measured result.

Basic or advanced, what does Datascale recommend?

That is a decision, not a setting. Basic sends nothing after a rejection, advanced sends cookieless pings with a denied stamp from which Google models conversions. Advanced yields more data and is legally contested. The finding Consent Mode: basic or advanced shows which mode runs; the decision belongs in writing.

What happens without the two new parameters?

For EEA users Google Ads discards the signals for remarketing and conversion measurement when ad_user_data and ad_personalization are missing. The campaigns keep running, they just stop learning from your conversions.

The fix, delivered

Wired up in days, not sprints.

Findings from the Tracking Check go into a ranked sequence with effort estimates in the Audit Sprint, every module with an acceptance criterion.