ConsentPixel – Privacy · Verified

HomeJoomla › Google Consent Mode v2 on Joomla
Guide · Joomla · Google Consent Mode v2

How to Set Up Google Consent Mode v2 on Joomla (2026)

Google Consent Mode v2 is what keeps Google Ads and GA4 working for your EEA/UK visitors — but Joomla's built-in Privacy and cookie extensions don't set its signals. Here's the exact setup, where the code goes in your template, and how to verify it's actually firing.

⚙️ Quick reference
What it is
A Google framework that passes a visitor's consent state to Google tags (Ads, GA4)
Who needs it
Any site using Google Ads or GA4 with EEA / UK visitors
The Joomla gap
Joomla's Privacy component & cookie extensions manage banners, not Consent Mode signals
The 4 signals
ad_storage · analytics_storage · ad_user_data · ad_personalization
Two modes
Basic (nothing loads pre-consent) vs Advanced (cookieless pings)
Where it goes
High in your template's <head>, before your Google tag loads
The short version. To set up Google Consent Mode v2 on Joomla, load the four consent signals — ad_storage, analytics_storage, ad_user_data, ad_personalization — set to denied by default, before Google Tag Manager or GA4 fire, then update them to granted when the visitor consents. On Joomla that means placing the consent code high in your template's <head> (before <jdoc:include type="head" />), or using a CMP / consent pixel that manages the order for you.

What is Google Consent Mode v2 — and does your Joomla site need it?

Google Consent Mode v2 is a small JavaScript API that tells Google's tags (Google Ads, GA4, Floodlight) whether a visitor has consented to analytics and advertising storage. Based on that signal, the tags either behave normally, or fall back to a limited, cookieless mode. Since 2024, Google has required these signals for advertisers serving the EEA and UK — without them, remarketing audiences and conversion measurement degrade.

If your Joomla site runs Google Ads or GA4 and gets any EEA/UK traffic, you need it. If you'd like the full background on the four parameters and Basic vs Advanced before the Joomla specifics, start with our Google Consent Mode v2 overview. This guide focuses on the part that trips Joomla users up: where the signals go and in what order.

Why Joomla needs special handling

Two Joomla-specific issues make this harder than on a hosted platform:

  • The extension gap. Joomla's built-in Privacy component and popular cookie extensions show a consent banner and log consent, but most of them do not emit Google Consent Mode signals. A banner that only hides a message — while your GA4 tag still fires — leaves Consent Mode unset.
  • Load order. Consent Mode only works if the default (denied) signal runs before your Google tag loads. In Joomla, tags are often injected into the head by a plugin or template override, so you have to make sure your consent code is placed ahead of them.
Consent Mode ≠ blocking trackers

Consent Mode tells Google's tags how to behave. It does not stop non-Google trackers — Meta Pixel, TikTok, Hotjar — from firing before consent. For those (and for US wiretap/CIPA exposure), you need actual pre-consent blocking, not just Consent Mode signals. You can scan your Joomla site free to see exactly what fires before a visitor consents.

The four consent signals you must set

All four are set to denied by default, then updated to granted once the visitor opts in:

ad_storage

Cookies/storage for advertising (Google Ads, remarketing).

default: denied
analytics_storage

Cookies/storage for analytics (GA4 measurement).

default: denied
ad_user_data

Whether user data may be sent to Google for advertising.

default: denied
ad_personalization

Whether data may be used for personalized ads / remarketing.

default: denied

Method 1 — the easy path: a consent pixel or CMP

The simplest, update-proof route is to let a consent platform set the signals and the load order for you, so you never edit template files. ConsentPixel installs on Joomla with one script tag, sets all four Consent Mode v2 parameters in the correct order, and blocks non-Google trackers before consent too — closing both the signal gap and the extension gap in one step. If you'd rather wire it by hand, use Method 2 or 3.

Method 2 — manual: edit your Joomla template <head>

Open your active template's index.php

e.g. templates/cassiopeia/index.php. Work in a child template or keep a backup — editing the parent directly is overwritten on template updates (see the mistakes section).

Paste the default (denied) signal high in the head

Immediately after <head> and before <jdoc:include type="head" />, so it runs before any Google tag the head injects.

Ensure your GA4 / Ads / GTM tag loads after it

It usually does via jdoc:include type="head" or a body-end plugin — just don't place it above the consent default.

Wire your banner's "Accept" to the update call

Your consent banner's accept button must call the update (granted) signal.

Clear Joomla cache (and any CDN)

System → Clear Cache, plus your CDN/host cache, so the new template head is served.

templates/your-template/index.php — inside <head>, before jdoc head
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}

// 1) DEFAULT — deny everything until the visitor consents
gtag('consent', 'default', {
  'ad_storage': 'denied',
  'analytics_storage': 'denied',
  'ad_user_data': 'denied',
  'ad_personalization': 'denied',
  'wait_for_update': 500
});
</script>

