Article

Setting up open-source observability with Umami

12 October 2026 · Francisco Gaspar

Page views for this site go to Umami, self-hosted at analytics.franciscogaspar.xyz, rather than to a third-party analytics host.

Astro bundles a script it imports. The tracker has to stay a remote script, so the tags are inline and deferred. There are two. script.js records the page view. recorder.js records the session. Both carry the same website id, data-do-not-track="true", and data-performance="true".

<script
  defer
  src="https://analytics.franciscogaspar.xyz/script.js"
  data-website-id="…"
  data-do-not-track="true"
  data-performance="true"
></script>

data-do-not-track="true" means a browser that sends that signal is not recorded. The website id is in the HTML. That identifies the site to Umami, not the visitor. defer means the request for the page does not wait on the tracker.

Cloudflare Web Analytics is a second beacon on the same pages. It answers Cloudflare’s own edge question. It is not a stand-in for the Umami numbers.

The Umami server is not in this repository. What belongs next to the site is the embed: which scripts, which host, and the decision not to fold them into the Astro build.

Experience and projects