Updated 20 October 2026
Hugo analytics
Privacy-first, cookieless analytics for Hugo: one tag in the head partial, nothing to build and nothing to configure.
In short
- One tag in
layouts/partials/head.html, shown only in production if you like. - A static site stays static: the tag is the only addition to each page.
- No cookie banner needed in cookieless mode, no IP address stored, and nothing loaded from another company.
Install on Hugo#
Use your own site id and server address in the code below. On trckable Cloud the address is https://cloud.trckable.com.
Put the tag in the head partial your pages share. Wrapping it with hugo.IsServer keeps it off hugo server:
{{ if not hugo.IsServer }}
<script
defer
data-site="tkb_a1b2c3d4"
data-domain="example.com"
src="https://stats.example.com/js/tkb_a1b2c3d4.js">
</script>
{{ end }}
Open your site once, then run npx trckable doctor --host https://stats.example.com --site tkb_a1b2c3d4 --url https://example.com. It only reads, and tells you whether the tag is on the page and the server answers.
What to know about Hugo#
- Your theme owns
head.html. Copy the theme's file into your ownlayouts/partials/and edit the copy, so a theme update does not remove the tag. Some themes have a custom-head partial for this. - Hugo outputs plain HTML, so the tag is in the page source and nothing runs on a server.
- Local builds are ignored anyway. trckable does not count localhost, but the
hugo.IsServerguard keeps the tag out of your preview too. - One tag per page, so check that the theme's head partial is used by every layout, including list and 404 pages.
Goals and revenue#
A goal needs no code: put an attribute on the element and each click is counted.
<button data-trckable-goal="signup" data-trckable-goal-plan="pro">Start trial</button>
Connect Stripe, Paddle, Lemon Squeezy, Polar or Dodo Payments with one key, and each payment is credited to the visit that earned it, so revenue shows next to traffic. See revenue attribution.
Questions#
- Is there a Hugo module?
- No, and a static site does not need one. The documented install for a static site generator is the tag in the shared head.
- Do I need a cookie banner on my Hugo site?
- Not for the counting itself. In cookieless mode (add
data-cookielessto the tag) nothing is stored on the visitor's device and no IP address is kept. Whether your site needs a banner for other reasons is a question for your own situation; the cookie banner guide explains the rules in plain words. - Can ad blockers stop it?
- A blocker can block any script, and trckable does not claim otherwise. Sending events through your own domain removes the separate analytics file a blocklist would match by name, which is the accurate setup. The same-origin proxy guide shows how.
- Is it free for a Hugo site?
- The server is open source and free to self-host, and the tracker is MIT licensed. If you would rather not run a server, trckable Cloud runs it for you; the plans are on the pricing page.