← All playbooks
Analytics migration

Plausible → PostHog

Point the site at PostHog for new pageviews, and treat a Plausible history import as experimental. Plausible's portability export is aggregated, so it cannot become exact PostHog events.

Typical timeline3 to 10 days6 to 16 hours active work
Statusneeds review
Source profilePlausible export-stats docs reviewed 2026-11-03
Destination profilePostHog Plausible migration guide reviewed 2026-11-03
Documentation date
Review window
Evidence2 sources
This route needs review.Use it as a planning baseline, then verify the dated sources and test with representative data before production.
Before you migrate

Should you make this move?

Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.

Current platform

Plausible

Reasons to stay
  • A simple privacy-focused dashboard delivers understandable web analytics quickly
  • Established reporting patterns make recurring measurement easier
Reasons to leave
  • Product analytics, attribution depth, and complex segmentation are intentionally limited
  • Tracking quality still depends on disciplined implementation and governance
New platform

PostHog

What gets better
  • Open product analytics, session replay, feature flags, and experiments consolidate product tooling
  • Product-focused reporting helps teams understand behavior beyond page views
What gets worse
  • Event volume, deployment choice, and broad feature scope add operational complexity
  • Event schemas and historical cohorts are expensive to redesign or move
Best of the move

PostHog: Open product analytics, session replay, feature flags, and experiments consolidate product tooling. This removes a major source-side concern: Product analytics, attribution depth, and complex segmentation are intentionally limited.

Worst of the move

What you lose: A simple privacy-focused dashboard delivers understandable web analytics quickly. What you inherit: Event volume, deployment choice, and broad feature scope add operational complexity.

Jump to a section
01At a glance

Know the shape of the move.

Transfer outcome11 features audited
Transfer outcome distributionClean transfer: 0, Partial transfer: 4, Manual rebuild: 5, Not transferred: 2.
Clean0
Partial4
Manual5
Lost2
Mapping route9 of 9 fields have a destination path

This timeline assumes

  • You have a Plausible site and a PostHog project in the US or EU cloud you mean to keep.
  • New traffic will be captured by the PostHog snippet or SDK. History is optional.
  • You can export Plausible before a trial or subscription ends. After that, only the site-settings export remains, and dashboards can be deleted.
  • The site already documents Plausible → Google Analytics 4 and Plausible → Matomo.
02What transfers

What survives the move.

“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.

ItemOutcomeImpactWhat happensMitigation
Historical eventspartialcriticalPostHog's Plausible guide is marked experimental. It says the import is less accurate than data PostHog captured itself, and contributions are welcome. Plausible exports aggregates, not the events behind them. The guide's script invents distinct IDs and assigns pageviews at random so the totals can look similar.Keep the Plausible CSV as the historical record. Use PostHog for traffic after the snippet is live.
What the script skipslosthighPostHog says the work-in-progress script does not include person or event properties such as UTMs, session duration, bounce rate, custom events, or entry and exit pages.Do not promise funnel history from the import. Recreate goals on new traffic.
Words for the same ideapartialmediumPostHog's guide maps Plausible visitors to persons and Plausible visits to sessions.Label imported charts so nobody compares them to native PostHog persons as if they were the same capture.
Plausible site-settings exportpartialhighSite settings export all native stats to date as CSV, one row per day per item. It excludes data you previously imported into Plausible. Plausible emails you when it is ready.Download it before the subscription lapses. Dashboard export and the Stats API go away without an active trial or subscription.
Dashboard CSV limitspartialmediumA dashboard export follows the date range and filters you set, and it can include imported data. Plausible caps each file at the top 300 entries, and pages and exit pages at the top 100, so the download stays quick.Use the site-settings export when you need every page, not the chart download.
Raw eventsmanualhighEvent-level exports are a Plausible Enterprise feature, delivered daily to S3-compatible storage. The ordinary CSV is aggregated.If you need raw history, start that export before you cancel. Do not expect the free CSV to contain it.
PostHog project setupmanualcriticalThe migration guide tells you to create a US or EU project first. Historic imports are free, but you need a paid product analytics plan to unlock the features the import uses. Set historical_migration when capturing the backfill. EU projects use eu.i.posthog.com, not the US host.Pick the region before you capture anything. A later move is a second migration.
Snippet and goalsmanualcriticalPlausible goals and custom events do not become PostHog actions. You install PostHog and define them again.List every Plausible goal. Recreate the ones you still report, and check one conversion.
Cookieless setupmanualmediumA team that left Plausible for PostHog wanted to stay off cookie banners. PostHog can run with a different persistence setting, but that is configuration, not something the import does.Choose persistence before the first production pageview.
Funnels and replaymanualmediumThey start when PostHog is capturing. The Plausible CSV cannot fill them in. Significa switched because Plausible felt too simple for funnels, and they adopted replay after the move.Treat the first weeks as a new baseline.
Old dashboardslostlowSaved Plausible views stay in Plausible. PostHog has its own insights.Screenshot the views you still cite in reports.
03Field and feature mapping

