Free scan Install guides Developers Compare CMPs About Support Contact
Get Velo

Already have an account? Log in

Google Tag Manager install guide

Add Velo to
Google Tag Manager.

Install the Velo cookie banner and Google Consent Mode v2 with one tag imported from the Velo CMP template. No code on the page, no Custom HTML. Configure the tag, set the trigger, publish. About ten minutes end to end.

Install through
Google Tag Manager.

One tag, no code on the page, and your whole measurement stack stays in one place.

Six steps · about ten minutes

  1. 01

    Import the Velo CMP template

    Download template.tpl from github.com/ampliodata/velo-cmp. In your container, open Templates → Tag Templates → New, then open the ⋮ menu at the top right of the editor and choose Import. Pick the file you just downloaded, save, and the Velo CMP tag is ready to configure. Velo CMP is awaiting its listing in Google’s Community Template Gallery. Until it lands, importing the file is the way in, and the tag behaves identically.

    TemplatesTag TemplatesNewImport
    tagmanager.google.com
    The Tag Templates list in Google Tag Manager with the Velo CMP template imported
  2. 02

    Create the tag

    Go to Tags → New and choose the Velo template. Enter your Velo site ID , lowercase letters, digits and dashes, exactly as the dashboard shows it, then pick the light or dark theme to match your site. Leave the API endpoint blank unless Velo issued one for your account: the banner and Consent Mode work fully without it, and when it is set the dashboard's remote configuration takes over copy and categories.

    TagsNewVelo CMP template
    tagmanager.google.com
    A new tag in Google Tag Manager using the Velo Consent Banner template, site ID filled in
  3. 03

    Tick the two recovery options

    Under Advanced, two checkboxes are worth switching on. url_passthrough lets ad click, client and session identifiers survive navigation through URL parameters while storage consent is denied, and it recovers attribution for the traffic your banner would otherwise lose. ads_data_redaction additionally drops ad click identifiers and goes cookieless on requests while ad_storage is denied, which is recommended for strict EU setups. The copy override fields can stay empty; prefer editing copy in the Velo dashboard.

    Advancedurl_passthroughads_data_redaction
    tagmanager.google.com
    The Advanced section of the Velo tag with url_passthrough and ads_data_redaction ticked
  4. 04

    Fire it on Consent Initialization – All Pages

    This is the trigger Google provides specifically for consent defaults: it runs before every other trigger in the container, which is what guarantees the denied default is in place before any measurement tag can fire. Do not use Initialization or All Pages. Both run too late. This one choice is most of what a correct consent install comes down to.

    TriggeringConsent Initialization – All Pages
    tagmanager.google.com
    The Choose a trigger list with Consent Initialization – All Pages selected
  5. 05

    Turn on consent overview under Admin

    In Admin → Container Settings, tick Enable consent overview. This switches the container’s consent features on: the shield icon in the Tags view that shows each tag’s consent status, and the consent state readings you are about to check in Preview. Do it before you open Preview. Without it, GTM gives you no consent overview to debug against.

    AdminContainer SettingsEnable consent overview
    tagmanager.google.com
    Container Settings in Google Tag Manager with Enable consent overview ticked
  6. 06

    Preview, then publish

    In Preview, check three things: the Velo tag fired on Consent Initialization before every other tag; the Consent tab in Tag Assistant shows every signal except security_storage denied by default from an EEA, UK or Swiss location; and accepting or declining in the banner flips the matching update row while a velo_consent_update event lands in the data layer. Then Submit → Publish. The banner is live on the next page load, and the Velo console flips to installed on its own when the first real signal arrives.

    PreviewSubmitPublish
    tagmanager.google.com
    The Submit Changes screen in Google Tag Manager with Publish and Create Version selected

Gate any tag
on the decision.

Beyond Consent Mode, you can hold any tag until a category is granted — three small pieces in the same container.

velo_categoriesData Layer Variable
velo_consent_updateCustom Event trigger
GA4 event tagfires when analytics ✓
A variableCreate a Data Layer Variable named velo_categories. It is an object of booleans: analytics, ads, functional, personalization , reflecting the visitor's current decision.
A triggerCreate a Custom Event trigger on velo_consent_update with a condition on the category you care about, for example, velo_categories.analytics equals true.
Attach itPut that trigger on the tag you want gated. Because the event also fires for returning visitors with a stored decision, the tag fires on every pageview where consent is granted, with no "only fires once after the click" gap.

Google Tag Manager questions,
answered.

What teams installing on Google Tag Manager ask first.

The banner does not appear.

Almost always one of two things: the tag is not on the Consent Initialization – All Pages trigger, or the container version was never published. Open Preview and check where the tag fires. The fix is usually visible in ten seconds.

Signals show granted by default in the EU.

