The four signals
When Google’s tag fires, it sends four consent flags that tell Google what it can and can’t do with the visitor’s data:
| Signal | Controls |
|---|---|
ad_storage | Whether Google can store advertising cookies. |
ad_user_data | Whether Google can use the visitor’s personal data for ads. |
ad_personalization | Whether Google can personalise ads to this visitor. |
analytics_storage | Whether Google can store analytics cookies. |
Each one is granted or denied. For EU traffic, all four must start as denied and flip to granted only after the visitor opts in.
ad_user_data and ad_personalization are the two added in V2 (November 2023). V1 only had ad_storage and analytics_storage. If you set up Consent Mode before late 2023, those two new ones are what you need to add.
When Consent Mode V2 is required
- EU and EEA traffic — mandatory since March 2024. No Consent Mode V2, no remarketing audiences in Google Ads, possibly reduced measurement in GA4.
- UK, Switzerland, Brazil, several US states — similar opt-in regimes apply; check the local rules.
- Rest of the world — technically optional, but it’s the cleanest pattern for any site that already has a consent banner.
Three setup paths
| Setup | Google Tag | Consent plugin | When to use |
|---|---|---|---|
| Recommended | PYS (free or Pro) | ConsentMagic | New install, or you want the cleanest path. Native integration, no glue code. |
| Alternative 1 | PYS | Cookiebot, Complianz, Iubenda, OneTrust, custom | You already have a consent tool. Use PYS’s filters to relay the visitor’s choice. |
| Alternative 2 | PYS | None, or a plugin that blocks the tag upstream | Your consent plugin blocks the Google Tag entirely until consent is given. PYS fires with granted because the tag only runs post-consent. |
Recommended: PixelYourSite + ConsentMagic
- Configure the Google Tag in PYS: PixelYourSite Pro → Google Analytics → your GA4 ID (and Google Ads if you use it).
- Install ConsentMagic and complete the setup wizard.
- In ConsentMagic settings, turn on Google Consent Mode V2.
- Save.
That’s it. ConsentMagic sends the four signals to PYS, PYS attaches them to the Google Tag on every page. When the visitor changes their consent, the tag updates immediately.
Alternative 1: PixelYourSite + another consent plugin
PYS exposes filter hooks any consent plugin can call to tell PYS the visitor’s choice for Google Analytics and Google Ads separately. The two are independent — a visitor might accept analytics but decline ad personalisation.
Find the exact filter names on PixelYourSite Pro → Consent → Filters (the in-plugin reference lists every supported hook for every tag, including Google).
Your consent plugin’s developer wires their consent state into those filters. Most major WordPress consent plugins already include built-in PYS support; ask the vendor before writing custom code.
Alternative 2: Fire Google tags with consent already granted
For sites where the consent plugin blocks the Google Tag script from loading until consent is given, PYS doesn’t need to send denied. The tag only runs when consent is already there.
Where: PixelYourSite Pro → Google Analytics → your GA4 ID → Fire Google tags with consent mode granted.
Enable it, and PYS sends all four signals as granted on every event.
Use this only when:
- Your consent plugin uses script blocking — the Google Tag literally doesn’t execute pre-consent.
- Your traffic isn’t subject to GDPR and you don’t want a consent banner.
It’s the wrong path if the Google Tag fires before consent. In that case visitors get tracked as granted without their opt-in, which is a GDPR violation.
Clickthrough for cookieless conversions
Google Consent Mode Tracking Improved with Pass Through Option
Google Consent Mode Tracking Improved with Pass Through Option
When ad_storage is denied, Google can’t drop cookies. Without cookies, you lose conversion attribution for that visitor — Google can’t tie the click on the ad to the purchase on your site.
Google’s workaround is cookieless conversion attribution: instead of a cookie, the click identifier (gclid) travels in the URL, and the gtag sends a server-side ping when the conversion happens. PYS supports this through its Clickthrough feature.
Enable Clickthrough on your Google Tag settings. When ad_storage is denied, PYS still sends the conversion to Google Ads with the click ID pulled from the URL. Google attributes the conversion using modelling instead of cookie matching. You recover the conversions Consent Mode would otherwise lose.
This is most valuable for sites that run paid Google Ads and have a high consent-decline rate. It does nothing for organic traffic.
Verify it works
Open tagassistant.google.com. Connect to your site, click the Consent tab. You’ll see the four signals listed with their current values.
- On first load (before the visitor interacts with the banner): all four should be
deniedfor EU traffic. - After accepting: the signals you accepted should flip to
granted. - After declining: signals stay
denied. Tag still fires, but Google treats the data accordingly.
Test in an incognito window so no prior consent is cached.
Things to know
- Two independent signals for Google. PYS treats
analytics_storage(Google Analytics) andad_storage/ad_user_data/ad_personalization(Google Ads) as separate per-tag consent. A visitor can accept analytics but decline ad personalisation, and PYS will reflect that on each tag’s events. - Consent Mode doesn’t stop the tag firing. The Google Tag still loads and pings Google on every page. The signal tells Google what it can do with the data, not whether to receive it.
- Modeling kicks in around 1,000 ad clicks per country per 7 days. Below that volume, Google may not have enough denied-consent traffic to model accurately. Small advertisers see less benefit.
- Server-side GA4 events follow the same consent. PYS-driven GA4 Measurement Protocol events respect the same consent signal as the browser pixel. No separate setting.
- Updating consent later. When a visitor changes their mind via your banner, ConsentMagic fires the
updatecommand to the Google Tag immediately. No page reload required.
