Umami
Installation
SKILL.md
Critical Configuration
HASH_SALTmust never change — changing it invalidates all existing data, essentially a reset- SQLite is not supported — despite being Node.js, Umami requires PostgreSQL or MySQL
- Database contains everything — all tracking data, config, users; backup only this
Tracking Script Traps
data-website-idmust match Umami config exactly — wrong ID = zero data, no error shown- Script blocked by ad blockers — self-host on same domain as site to avoid blocking
- Single Page Apps don't auto-track navigation — must call
umami.track()on route changes - Script in
<head>not<body>— late loading misses initial pageview
SPA Integration
- React: call
umami.track('pageview')in router effect or navigation handler - Next.js: use
@umami/nextpackage — handles app router and pages router - Vue/Nuxt: router afterEach hook with
umami.track() - Check
window.umamiexists before calling — script may load after component mounts