Umami Analytics for Static Sites

You cannot improve a landing page you do not measure — but mainstream analytics tools often bring cookie banners, heavy scripts, and data practices that feel overkill for a single pre-launch page. Umami is an open-source analytics platform built for simplicity: pageviews, referrers, devices, and basic events without tracking individuals across the web. It fits static sites because integration is one async script tag and a website ID.

Self-hosted vs Umami Cloud

Umami is AGPL-licensed and runs on PostgreSQL or MySQL. Self-hosting on a $5 VPS or a small Docker container on Fly.io costs less than SaaS analytics over a year if you are comfortable running updates. Umami Cloud (hosted by the creators) trades money for convenience — reasonable when your time is worth more than server maintenance. Both options respect visitor privacy more than legacy enterprise analytics stacks.

ApproachCost profileBest for
Self-host DockerVPS + your timeTechnical founders, multiple sites
Umami CloudMonthly subscriptionFast setup, no DevOps
Plausible CloudMonthly subscriptionTeams wanting hosted EU option
No analytics$0Absolute minimum before launch

What Umami tracks (and does not)

Umami records page URL, referrer, browser, OS, device type, and country derived from IP — then discards raw IP per their design. It does not fingerprint users for cross-site profiling. You get aggregate dashboards: which blog post drove signups, whether mobile bounce is high, if a Hacker News spike happened. It is not a replacement for product analytics inside your SaaS app; it is marketing-site telemetry done ethically.

Add Umami to LaunchStatic templates

Create a website entry in Umami admin, copy the tracking ID, and paste the script before </body> on every page you want measured — at minimum index.html, plus legal pages if you care about privacy-policy traffic.

<script defer src="https://your-umami.example.com/script.js" data-website-id="YOUR_WEBSITE_ID"></script>

Use the defer attribute so HTML parsing is not blocked. Host the script on the same domain as your Umami instance (or Umami Cloud URL). After deploy, visit your live site and confirm realtime views increment in the dashboard.

Self-hosting quick path with Docker

The official Docker Compose file spins up Umami and PostgreSQL. Point a subdomain like analytics.yourdomain.com at the server, terminate TLS with Caddy or Nginx, and set a strong admin password on first login. Schedule automatic image updates — Umami releases security patches like any public-facing app. Back up the database volume; losing stats is not catastrophic but hurts trend analysis.

Environment variables that matter

  • DATABASE_URL — PostgreSQL connection string
  • APP_SECRET — session signing secret; generate a long random string
  • DISABLE_TELEMETRY — set true if you prefer no phone-home from the app itself
  • CORS — restrict origins if you embed the script on multiple domains

Custom events for conversion tracking

Beyond pageviews, Umami supports custom events — useful for button clicks without full tag-manager complexity. Track waitlist submits by firing an event after successful Formspree response:

if (window.umami) {
  umami.track('waitlist_signup', { source: 'hero' });
}

Keep event names consistent and documented. Three well-chosen events beat fifty noisy ones you never review.

GDPR, cookie banners, and privacy policies

Umami markets itself as cookieless analytics when configured without local storage. Many EU sites still mention analytics in privacy policies and offer opt-out where required. LaunchStatic is not a law firm — consult your counsel for your markets. Practically, teams choose Umami to reduce intrusive consent banners compared to AdTech-heavy alternatives. Document what you collect and why in your privacy page.

Umami vs Plausible vs Google Analytics 4

Plausible is a polished hosted product with transparent pricing and excellent docs — great if you want zero servers and will pay monthly from day one. GA4 is free but complex, script-heavy, and tied to Google's ecosystem; overkill for a waitlist. Umami shines when you want open source, self-host optionality, and a clean dashboard without learning a tag manager. You can switch tools later — analytics snippets are a few lines in shared layout partials.

Operational tips for launch week

  • Verify tracking on production domain, not just localhost
  • Exclude your own IP in Umami settings to avoid skewing data
  • Share read-only dashboard links with cofounders instead of screenshots
  • Set a weekly reminder to review top referrers and adjust messaging
  • Remove analytics from password-protected staging environments

Related: Cloudflare Pages guide Formspree guide Privacy policy template

Will Umami slow my landing page?

The tracker is lightweight — far smaller than typical GA4 bundles. Use defer and load from a nearby host to minimize impact on Core Web Vitals.

Do I need cookies consent with Umami?

Depends on jurisdiction and configuration. Many sites use Umami specifically to avoid cookie banners, but you must align with your legal advice and disclose analytics in your privacy policy.

Can I run Umami on Cloudflare Workers?

Umami expects Node and a SQL database; Workers alone are not a fit. Host on a VPS, Railway, Render, or Umami Cloud instead.

Does Umami support multiple sites?

Yes. One Umami instance can track many websites with separate IDs — ideal for portfolio founders running several experiments.

Measure what you ship

Deploy a LaunchStatic template, add Umami in two minutes, and know where your first visitors come from before you scale ad spend.

Browse templates All tool guides