Velo reads the visitor's country at the edge and applies the right regime on its own: opt in across the EEA and the UK, opt out for US state laws, a light notice everywhere else.
One snippet,
then a dashboard.
Add one script tag, drop in a Google Tag Manager template, and you are done. Banners, regions, categories and Consent Mode v2 are configured in the dashboard, so the code you ship never has to change again.
Paste this into Claude, Cursor, Copilot or any coding agent and it installs Velo for you.
# Install Velo — cookie banner + Google Consent Mode v2
You are installing Velo, a consent management platform, on the user's
website. There are two install paths. Prefer Google Tag Manager
whenever the site runs it — one tag in the container, no code on the
page. The direct snippet is the fallback for sites without GTM.
## Steps
1. Check whether the site runs Google Tag Manager: look for a
GTM-XXXXXXX container id, a googletagmanager.com/gtm.js request,
or a first party proxy of it, in the page source or codebase.
2. GTM present? Install through it (recommended). In the container:
- Templates → Tag Templates → New → ⋮ → Import template.tpl
from github.com/ampliodata/velo-cmp (Velo CMP).
- Create a tag from the template and set the user's Velo site id;
pick the light or dark theme.
- Fire it on the Consent Initialization – All Pages trigger.
Never Initialization or All Pages — both run too late for
consent defaults.
- Preview, then Submit and Publish.
Full guide: https://veloconsent.com/google-tag-manager
3. No GTM? Place this snippet in the <head>, before any analytics or
marketing tags — that order matters, Velo must set consent
defaults first:
<script src="https://veloconsent.com/v1/velo.js"
data-velo-site="YOUR_SITE_ID" defer></script>
The platform guides below show exactly where it goes.
4. Replace YOUR_SITE_ID with the user's site id from the Velo
dashboard. If they do not have one yet, send them to
https://veloconsent.com/get-started
5. Install ONE path, never both — two installs means two banners.
## Platform guides
| Platform | Guide |
| --- | --- |
| WordPress | https://veloconsent.com/wordpress |
| Shopify | https://veloconsent.com/shopify |
| Webflow | https://veloconsent.com/webflow |
| Framer | https://veloconsent.com/framer |
| Wix | https://veloconsent.com/wix |
| Squarespace | https://veloconsent.com/squarespace |
| Drupal | https://veloconsent.com/drupal |
| HubSpot | https://veloconsent.com/hubspot |
| Square Online | https://veloconsent.com/square |
| Google Tag Manager | https://veloconsent.com/google-tag-manager |
| Duda | https://veloconsent.com/duda |
| Shopware | https://veloconsent.com/shopware |
| BigCommerce | https://veloconsent.com/bigcommerce |
| Custom stack or anything else | https://veloconsent.com/developers |
## Verify
- The banner renders on a fresh page load.
- Before the visitor chooses, Google consent defaults are denied in the
EEA and the UK.
- In a GTM install, the Velo tag fires on Consent Initialization before
every other tag.
- Marketing and analytics tags fire only after consent is granted.
- window.Velo is defined, and Velo.open() reopens the preferences
panel.
More context for agents: https://veloconsent.com/llms.txt
Everything an AI assistant needs to know about Velo, in two plain text files.
https://veloconsent.com/llms.txt https://veloconsent.com/install.md
The consent layer behind 100+ marketing teams.
Live in two lines.
Paste the tag once, near the top of your head element. Velo loads asynchronously, blocks every tag until the visitor decides, and applies the right regional regime on its own.
Nothing Fires
Before A Choice
What happens when your page loads.
Three phases run in order, so nothing fires before your visitor has made a choice.
The snippet defers
Velo loads asynchronously and never blocks your render. The region is resolved at the nearest Cloudflare edge before the page finishes painting.
Tags wait for a choice
Every tag is gated by category. Analytics fires on analytics consent, your pixels fire on advertising consent, and nothing leaks before the visitor decides.
Consent Mode v2 fires
Default and update calls fire in the order that modelling depends on, so declined visitors are modelled reliably and your reports stay whole.
A tag template,
not a tag rewrite.
Import the Velo template into your Google Tag Manager workspace once. It reads consent state straight from the data layer and gates every tag by category, so analytics fires on analytics consent and your pixels wait for advertising consent.
Read consent,
react to changes.
One global queue, a handful of methods. Ask Velo for the current state, listen for updates, or reopen the preferences panel from anywhere on the page.
Returns the current consent payload, synchronously. Returns the pending default before a choice is made.
Runs your callback the moment consent is set, and again on every change. Perfect for loading a tag the instant its category is allowed.
Reopen the preferences panel from your own button or footer link, so visitors can change their mind without hunting for it.
The region resolved at the edge. Use it to branch your own logic without a geo lookup.
Served from
the edge.
Velo runs on Cloudflare's global edge, so the banner is decided and painted near the visitor rather than round tripping to a far off server. The region is resolved at the edge too.
What's new
in Velo.
Recent releases of the consent layer. Each one rolls out to every site running Velo on its own, so the snippet never changes.
A third banner style joins the bar and the modal: an in page block that lives in your layout instead of floating on top of it, built for Webflow, Wix and sites that block overlays.
Consent state is passed to Google the way its modelling expects, so declined visitors are modelled more reliably and your reports stay whole.
Every accept, reject and preference is written to an anonymised, time stamped log, now exportable on demand and ready for a regulator or a client question.
Two lines now.
Nothing to maintain.
Add the snippet, import the GTM template, and let the dashboard handle
the banner, the regions and Consent Mode v2. Live in minutes.