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
-
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.
Templates→Tag Templates→New→Importtagmanager.google.com
-
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.
Tags→New→Velo CMP templatetagmanager.google.com
-
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.
Advanced→url_passthrough→ads_data_redactiontagmanager.google.com
-
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.
Triggering→Consent Initialization – All Pagestagmanager.google.com
-
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.
Admin→Container Settings→Enable consent overviewtagmanager.google.com
-
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.
Preview→Submit→Publishtagmanager.google.com
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.
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.
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.
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.
Your banner, your consent,
your data — all in one place.