Where each thing goes.

SourceDestinationMethodNotes
Plausible visitorPostHog persontransformThe official script synthesizes IDs. They are not the original visitors.
Plausible visitPostHog sessiontransformSession timing is not in the work-in-progress script.
Pageview totalsCaptured pageviewstransformTotals can be approximated. Paths per person are not recovered.
Site-settings CSVArchive, or the experimental importermanualNative stats only. Imported GA data is excluded.
Dashboard exportA filtered spreadsheetmanualTop 300, or top 100 for pages. Fine for a report, not for a full backfill.
Custom eventPostHog eventmanualNot in the current conversion script. Capture it going forward.
GoalPostHog action or eventmanualRecreate it. Check one live conversion.
Plausible scriptPostHog snippetmanualRemove the old script when PostHog is the only collector.
Enterprise raw exportYour bucketmanualThis is the path that is actually event-level. It is not the default CSV.
04Before you begin

Make the move recoverable.

Backup procedure

Create the source-of-truth backup

Keep Plausible's full native export even if you never import it.

  1. From site settings, run Export to CSV and download it when the email arrives.
  2. Export any dashboard view you still paste into reports, and note the top-N cap.
  3. Screenshot goals and the sites that use the snippet.
  4. If you have Enterprise raw export, confirm a file landed in the bucket.
  5. Leave the Plausible snippet in place until PostHog shows a day of traffic.

Proof to capture: The site-settings ZIP is downloaded and the email's expiry date is on your calendar.

Transformation · PostHog snippet or SDK

New capture

Record pageviews in PostHog from the day you switch.

  1. Create the project in the region you want.
  2. Install the snippet on a preview host.
  3. Set persistence to match the cookie decision you already made.
  4. Compare a day's pageviews with Plausible before you remove the old script.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

Transformation · PostHog's Plausible migration script

Optional backfill

Approximate old totals, with the limits PostHog documents.

  1. Turn on a paid product analytics plan so the import features unlock. PostHog says the historic import itself is free.
  2. Export from Plausible site settings.
  3. Run the script with historical_migration set, and the EU host if that is your project.
  4. Label the result as synthetic. Do not use it for per-user funnels.

Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.

05Handle with care

The things most likely to hurt.

These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.

Pilot

Imported history is treated as real events

criticallikely likelihood

A chart of imported pageviews looks like PostHog capture.

Consequence
Funnels and retention from that range are fiction. The script assigned pageviews at random.
Mitigation
Keep history in the CSV. Start funnels on the first native day.

Stop if: Someone is about to report a funnel that includes the imported range.

Cutover

Both snippets count the same view

highpossible likelihood

Plausible and PostHog are on the page together longer than the overlap you planned.

Consequence
You double-count if you add the two tools together.
Mitigation
Overlap on purpose, then remove Plausible. Do not sum them.

Stop if: A report adds both totals for the same day.

Backup

The export link expires

highpossible likelihood

Plausible emails a download link with a limited life, or the subscription ends first.

Consequence
The native history is gone with the dashboard.
Mitigation
Download the ZIP as soon as the email arrives.

Stop if: You cancelled Plausible and the ZIP is not on disk.

06Precise timeline

Do the work in this order.