Then, from your consent banner's Accept handler, update the signals:

on "Accept" — grant consent
// 2) UPDATE — call this when the visitor accepts
gtag('consent', 'update', {
  'ad_storage': 'granted',
  'analytics_storage': 'granted',
  'ad_user_data': 'granted',
  'ad_personalization': 'granted'
});

Method 3 — via Google Tag Manager on Joomla

If you deploy tags through GTM on Joomla, set Consent Mode inside the container instead of the template: add a Consent Initialization – All Pages trigger with a tag that pushes the default (denied) signals, then have your CMP fire the update on accept. Make sure the GTM container snippet itself still loads after the consent default — the same load-order rule applies.

Basic vs Advanced Consent Mode on Joomla — which to choose

 BasicAdvanced
Google tags before consentDon't load at allLoad, send cookieless pings
Data before consentNoneAnonymised / modelled
Measurement continuityLowerHigher (conversion modelling)
Best forStrictest interpretationMost advertisers
Joomla setupBanner blocks the Google tag until consentConsent default = denied; tags load and adjust on update

Most Joomla sites running Google Ads pick Advanced for the modelling benefits. If your legal guidance calls for no Google requests at all before consent, use Basic and block the tag until accept.

How to verify it's actually working

  • Google Tag Assistant — load your page; the consent state should read denied before you accept and granted after.
  • Browser DevTools → Network — filter for Google requests and check the gcs parameter: roughly gcs=G100 before consent, gcs=G111 after.
  • GA4 DebugView — confirm events only flow with storage granted (Advanced will still show modelled pings).
  • GTM Preview — the Consent tab shows each signal's state as the page loads and after accept.

Common Joomla mistakes

  • Consent code placed after the Google tag. If the default signal runs after GA4/GTM, it's too late — it must be first in the head.
  • Joomla cache serving the old template. Clear System cache and your CDN after editing index.php.
  • A cookie extension that injects GA4 itself, bypassing your ordering — check whether an extension is adding the tag before you do.
  • Relying on Joomla's Privacy component for the signals — it manages data requests and consent records, not Consent Mode.
  • Editing the parent template so a Joomla/template update wipes it — use a child template, a plugin, or a CMP.
  • Never wiring "Accept" to the update call — the banner closes but consent is never granted, so Google tags stay limited forever.

See what fires on your Joomla site before consent

Consent Mode signals Google — but Meta Pixel, TikTok and session-replay tools can still fire before your visitor agrees. Scan your Joomla site free and see exactly what loads pre-consent, in about 10 seconds.

Scan my Joomla site free →

No account needed · then a 14-day free trial, no credit card

Frequently asked questions

Does Joomla's Privacy component handle Google Consent Mode v2?

No. Joomla's built-in Privacy component manages data-subject requests and consent logging; it does not emit the four Google Consent Mode v2 signals. You need to set those yourself (template, GTM, or a CMP), even if you keep using the Privacy component alongside.

Is Google Consent Mode v2 mandatory for Joomla sites?

It's a Google requirement, not itself a law: if you use Google Ads or GA4 to reach EEA/UK visitors, Google requires the v2 signals for remarketing and full conversion measurement to keep working. Sites with no Google advertising and no EEA/UK traffic are less affected. This is general information, not legal advice.

Where exactly does the code go in Joomla?

The default (denied) consent call must run before your Google tag. In practice that's high in your active template's <head> — after <head> and before <jdoc:include type="head" /> — or inside GTM via a Consent Initialization trigger. The update (granted) call fires from your banner's Accept button.

Will a Joomla or template update erase my changes?

If you edit the parent template's index.php directly, yes — an update can overwrite it. Use a child template, add the code through a plugin or Custom HTML, or use a consent platform that injects it independently of the template.

Does Consent Mode make my Joomla site GDPR compliant?

No. Consent Mode is one technical piece — it adjusts Google's tags based on consent. You still need a valid consent banner, a lawful basis, and, for non-Google trackers, actual pre-consent blocking. Consent Mode signals Google; it doesn't stop Meta Pixel or other third-party tags from firing. This is general information, not legal advice.

Should I choose Basic or Advanced Consent Mode?

Most advertisers choose Advanced, which loads Google tags in a cookieless mode before consent and enables conversion modelling. Choose Basic if your guidance requires no Google requests at all until the visitor consents. Both are valid; the difference is whether anonymised pings are sent pre-consent.

Not legal advice. This is a general technical guide to configuring Google Consent Mode v2 on Joomla, not legal advice, and it does not guarantee compliance with any specific law. Requirements vary by jurisdiction and by how your site is built; consult a qualified professional about your specific situation. Google's product behaviour and Joomla's template structure can change — verify against the current Google Tag Platform and Joomla documentation.
Scroll to Top