macrostack
Migration guide · Layer 5

Amplitude → PostHog

What it saves, what actually moves, what you rebuild — and the thing that catches people.

What it costs, and what it saves

Amplitude's pricing page, as listed on 2026-10-03: the Free plan includes 2M events/month and 1 year of data. Plus 'starts at $0', with the first 2M events/month free and event-based pricing above that. No per-volume dollar figures are published; the page offers a bill estimator instead. Growth and Enterprise are custom-priced. PostHog Cloud, as listed on posthog.com the same day: the first 1,000,000 product-analytics events each month are free. After that it charges $0.0000500/event from 1M to 2M and $0.0000343/event from 2M to 15M, falling to $0.0000090/event above 250M. The free plan has 1 project and 1-year retention; paid plans have 7-year retention. By our arithmetic on those listed rates, 5M events/month comes to about $153/month. Self-hosting PostHog's MIT 'hobby' deploy needs roughly a 4 vCPU / 16 GB RAM machine; DigitalOcean lists a 16 GiB Basic droplet at $96/month.

85
PostHog
MIT core, with an `ee/` enterprise directory carve-out
Effort: Estimate: 1–2 weeks of team time. The SDK swap and import take 1–3 days; the rest is rebuilding dashboards and cohorts, followed by a 2–4 week parallel run. Allow longer for several Amplitude projects or a large tracking plan.

Moves cleanly

PostHog's managed migration (the Managed migrations page in the app) connects to Amplitude's Export API with the project's API key and secret key. It exports raw events for a date range of up to one year per job and converts them to PostHog's event schema; PostHog's guide maps Amplitude's page-view event to $pageview. Event properties carry over. User properties arrive as $set and $set_once. Amplitude device and user IDs map to distinct_id. Timestamps, geo, browser, OS and referrer fields come across too. The import itself is free, but PostHog requires a paid product-analytics plan to unlock it.

You rebuild

Only raw events move. Rebuild by hand: every chart, dashboard, funnel, retention view and cohort, plus experiments, feature flags, session replays and alerts. Tracking code moves from Amplitude SDK calls (track, identify, user properties) to posthog-js or a PostHog server SDK (capture, identify). Anything that sent data into Amplitude through a CDP or warehouse sync has to be pointed at PostHog, and anything that read data out of Amplitude has to be rebuilt against PostHog.

What Amplitude costs you today

Billed on monthly tracked users. The Starter tier is free up to 10,000 MTUs and 2 million events per month. Plus starts around $49/month billed annually — about $582 a year at 1,000 MTUs — and scales up to 300,000 MTUs, with each MTU carrying an allowance of roughly 1,000 events. Growth and Enterprise are quoted. The mechanic to understand is that a user counts once they fire any event, so instrumenting more of the product does not raise the MTU count, but growing the audience does. Figures checked 2026-07-31.

What actually holds you in

Moderate and mostly in the tracking plan rather than the data. Historical events export, though large exports are slow and awkward. What costs real time is that your event taxonomy — names, properties, the conventions everyone agreed on — is embedded in application code, and any migration means either replaying that taxonomy into a new tool or rewriting instrumentation. Teams that send events through a neutral layer such as a Segment-compatible pipeline or OpenTelemetry keep this cheap. Teams calling the Amplitude SDK directly from every component do not.

What you are moving to

PostHog is the most complete answer here because it collapses several line items into one: product analytics, session replay, feature flags, A/B testing, surveys and a data warehouse, all in a product you can run on your own infrastructure. For teams currently paying Amplitude for analytics and LaunchDarkly for flags, that consolidation is often the real saving rather than any single rate. Around 37.4k stars and pushed to daily. The licence needs stating precisely: the core is MIT, but the `ee/` directory is licensed separately as enterprise — so it is MIT-with-a-carve-out rather than plain MIT, which is how it is usually described.

Generous free tier on cloud; self-hostable at no licence cost for the MIT core.

PostHog strengths

  • Replaces analytics, session replay, flags and experiments with one tool
  • Self-hostable, so behavioural data never leaves your infrastructure
  • Autocapture means useful data before anyone writes a tracking plan
  • Very generous free tier if you would rather use the hosted version

What you give up

  • Self-hosting at volume means operating ClickHouse — a real commitment
  • The `ee/` directory is not MIT despite the project's reputation
  • Heavier and more complex than a focused analytics tool
  • Analysis depth still trails Amplitude for sophisticated cohort work

The migration, step by step

  1. 1Create a PostHog Cloud project (US or EU region) and sign up for a paid product-analytics plan on the billing page. PostHog says historic imports are free, but the paid plan unlocks them. Set a billing limit, then list your Amplitude event names, user properties, key charts and cohorts.
  2. 2Install posthog-js or the server SDK next to the Amplitude SDK. Mirror every Amplitude track() and identify() call with posthog.capture() and posthog.identify(), using the same user ID, so new data lands in both tools during the parallel run.
  3. 3Copy the Amplitude project's API key and secret key. In PostHog, open Managed migrations, choose Amplitude, paste both keys, and pick a date range of at most one year that ends exactly where live PostHog capture began. Try a small range in a scratch project first, then run back-to-back yearly jobs for older data.
  4. 4Rebuild your core dashboards, funnels, retention charts and cohorts in PostHog from your list. Compare counts for the weeks both tools ran. PostHog blocks bot traffic by default and Amplitude does not, so PostHog totals can be lower.
  5. 5Run both tools in parallel for 2–4 weeks. Once the rebuilt charts match within a difference you can explain, move team dashboards, alerts and weekly reviews to PostHog.
  6. 6Cutover: remove the Amplitude SDK and any CDP destinations that feed it. Keep the Amplitude project readable, or pull raw events through its Export API for your archive, until the contract ends.

The gotcha

PostHog's managed migrations 'do not deduplicate events', and PostHog's migration guide states there is 'no way to selectively delete event data'. If a job is paused, fails partway, or is re-run to fix a mapping, the overlapping events are imported twice and stay in the project for good. The same happens if your historic range overlaps days that live posthog-js capture already recorded. End the import range exactly where live capture starts, test on a throwaway project, and never re-run a range into production. A second trap comes from Amplitude's side. Its Export API selects events by server_upload_time, not event time. It caps one request at 365 days and 4 GB, and data can only be exported about two hours after Amplitude receives it. Late-arriving mobile events can therefore fall outside the window you picked.

When to stay on Amplitude

Stay on Amplitude if its free tier covers you: it includes 2M events/month, against PostHog's 1M. Stay too if you depend on Growth or Enterprise features its pricing page lists, such as SSO, project permissions, data access controls and advanced role-based access. Analysts who are fluent in Amplitude's charts and cohorts are a real switching cost. If you don't need the session replay, feature flags and experiments PostHog bundles in, the move may not repay the rebuild time.

Compare firstAll 5 Amplitude alternatives, rankedWhere this sitsLayer 5 — Applications

More Layer 5 migrations

Figures verified 2026-07-31 against vendor pricing pages. Prices change and migrations differ by estate — treat the cost delta as a starting model, not a quote. Rankings and recommendations here are merit-only; affiliate income never changes a verdict. See our methodology.

The Macrostack brief

New swaps, worth your inbox.

A short, occasional email when we add a high-intent alternative or ship a new head-to-head. No spam, no selling your address — unsubscribe in one click.