GA4 and Google Ads not blocked before consent despite auto-scan detecting cookies

Hi Consent Pro team,

I’m running Consent Pro v2 on belizeisfun.com (Basic paid plan) and having an issue where GA4 and Google Ads scripts are firing before the user gives consent.

My setup:

  • Consent Pro v2 script is the first script in Webflow Custom Code head

  • GA4 (G-2Z6WFSHPW1) and Google Ads (AW-359338681) are added as normal scripts in the head

  • Meta Pixel and Clarity ARE being blocked correctly before consent :white_check_mark:

  • GA4 and Google Ads are NOT being blocked before consent :cross_mark:

What I’ve tried:

  1. Adding scripts with type="text/plain" and fs-cc-category="analytics" → scripts blocked but never fired after Accept

  2. Adding scripts as normal scripts and running the scan → scan detects _ga and _ga_2Z6WFSHPW1 cookies but GA4 script still fires before consent

  3. Running multiple scans → same result

The scan found 18 trackers including _ga, _ga_2Z6WFSHPW1, _clsk, _clck all categorised correctly under Analytics.

The banner works, consent is recorded, and Meta Pixel + Clarity fire correctly after Accept. The issue is specifically GA4 and Google Ads not being blocked before consent.

Could you please advise the correct method to block GA4 and Google Ads scripts added via Webflow Custom Code head in Consent Pro v2?

Thank you!

Hey @markovukotic32!

The issue almost certainly comes down to attribute syntax — Consent Pro v2 uses different attributes than v1 for blocking scripts. Here’s the quick comparison:

v1 (old):

<script type="text/plain" fs-cc-category="analytics" src="..."></script>

v2 (correct):

<script type="fs-consent" fs-consent-categories="analytics" src="..."></script>

So your GA4 script should look like this:

<script type="fs-consent" fs-consent-categories="analytics" src="https://www.googletagmanager.com/gtag/js?id=G-2Z6WFSHPW1"></script>

And any inline initialization script needs the same treatment:

<script type="fs-consent" fs-consent-categories="analytics">
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-2Z6WFSHPW1');
</script>

For Google Ads, use marketing as the category since it’s an advertising tool:

<script type="fs-consent" fs-consent-categories="marketing" src="https://www.googletagmanager.com/gtag/js?id=AW-359338681"></script>

Two things worth double-checking:

  1. No async on blocked scripts — the docs explicitly warn against this. If your GA4 tag has async, remove it. Consent Pro needs synchronous loading to intercept the script before it fires.

  2. Is your GA4 loaded as a direct script tag, or is it going through Google Tag Manager? If it’s via GTM, script-level attributes won’t work at all — GTM-loaded scripts bypass them entirely. That requires a separate GTM + Consent Mode v2 workflow.

The consent component body looks perfectly set up from what you shared, but we need to see the <head> scripts to confirm the exact cause. Could you share the head section of your HTML, or a staging URL and read-only Webflow link? :folded_hands: