Hi team,
Consent Pro v2, GTM set up as in your guide (Consent Pro Init on Consent Initialization, GA4 Google tag on Consent Updated with an analytics_storage consent check).
What happens
-
The scan linked gtag/js?id=G-XXXX as the resource for _ga and _ga_XXXX (Analytics) and also for _gcl_au and _gcl_ls (Marketing).
-
Analytics only: GTM fires the GA4 tag (Tag Assistant: Succeeded), but gtag.js never loads and no hits are sent.
-
Accept all: GA4 works.
-
I can’t remove the resource from the two Marketing trackers (“At least one resource is required”).
In my tests, gtag.js doesn’t set any _gcl_* cookie with Analytics only, since ad_storage stays denied.
Question
How should this be set up so GA4 loads with Analytics consent alone, while the _gcl_* cookies still show under Marketing in the preferences panel?
Happy to share the domain via DM.
Hey @juicydisorder!
You’ve diagnosed this correctly — the Consent Pro scanner linked gtag.js to both the Analytics trackers (_ga, _ga_XXXX) and the Marketing trackers (_gcl_au, _gcl_ls). The key behavior here is that when a script is assigned to multiple consent categories, it only loads once ALL of those categories are consented. So gtag.js won’t fire until both Analytics AND Marketing consent is granted — even though in your setup (with ad_storage denied), gtag.js wouldn’t actually set those _gcl_* cookies anyway. The scanner just can’t determine that from static analysis.
There are two ways to fix this:
Option A is reassigning in the dashboard (recommended). In the Consent Pro app, go to the Trackers/Scripts section, find _gcl_au and _gcl_ls, and change their assigned resource away from gtag.js. The “at least one resource is required” constraint means you’ll need to assign those trackers to a different resource first — typically a Google Ads Conversion Linker script, or another marketing-related script that actually sets those cookies. The exact UI steps aren’t fully covered in our docs, so if you hit friction, let us know and we can loop in the team.
Option B is a manual override via attributes. If you’re using async loading, you can explicitly set gtag.js to only require Analytics consent:
<script type="fs-consent" fs-consent-categories="analytics" src="https://www.googletagmanager.com/gtag/js?id=G-XXXX"></script>
This way gtag.js loads on Analytics consent alone. Your Marketing tags in GTM will still respect their own ad_storage consent check — they just won’t fire conversions until Marketing consent is granted, which is the correct GDPR behavior.
On the _gcl_* cookies showing under Marketing in the preferences panel — that’s accurate for user-facing transparency purposes. It’s only the resource assignment that needs adjusting, not the category display.
Could you share your staging URL via DM? We’d like to verify the current scanner assignments to confirm which approach fits best. 
Thanks Finn, Option A worked. I set _gcl_au and _gcl_ls to https://www.googleadservices.com and https://googleads.g.doubleclick.net and kept gtag.js only on the _ga trackers. GA4 now loads with Analytics consent alone, the _gcl_* cookies still show under Marketing, and the change survived rescans. So no need for the staging URL anymore.
One follow-up: on another site with the same GTM setup, the scan linked gtm.js itself as the resource of every tracker it found (GA4, Google Ads and LinkedIn). Published like that, it would have blocked the whole container until all categories were accepted. I corrected it by hand the same way.
This is where I’m not sure I’m using Consent Pro as intended. Cookiebot, Usercentrics and OneTrust all recommend keeping GTM tags out of auto-blocking and letting GTM’s consent checks do the gating. In Consent Pro every tracker needs a resource, so on a GTM site the tags are gated twice, and the scan has to be corrected by hand after every scan. Is there a recommended setup for GTM sites where the Manager only documents the cookies and GTM does the gating? And is gtm.js as resource expected, or something you can fix on the scanner side?