Migrating from PostHog: A Downsizing Guide That Keeps the Signal
How to leave PostHog without losing what mattered: the five-report audit, event porting, webhook revenue, and the two-week parallel run.
PostHog migrations are downsizing projects, and downsizing succeeds by inventory, not nostalgia. The platform does a dozen jobs; you were probably using three. Name them precisely, port them deliberately, and the migration shrinks from a scary quarter-long epic to a focused week. Here is the inventory-first plan.
Step 1: inventory what PostHog actually did for you
Go through the product areas and mark each one honestly:
- Web/product analytics: almost certainly used → ports directly.
- Custom events + identify: used → ports directly (same API shape).
- Session replay: often installed, often disabled for privacy/cost. If genuinely load-bearing, note it — this is the one real gap.
- Feature flags: if used, they need a dedicated replacement (flags are not analytics; pick a flags tool, not a compromise).
- A/B experiments: light usage ports to variant events; heavy usage means keeping a dedicated experimentation tool.
- Surveys / data warehouse: if these are core, you are PostHog's target customer — reconsider leaving, as we say outright in the alternative guide.
Step 2: port the analytics core
The translation is nearly mechanical:
// PostHog // Clycyo
posthog.capture('signup', p) → window.webanalytics.track('signup', p)
posthog.identify(id, props) → window.webanalytics.identify(email, props)
// autocapture pageviews → automatic (incl. SPA routes)
// pageleave/clicks → automatic click captureTwo upgrades come free: the tracker drops from tens of kilobytes to 1.1 KB (your INP will notice), and revenue moves from client capture to a server-side webhook joined to first-touch attribution.
Step 3: fill the replay gap, the privacy-first way
Most replay usage at startups is forensic: 'show me what the user who hit the bug experienced'. Clycyo's per-visitor timeline — pages, clicks, load times, and JavaScript errors in sequence — answers the same forensic question without recording keystrokes or DOM video, which also means no replay consent problem. Open a few journeys in the live demo and check whether the timeline covers your actual replay use cases; for most teams it does.
Step 4: history and the two-week proof
- Export the dashboards anyone opened recently as CSVs; archive raw events via PostHog's export if you want cold storage.
- Run both tools in parallel for two weeks. Expect more recorded visitors on the cookieless side if you had a consent banner gating PostHog.
- Cut over: remove the SDK, keep the PostHog project read-only for a quarter, done.
The migrations that go badly are the ones that try to port the platform. Port the answers instead — acquisition, activation, revenue, and what-broke — and a free-tier week tells you whether the simpler tool covers them. That is the entire bet, and it is testable for nothing.