Something else is racing Velo: an old CMP tag, a consent default snippet in a Custom HTML tag, or a gtag default hard coded in the page. Only one thing in the stack may set defaults. Find the other one and remove it.

Two banners show at once.

The direct velo.js snippet is also installed in the page markup. Use one install path, not both. If both are present, the attributes on the inline snippet win over the tag's configuration, which makes debugging confusing. Remove one.

My gated tag never fires.

Check the event name on the Custom Event trigger is exactly velo_consent_update, underscores and no typos, and that regex matching was not switched on by accident. Then confirm the condition reads the velo_categories variable, not the event name.

Is a Tag Manager install different from the snippet install?

No. Same banner, same Consent Mode wiring, same audit log, same dashboard. The template route just keeps the whole measurement stack in one container, which is why it is the path we recommend on every platform guide.

Can an agent do this for me?

Yes. Copy the prompt in Install with agents, just below, into Claude, ChatGPT, Cursor or whichever assistant you already use. It carries the template, the trigger, the gating pattern for tags Consent Mode does not cover, and the checks the agent has to run before it tells you the job is done.

Or hand it
to an agent.

Copy the prompt into Claude, ChatGPT, Cursor or whichever assistant you already use. It carries everything on this page: both routes, the order the tags have to load in, and the checks that prove it worked.

The prompt

Paste it in as your first message, then swap your-site-id for the ID on your Velo dashboard. Everything else the agent needs is already written into it, including what to check before publishing.

Install prompt · Google Tag Manager
# Install Velo in Google Tag Manager: banner + Consent Mode v2 You are installing Velo, a consent management platform, in my Google Tag Manager container. Velo sets the Consent Mode v2 defaults before any other tag fires, shows the cookie banner, and records every decision. Nothing goes into the page markup. Ask me for these before you touch the container: - My Velo site id. It is in the Velo dashboard. No account yet? Send me to https://veloconsent.com/get-started and wait for the id. - The container id, and whether I can publish or only submit for review. - Which consent tool is live on the site today. ## The install 1. Templates → Tag Templates → New, then ⋮ → Import. Import the template.tpl from github.com/ampliodata/velo-cmp ("Velo CMP"). 2. Create a tag from that template. Set my Velo site id and pick the light or dark theme. 3. Fire it on the "Consent Initialization – All Pages" trigger. Not Initialization, not All Pages. Both run too late to set consent defaults. 4. Preview, then Submit and Publish. ## Gating tags that are not Google tags GA4, Google Ads and Floodlight need nothing extra. Their built in consent checks hold and release them on their own. For a chat widget, a heatmap or a pixel without Consent Mode support: 1. Create a Data Layer Variable named velo_categories. It is an object of booleans: analytics, ads, functional, personalization. 2. Create a Custom Event trigger on velo_consent_update, with a condition such as velo_categories.analytics equals true. 3. Put that trigger on the tag. The event also fires for returning visitors with a stored decision, so the tag is not limited to the one pageview where the click happened. ## Rules - Install one path only. If the velo.js snippet is also in the page markup, remove it. Two installs means two banners. - Only one tool may set Consent Mode defaults. If another CMP tag is in the container, pause it before publishing Velo. Leave no hard coded gtag('consent', 'default', ...) in the page or in a Custom HTML tag. - Change no other tag, trigger or variable. Tell me first if one has to move. ## Verify, then report back - The banner renders on a fresh load in a private window. - Before I choose, every consent signal except security_storage is denied from an EEA, UK or Swiss location. - Accepting and rejecting each flip the matching signals, and a velo_consent_update event lands in the data layer. - Google tags stay in their cookieless mode until consent is granted, and any tag gated by hand fires only after it. - window.Velo is defined, and Velo.open() reopens the preferences panel. - On a Tag Manager install, Tag Assistant shows the Velo tag firing on Consent Initialization ahead of every other tag. Tell me what you changed, where you changed it, and what each check showed. If a check fails, fix it and run the checks again. Full guide: https://veloconsent.com/google-tag-manager More context for agents: https://veloconsent.com/llms.txt

Working with an agent that reads the web? Point it at veloconsent.com/llms.txt and /install.md for the same context in plain text.

From the journal.

How to check your cookie banner is sending the Consent Mode v2 signal Two reads settle it: the four consent signals inside the browser, and the state that actually reached Google on the request. 26 July 2026
What consent modelling is, and when Google actually switches it on Consent modelling estimates what declined visitors did. 11 August 2026
How to pass the consent signal to a server side tagging container Consent is decided in the web container and rides to the server on the request. 27 July 2026

Your banner, your consent,
your data — all in one place.

Scan your site →
Pages Free scan Product Agencies Pricing Developers Install guides Compare CMPs
Company About Velo Blog Help Contact
Account Sign up Log in Get early access
GDPR CCPA
All rights reserved
© 2026 by Amplio Data