Skip to content

Instantly share code, notes, and snippets.

@zjeaton
Last active October 13, 2025 15:18
Show Gist options
  • Select an option

  • Save zjeaton/42246742cdaf2fb46400d04c2eba9a8a to your computer and use it in GitHub Desktop.

Select an option

Save zjeaton/42246742cdaf2fb46400d04c2eba9a8a to your computer and use it in GitHub Desktop.
Google Analytics 4 (with Measurement ID) in Hugo

Google Analytics 4 in Hugo

Blog post with slightly more detail can be found here. If you want to just get to it, read on.

I (very) recently decided to reimplement GA in my site, and found that existing implementation in Hugo was not compatible with GA4's new Measurement ID. This is an easy way to drop your Measurement ID into your site. I'm not going to go into how to sign up for GA.

This implementation requires that you create a site parameter for analytics, create a partial, and call the partial. I tweaked the names of the parameters and files so they didn't collide with the built-in hugo code.

Place the GoogleAnalyicsID (Measurement ID) in config.toml within [params].

# Google Analytics 4
googleAnalyticsID = "G-00000XXXXX"

Create the partial, analytics-gtag.html, and place it in /layouts/partials. Code below.

Call the partial just after the <head> tag in /layouts/_default/baseof.html.

<head>
  {{ if .Site.Params.GoogleAnalyticsID }}
  {{ partial "analytics-gtag.html" . }}
  {{ end }}
  ...
 </head>

That's it. It appears that this will be fixed in gohugo shortly, but for now this is a serviceable workaround.

<!-- Global site tag (gtag.js) - Google Analytics -->
<script async src="https://www.googletagmanager.com/gtag/js?id={{ .Site.Params.GoogleAnalyticsID }}"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', '{{ .Site.Params.GoogleAnalyticsID }}');
</script>
@m03315
Copy link

m03315 commented Aug 16, 2025

Thanks @zjeaton & @rufusdenne for your sharing, I used your tips to refine my own theme https://github.com/m03315/nomad-tech

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment