ENPL Log in Start free
// Integrations / Google Tag Manager

Visitant via Google Tag Manager

Already running Google Tag Manager? Then you can add Visitant without touching the site code: one Custom HTML tag, one trigger, publish. The one thing to get right is that the tag fires on every page, not only after consent - the script needs none.

Time: 10 minCode: 1 lineCookies: 0

What you need

  • A GTM web container already installed on the site, and Publish rights in that container.
  • A free Visitant account with your domain added, for example yoursite.com.
  • About 10 minutes, including the Preview check.

Setup in 5 steps

  1. 01 Create a Custom HTML tag

    In your GTM workspace click Tags - New. Click the Tag Configuration box and choose Custom HTML. Name the tag Visitant so you find it later.

    Leave Support document.write unchecked. Our script does not use it.

  2. 02 Paste the Visitant line

    Paste the line below into the HTML field and replace yoursite.com with your domain. GTM inserts the script into the page itself, so the defer attribute does nothing here - the script is loaded asynchronously anyway and it does not matter.

    <script defer data-domain="yoursite.com" src="https://annuora.com/v.js"></script>
  3. 03 Set the trigger to All Pages - and no consent

    Click the Triggering box and choose the built-in All Pages trigger (type Page View). Do not attach the tag to a consent-granted event or a cookie banner trigger: Visitant sets no cookies and stores no IP addresses, so it needs no consent, and gating it would simply throw away every visitor who ignores the banner - in our experience that is a large share of visits. If you use GTM consent mode, open Advanced Settings - Consent Settings in the tag and select No additional consent required (the exact wording may differ in your version).

    Consent mode built-in checks apply to Google tags. A Custom HTML tag fires when its trigger fires, so the trigger is what decides.

  4. 04 Check it in Preview

    Click Save, then Preview in the top right. Tag Assistant opens in a new tab; enter your site's URL and click Connect. Your site opens with the debugger attached. Back in Tag Assistant, click Continue and look at the Tags Fired list for the Container Loaded event - Visitant should be there. While the Preview tab is open, your dashboard already shows 1 current visitor.

  5. 05 Publish the container

    Click Submit in the top right. Keep Publish and Create Version selected, give the version a name such as Add Visitant, and click Publish. Until you publish, the tag exists only in your workspace and real visitors are not counted.

    One honest note on weight: Google's own web.dev guide puts the GTM library alone at about 33 KB compressed, and the median container at about 50 KB. The Visitant script is under 2 KB gzipped. If GTM only exists to load Visitant, the plain one-line install is lighter.

Is it working? Check in 60 seconds

Do these checks on the published site, not in Preview, so you know the version went live.

  • Open your site in a private window: the current visitors counter at the top of the Visitant dashboard shows 1.
  • Open the browser developer tools (F12), tab Network, filter v.js: one request with status 200, and a following request to /api/e with status 202.
  • Decline or close your cookie banner (if you have one) and open another page: the pageview still appears in the Pages table. If it does not, the tag is gated by consent - go back to step 3.
  • Come to the site from a Google search result: the Sources table shows Google.
  • In GTM, Versions shows your new version as Live.

Common problems

The tag fires in Preview but the dashboard stays empty on the live siteThe container was not published, or the site loads an older cached copy of gtm.js. Publish, then reload the site with cache disabled in developer tools.
Visits only appear after people accept cookiesThe tag is attached to a consent trigger or has Require additional consent set. Change the trigger to All Pages and the consent setting to No additional consent required. The script needs no consent.
Two pageviews per pageYou have Visitant twice: once through GTM and once in the site code (or a second tag). Keep one. Search the page source for v.js to see the direct one.
The counter works on the first page of a single-page app but not after clicking aroundVisitant tracks route changes through history.pushState on its own, so an extra History Change trigger is not needed - and adding one would double count. Remove any second trigger from the tag.
GTM says the container is near its size limitCustom HTML tags count toward it, but ours is one line. The limit is reached by other tags; Visitant adds fewer than 100 characters.

Questions

Why should Visitant fire without consent when my other tags wait for it?

Consent is required for tools that store identifiers or personal data. Visitant stores neither: no cookies, no local storage ids, no IP addresses, EU hosting. Gating it would only make your numbers wrong.

Can GTM also send the AI crawler data?

No. AI crawlers do not run JavaScript, so nothing in GTM ever sees them. Counting them needs one of the server snippets from the dashboard (PHP, Node, Next.js, Cloudflare Workers or nginx logs); crawler hits never count toward your plan limit.

Is the GTM route slower than the direct line?

Slightly, because GTM loads first and then our script. If you already have GTM the difference is invisible to visitors; if you would add GTM only for Visitant, use the direct line instead.

Create a free account - the dashboard shows these steps with your own domain and key filled in.

Start free →