---
title: "Firing a GTM Tag on Live Consent Update"
canonical_url: https://ot.webclat.com/qa/gtm-consent-update-trigger
description: "You usually don't need a custom trigger for this - GTM's built-in per-tag Consent Settings already re-fire a blocked tag automatically the moment consent updates. Here's the correct configuration."
source: Webclat | OneTrust Solutions (OneTrust partner, independent consultancy)
---

# How do I fire a GTM trigger the instant a visitor updates their consent choice, without a page reload?

**Short answer:** Most of the time you don't need a manually built trigger for this at all - GTM's own per-tag Consent Settings already re-evaluate automatically the moment a `gtag('consent','update', {...})` call reaches the dataLayer, and any tag that was blocked by a missing consent type fires on its own as soon as that type is granted, with no page reload and no custom listener required.

## Why this happens

A common misunderstanding is building a Custom HTML tag or a manual event listener to "watch" for consent changes, on the assumption GTM needs to be told when to re-check. In reality, every tag with Consent Settings configured is already re-evaluated whenever a matching consent-update push arrives in the dataLayer - that's the built-in behavior, and a hand-rolled listener duplicating it usually just adds a second, competing gate.

## Fix it

1. **Add Consent Settings to each tag that should respect consent** - Open the tag in GTM, go to Advanced Settings > Consent Settings, and add the required consent type(s) - Analytics Storage, Ad Storage, Ad User Data, Ad Personalization - matching what that specific tag actually needs.

2. **Confirm your CMP pushes the update in the shape GTM expects** - The consent-update call needs to reach the same dataLayer GTM listens to, using the standard signal names - this works even without gtag.js loaded separately, since GTM itself processes dataLayer pushes matching this shape.

   ```
gtag('consent', 'update', {
  analytics_storage: 'granted',
  ad_storage: 'denied',
  ad_user_data: 'denied',
  ad_personalization: 'denied'
});
   ```

3. **Only build a Custom Event trigger for a genuinely separate side effect** - If you need something beyond "let this tag fire now" - logging the consent-change event itself, for example - add a Custom Event trigger listening for whatever named event your specific CMP fires alongside the gtag call (check that CMP's own documentation for its event name), rather than trying to hook gtag's internal processing.

4. **Don't wrap the whole container in a one-time load gate** - Gating the entire GTM container behind a single load-time check defeats the automatic re-fire behavior described above - load the container once (behind whatever base consent gate is appropriate) and let each tag's own Consent Settings handle the rest.

5. **Recreate legacy Custom HTML tags that don't expose Consent Settings** - Some older custom tag configurations predate GTM's consent-aware tag types and won't show a Consent Settings section at all - if that's the case, either recreate the tag as a supported type or gate the logic manually inside the HTML itself, since the automatic behavior only applies to tags that expose the setting.

## How to verify it worked

- In GTM Preview mode, load the page with consent denied and confirm the target tag shows as not fired due to consent in the debug panel.
- Accept the relevant category via the banner and confirm the same tag now shows as fired, with no page reload, in the same Preview session.
- Repeat with consent denied again (a fresh session or your consent-preferences UI) and confirm the tag correctly stops firing again.

## Related

- [Why doesn't Google Consent Mode v2's ad_personalization/analytics_storage signal update the way I expect?](https://ot.webclat.com/qa/consent-mode-v2-signal-not-updating)
- [What's the correct pattern to block GA/GTM/AdSense from loading until the visitor accepts cookies?](https://ot.webclat.com/qa/gate-ga-gtm-adsense-behind-cookie-consent)
- [How do I start or stop Hotjar recording dynamically based on the visitor's consent choice?](https://ot.webclat.com/qa/gate-hotjar-recording-behind-consent)

Contact: ot@webclat.com | (813) 694-4451 | https://ot.webclat.com/#contact
