Skip to content
Open workspace
Browse help topics
Basic and advanced consent mode

Choose when your Google tags load.

Choose whether Google tags load straight away with consent denied, or wait until the visitor consents. Then set up basic consent mode if you need it.

3 min readReviewed 1 November 2026

Compare the two modes

What each mode does
ModeBefore the visitor choosesAfter the visitor chooses
Advanced (Velo’s default)Google tags load straight away. Velo sets the signals to denied, and Google receives cookieless pings.Velo updates the signals on each choice.
BasicGoogle tags do not load at all. Velo sends no Consent Mode commands.Velo releases the Google tags for the categories the visitor allows.

In advanced mode, the signals start as denied in opt-in regions. Turn on Require opt-in in every region to start them as denied everywhere.

The trade-off: basic mode sends Google nothing before consent, so Google has nothing to model from. Advanced mode keeps cookieless measurement.

Turn on basic consent mode

  • Direct install: add data-velo-consent-mode="basic" to the Velo script tag. Or add ?consent_mode=basic to the end of its src.
  • Google Tag Manager: tick Basic consent mode in the Velo CMP tag, then publish the container.
Example only · use your own site ID
<script src="https://cdn.veloconsent.com/v1/velo.js"
  data-api="https://app.veloconsent.com"
  data-velo-site="YOUR-SITE-ID"
  data-velo-consent-mode="basic"
  async></script>

Velo still sets its Google developer ID. Because it sends no Consent Mode commands, your Google tags must not load until the visitor consents. Block them as shown below.

Block Google tags until consent

Direct install

Change each Google tag’s type to text/plain and add the Velo category it belongs to. Use analytics for Google Analytics and ads for Google Ads. Velo releases the tag when the visitor grants that category.

Example only · use your own tag ID
<script type="text/plain" data-velo-category="analytics"
  src="https://www.googletagmanager.com/gtag/js?id=G-XXXXXXX" async></script>
<script type="text/plain" data-velo-category="analytics">
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());
  gtag('config', 'G-XXXXXXX');
</script>

Google Tag Manager

Fire your Google tags on the visitor’s choice instead of All Pages.

  1. Create a Data Layer Variable with the name velo_categories.analytics.
  2. Create a Custom Event trigger for the event velo_consent_update. Set it to fire when that variable equals true.
  3. On each Google Analytics tag, replace the All Pages trigger with this one.
  4. For Google Ads tags, repeat these steps with velo_categories.ads.
  5. Publish the container.

Velo pushes velo_consent_update each time consent takes effect, including on a returning visitor’s next page views. Once allowed, the tags fire on every page.

Switch back to advanced

Remove data-velo-consent-mode="basic" or the consent_mode=basic parameter. In GTM, untick Basic consent mode and publish.

Then return your Google tags to their usual script type and triggers, so they load straight away again. Consent Mode then controls what they send.

Test basic mode

  • Open the published website in a fresh private window.
  • In the Network panel, check that nothing loads from Google before you choose.
  • Load the page with ?velo_debug=1 and check that the consent mode shows basic.
  • Accept analytics and check that Google Analytics loads.
  • In a new private window, reject everything and check that no Google tag loads.
  • In GTM Preview, check that your Google tags fire on velo_consent_update.