Migrating from Umami: When You Outgrow a Pageview Counter
Umami served you well. Here is how to migrate when you need identities, revenue attribution, and performance data — without losing continuity.
Umami is what self-hosted analytics should look like: small, clean, free, and honest about its scope. Teams migrate away for two reasons, usually arriving together — the ops burden of running it stopped being fun, and the questions started exceeding pageview counting. If you are nodding at either, here is the path out, with full credit to the tool you are leaving.
Recognize the ceiling first
Umami tells you how much traffic, from where, to which pages, plus custom events. It does not — by design — do user identities, revenue attribution, per-visit performance, or error capture. The day your questions become 'which channel produces paying customers?' or 'did the signup page get slower?', you have left Umami's territory regardless of which tool you run.
The migration, mechanically
- Swap the script tag. Umami's tag and Clycyo's are both single-line, cookieless installs — no consent change, no banner, same privacy posture for visitors.
- Port events. umami.track('signup') becomes window.webanalytics.track('signup', { plan: 'pro' }) — same idea, plus properties you will actually use.
- Export history. Pull CSVs of monthly visitors/sources/pages from the dashboard, or query your own Postgres directly — it is your database, one of self-hosting's real perks. Archive a dump if you want raw insurance.
- Parallel-run a week, then decommission. Confirm trend agreement, remove the Umami tag, snapshot the VM or container volume, shut it down. One fewer service in the update rotation.
What changes the day after
- identify() exists now. Signups merge anonymous history into one journey — the foundation for revenue attribution that pageview counters structurally cannot offer.
- Webhook revenue: payments from Stripe/Polar arrive server-side, pre-joined to first-touch UTM.
- Performance and errors per visit: load times, Web Vitals, and JS exceptions on the same record as behavior — the dimension that turns 'traffic looks fine' into actual product insight.
- Zero ops: no updates, no database growth management, no uptime responsibility for your own measurement.
The honest trade
Umami is open source on your hardware; Clycyo is managed cloud, full stop — no self-hosted edition exists. If data-on-your-own-metal is a hard requirement, keep Umami and our respect. If the requirement was really 'privacy-respecting and under control', cookieless managed analytics meets it with a fraction of the effort — the architecture argument is laid out in Open-Source Analytics: Pros and Cons.
Cost to find out: zero — the free tier is 10,000 events/month forever, and most Umami-sized sites fit inside it comfortably.