How to set up Google Consent Mode v2 on WordPress
Set up Google Consent Mode v2 on WordPress with the free Omea Consent plugin: denied defaults before any Google tag, updates on every choice, no code.
On this page
Google Consent Mode v2 tells Google tags what the visitor agreed to, using four signals: ad_storage, analytics_storage, ad_user_data and ad_personalization. Since March 2024 Google has required the two newer signals for traffic from the European Economic Area – without them, remarketing audiences and conversion measurement in Google Ads stop working for those visitors.
Omea Consent sends Consent Mode v2 on every WordPress page, with no code and no GTM template. New to the topic? Start with What is Google Consent Mode v2?
Set up Consent Mode v2 step by step
- Install Omea Consent Go to Plugins › Add New Plugin, search for Omea Consent, install and activate it. Consent Mode v2 starts working immediately – there is no switch to turn it on.
- Choose advanced or basic mode Open Omea Consent › Settings › Advanced. In the Google Consent Mode v2 card keep Advanced (recommended) or pick Basic, then click Save changes.
- Check your categories On the Categories tab, each card shows which Google consent types it controls. Edit the labels and descriptions if you like – the mapping stays the same.
- Add your Google tags Keep GA4, Google Ads or GTM where they are, paste them into Omea Consent › Scripts with a category, or – with Omea Consent Pro – enter the tag ID under Integrations.
- Remove other Consent Mode code If your theme, GTM container or another plugin also sets
gtag('consent', 'default', …), remove it so there is one source of truth. - Test it Open the site in a private window and check the
gcsparameter on a Google request:G100before consent,G111after Accept all.
What the plugin does on each page
-
Defaults first. At the very top of
<head>– before any Google tag – it sets every consent type to denied:gtag('consent', 'default', { ad_storage: 'denied', ad_user_data: 'denied', ad_personalization: 'denied', analytics_storage: 'denied', functionality_storage: 'denied', personalization_storage: 'denied', security_storage: 'granted', wait_for_update: 500 });It also turns on
ads_data_redaction. -
Returning visitors. A saved choice is applied straight away with
gtag('consent', 'update', …)– but only while it is still valid: not older than the validity you set (180 days by default), and given for the current banner texts. -
On every choice. The plugin sends an update and pushes an
omea_consent_updateevent to the dataLayer, so GTM triggers can react.
How banner categories map to Google signals
| Omea category | Google consent types |
|---|---|
| Necessary | security_storage (always granted) |
| Functional | functionality_storage, personalization_storage |
| Statistics | analytics_storage |
| Marketing | ad_storage, ad_user_data, ad_personalization |
A visitor who accepts Statistics but not Marketing lets GA4 use cookies, while Google Ads stays in cookieless mode.
Advanced or basic?
Advanced (the default) loads Google tags straight away with consent denied, so they send cookieless pings and Google can model conversions from people who decline. Basic holds Google tags until consent, so nothing reaches Google before a choice. The trade-offs are in Consent Mode advanced vs basic: which should you use?
Using Google Tag Manager?
The defaults are printed before GTM, so every Google tag inside the container reads them. You can also choose whether GTM loads before or after the first choice – see Google Tag Manager consent mode on WordPress.
Region settings
The denied defaults apply to every visitor, wherever they are. Developers who want region-specific defaults can add a region with the omea_consent_google_consent_defaults filter.
Next step
Check that Consent Mode v2 is working – it takes two minutes with your browser’s developer tools.