Estimate forOne or a few sites, new capture in PostHog, CSV archive of Plausible, optional experimental backfill
Total elapsed3 to 10 days
Active work6 to 16 hours
BufferAdd time if you are on Enterprise raw export, many custom events, or a reverse proxy in front of the snippet.
01
Days 1 to 2List sites and goals1 to 2 days
02
Days 2 to 4Download the CSV1 to 2 days
03
Days 4 to 7Preview snippet2 to 3 days
04
Days 7 to 8Swap the script1 day
05
Days 8 to 15New baseline7 days
  1. Days 1 to 2 · inventory

    List sites and goals

    2 to 4 hours active1 to 2 days elapsedOwner picks the PostHog region waiting
    • List sites, goals, and where the script is installed.
    • Choose US or EU.

    Depends on: Plausible admin and a PostHog project

    Stop / go checkpoint

    Export?

    Go when: Every site has an owner and a region.

    Stop when: You still need a funnel of last year's individual visitors.

  2. Days 2 to 4 · backup

    Download the CSV

    1 to 3 hours active1 to 2 days elapsedPlausible email waiting
    • Run the site-settings export.
    • Save dashboard screenshots.

    Depends on: Active trial or subscription if you still want dashboard export

    Stop / go checkpoint

    Install PostHog?

    Go when: The ZIP is downloaded.

    Stop when: The email never came and the subscription is ending.

  3. Days 4 to 7 · pilot

    Preview snippet

    3 to 6 hours active2 to 3 days elapsedA day of traffic waiting
    • Install PostHog on preview.
    • Recreate one goal.
    • Optionally run the experimental import on a scratch project.

    Depends on: ZIP archived

    Stop / go checkpoint

    Production snippet?

    Go when: Preview pageviews arrive and the goal fires once.

    Stop when: The wrong cloud region is capturing.

  4. Days 7 to 8 · cutover

    Swap the script

    1 to 2 hours active1 day elapsedDeploy waiting
    • Ship the PostHog snippet.
    • Remove Plausible after you see production traffic.

    Depends on: Preview passed

    Stop / go checkpoint

    PostHog is the collector?

    Go when: Production pageviews show up and Plausible is no longer on the page.

    Stop when: Both scripts remain and a report is summing them.

  5. Days 8 to 15 · observe

    New baseline

    1 to 3 hours active7 days elapsedA week of traffic waiting
    • Compare order of magnitude with the last Plausible week.
    • Keep the CSV.

    Depends on: Snippet live

    Stop / go checkpoint

    Cancel Plausible?

    Go when: You have the ZIP and a week of native PostHog data.

    Stop when: A goal you still need was never recreated.

07The point of change

Cut over with a way back.

Go live

Cutover

PostHog records new pageviews. Plausible history sits in the CSV you already downloaded.

Recommended window: Just after a deploy you can roll back, with the export already saved.

  1. Confirm the ZIP is on disk.
  2. Deploy the PostHog snippet to production.
  3. Watch one real pageview and one goal.
  4. Remove the Plausible script.
  5. Do not add the two tools' totals together for the overlap day.

Proof to capture: PostHog shows production traffic. The page source has one analytics snippet. The CSV is archived.

Return to safety

Rollback

Put the Plausible snippet back if PostHog capture is wrong.

Deadline: Before Plausible deletes the dashboard. Export first if the subscription is ending.

  1. Restore the Plausible script.
  2. Remove the PostHog snippet if it is double counting.
  3. Keep the CSV either way.
  4. Fix region, persistence, or the goal definition on a preview host.
  5. Switch again only after preview traffic looks right.

Proof to capture: Plausible is counting again and you still have the export.

Rollback immediately when
  • A report uses synthetic IDs as real people
  • The two snippets are being summed
  • Capture is in the wrong region
  • A required goal does not fire
  • The CSV was never downloaded
08Verification report

Prove the migration worked.

Every blocking check must pass. Capture the evidence before cleanup begins.

0%
Interactive report preview0 / 8 checks passed
PassIDCheckMethodExpected resultEvidence
V-01BlockingZIP downloadedOpen the site-settings export.Daily files are present and the link has not expired unused.ZIP listing.
V-02BlockingProject hostRead the snippet host.US or EU matches the project you created.Snippet source.
V-03BlockingOne pageviewLoad a production URL and find it in PostHog.One native event, not an imported row.Live event.
V-04BlockingOne conversionTrigger a recreated goal.PostHog records it once.Event log.
V-05BlockingLabelIf you ran the script, open the imported range.The dashboard says the range is synthetic. Funnels do not include it.Note on the insight.
V-06BlockingSingle collectorView source on the home page.Plausible's script is gone after cutover.Page source.
V-07BlockingNo summed dayRead the report that covers cutover day.It cites one tool, or it shows them separately.Report.
V-08PersistenceCompare the banner decision with the PostHog init.The setting matches what you told users.Init config.
09Post-migration cleanup

Remove the scaffolding safely.

Safe after: A week of native PostHog traffic and a CSV you can still open.

  1. Store the ZIP with the date Plausible would have deleted the dashboard.
  2. Remove leftover Plausible environment variables.
  3. Cancel Plausible only after that archive exists.
  4. Delete the scratch project if you tested the experimental import.
  5. Document which day native capture starts.
  6. Review goals next quarter against the new baseline.
Sources and evidence

Verify against the primary material.

Platform behavior changes. Check these sources and the review dates above before executing a production migration.

  1. PostHog: migrate from PlausibleAccessed 2026-11-03
  2. Plausible: export your website statsAccessed 2026-11-03