Google Analytics 4 → Plausible
Replace GA4 collection with Plausible, import day-level history through the official GA4 importer, rebuild goals, and treat the two datasets as different counting methods rather than a match.
Should you make this move?
Both platforms have a case. Compare what you gain with what you give up before scheduling the cutover.
Google Analytics 4
- Event-based measurement connects web, app, audiences, and Google advertising
- Established reporting patterns make recurring measurement easier
- Its data model and reporting interface are difficult for many teams to govern
- Tracking quality still depends on disciplined implementation and governance
Plausible
- A simple privacy-focused dashboard delivers understandable web analytics quickly
- Established reporting patterns make recurring measurement easier
- Product analytics, attribution depth, and complex segmentation are intentionally limited
- Tracking quality still depends on disciplined implementation and governance
Plausible: A simple privacy-focused dashboard delivers understandable web analytics quickly. This removes a major source-side concern: Its data model and reporting interface are difficult for many teams to govern.
What you lose: Event-based measurement connects web, app, audiences, and Google advertising. What you inherit: Product analytics, attribution depth, and complex segmentation are intentionally limited.
Jump to a section
Know the shape of the move.
This timeline assumes
- Up to 5 GA4 properties per Plausible site, 50 conversion events, and the aggregate history the Data API still returns
- A signed measurement plan names the metrics and conversions that must remain comparable.
- Both collectors can run in parallel for at least two to four weeks.
- Imported history is labeled separately from Plausible-native collection.
- The migration team records evidence for every blocking verification check.
What survives the move.
“Partial” and “manual” are not footnotes. They are work that must be scheduled and verified.
| Item | Outcome | Impact | What happens | Mitigation |
|---|---|---|---|---|
| Historical visitor-level events | lost | critical | Plausible imports day-level aggregate statistics through the Google Analytics Data API. It does not recreate raw visitor journeys. | Treat imported history as a reference layer and keep a lawful raw export if you still need event-level evidence. |
| Unique visitors across longer periods | partial | high | Imported daily unique counts are summed. That does not match GA4's cross-day unique calculation. | Document the break. Do not publish week or month trends that assume the same identity model. |
| Goals and ecommerce revenue | partial | critical | GA4 conversion data can import, but nothing shows until you recreate matching Plausible goals. Ecommerce revenue is not imported. | List every conversion before you start. Recreate goals in site settings and verify live revenue events separately. |
| UTM source and campaign fields | partial | high | The importer uses GA4 session source for Plausible's source dimension. It does not fill a separate UTM source field. Medium, campaign, content, and Google Ads keyword can import where the API returns them. | Use the source report for imported traffic. Recreate UTM source reports from native Plausible data after cutover. |
| Exit pages, scroll depth, hourly graphs, and browser versions | lost | high | Plausible documents these gaps for imported GA4 data. The Google Analytics API does not expose exit pages or scroll depth. | Rebuild those questions from native Plausible collection, or keep a dated GA4 export. |
| Multiple properties and hostnames | partial | high | You can import up to 5 GA4 properties into one Plausible dashboard. Each import brings the whole property. You cannot split one property by hostname. | Import the preferred overlapping property first. Later imports skip dates that already have data, so gaps can remain. |
| Users, sessions, and consent modeling | partial | critical | GA4 uses cookies, device IDs, and consent-mode modeling. Plausible hashes IP and User-Agent daily and does not model refused cookies. The numbers will not match. | Approve expected variance before anyone calls the import a failure. |
| Events, properties, and custom dimensions | manual | critical | Names do not become Plausible custom events by themselves. Triggers, properties, and reserved fields need a destination setup. | Write an event dictionary and fire every business conversion on a staging page. |
| Dashboards, explorations, and Looker Studio | lost | high | GA4 explorations, saved reports, and Looker Studio connectors do not become Plausible dashboards. Imported data is also excluded from Plausible consolidated views. | Rebuild only the signed reporting set. Export CSV or use the stats API when a spreadsheet still matters. |
| Audiences, cohorts, and advertising links | manual | high | GA4 audiences and Google Ads links have no Plausible equivalent. Search Console can be linked later and is not a one-to-one keyword import. | Decide which advertising questions stay in Google, and which page and source questions move to Plausible. |
| Collection after Plausible starts | lost | high | The importer stops the day before your first Plausible visitor. It cannot fill a later gap and cannot recover missing GA4 data. | Install Plausible first. Confirm native hits. Import history after you know the start date. |
Where each thing goes.
| Source | Destination | Method | Notes |
|---|---|---|---|
| GA4 property | Plausible site | manual | Record timezone, domain, and ownership. One property becomes one import. |
| Page view | Plausible pageview | transform | Imported counts are daily aggregates, not raw hits. |
| Session source | Plausible source | transform | This is not the UTM source report. |
| Session medium, campaign, or ad content | UTM medium, campaign, or content | transform | Only where the Data API returns the field. |
| Google Ads keyword | UTM term | transform | This is the Ads keyword dimension, not a general UTM term. |
| GA4 conversion event | Plausible goal | manual | Recreate the goal in site settings after import. |
| Ecommerce purchase value | None | unsupported | Revenue is not imported. Track it natively if you need it. |
| Country, device, or browser | Plausible location or device reports | automatic | Browser versions cannot be drilled into for imported rows. |
| Saved exploration or audience | Plausible filter or goal | manual | Rebuild from the signed measurement plan. |
Make the move recoverable.
Create the source-of-truth backup
Preserve GA4 configuration and dated baselines before Plausible becomes the only collector.
- Export property, data-stream, event, conversion, audience, and tag configuration.
- Save dated metric, conversion, source, and ecommerce baselines from standard reports.
- Record timezone, currency, retention, consent mode, and data-deletion settings.
- Hash the exports and the signed measurement plan.
Proof to capture: A signed manifest lists every scoped property, export file, count, and hash.
Measurement and goal map
Name every event, property, and conversion before you install the script.
- List GA4 conversions you still need.
- Write the Plausible goal or custom event for each one.
- Reject unmapped critical events.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
Parallel collection and historical import
Collect native Plausible data first, then attach GA4 history without double-counting.
- Install Plausible next to GA4 and confirm live hits.
- Link Google, pick the property, and confirm the import.
- Toggle imported data on and off in the chart menu while you compare.
Proof to capture: Save the input, output, command or tool settings, warnings, and final item counts.
The things most likely to hurt.
These are operating limits. Treat every “Stop if” condition as a blocked migration, not a suggestion.
Metric differences are treated as data loss
Consent mode, blockers, session rules, and summed daily uniques produce different totals.
- Consequence
- Teams reject valid Plausible data or keep GA4 forever.
- Mitigation
- Approve definitions and expected variance before cutover.
Stop if: A critical metric has no owner-approved interpretation.
Conversions never appear after import
Imported goal data stays hidden until you recreate the goals in Plausible.
- Consequence
- Business reporting looks empty on day one.
- Mitigation
- Recreate every signed goal and fire it on a live page.
Stop if: A critical event has no verified Plausible receipt.
GA4 tags stay live past the comparison window
Old tags, GTM containers, or server-side streams keep collecting.
- Consequence
- Privacy scope and cost exceed approval.
- Mitigation
- Write a dated parallel-run plan and remove GA4 only after sign-off.
Stop if: An unowned GA4 collector remains active.
Do the work in this order.
- Days 1–3 · inventory
Inventory and decisions
6–12 hours active2–3 days elapsedOwner review waiting- Inventory GA4 properties, events, conversions, tags, and reports.
- Approve scope, owners, mappings, and exclusions.
Depends on: Google Analytics 4 and Plausible administrator access
Stop / go checkpointInstall?
Go when: Every critical item has an owner and disposition.
Stop when: Consent, billing, access, or system ownership is unclear.
- Days 3–5 · backup
Backup and baselines
5–10 hours active1–3 days elapsedExport processing waiting- Create immutable exports and dated metric baselines.
- Reconcile property IDs, event names, and hashes.
Depends on: Approved inventory
Stop / go checkpointCollect?
Go when: Source totals and export manifests agree.
Stop when: Any critical property or conversion list is absent.
- Days 5–20 · pilot
Parallel run and import
10–30 hours active10–16 days elapsedTwo to four weeks of overlap, plus the import email waiting- Install Plausible and confirm live pageviews and goals.
- Import the GA4 property and compare imported versus native dates.
Depends on: Verified backup
Stop / go checkpointScale?
Go when: Native hits, imported dates, and goal tests pass.
Stop when: Any critical check fails or a date gap is unexplained.
- Days 18–28 · cutover
Switch collection
4–12 hours active1–4 days elapsedTag and container publish waiting- Remove or pause GA4 collection on production pages.
- Keep the GA4 property readable and run blocking checks.
Depends on: Passed pilot and approved rollback
Stop / go checkpointOpen production?
Go when: Plausible owns approved measurement and every blocking check has evidence.
Stop when: A GA4 collector remains active or a conversion is missing.
- Days 22–40 · observe
Observe and close
3–12 hours active5–10 days elapsedOne reporting cycle waiting- Watch one complete reporting cycle.
- Sign the verification report before you close rollback.
Depends on: Verified cutover
Stop / go checkpointClose rollback?
Go when: No trigger occurs during the agreed observation period.
Stop when: Collection, access, or business reporting regresses.
Cut over with a way back.
Cutover
Make Plausible the only production collector without losing the approved GA4 baseline.
- Confirm native Plausible hits and recreated goals.
- Finish the GA4 import and record the imported date range.
- Pause GA4 tags, GTM tags, and server-side streams.
- Run every blocking verification check and keep the GA4 property readable.
- Keep the source intact through the rollback window.
Proof to capture: Plausible owns production measurement, imported dates are recorded, and every blocking check has evidence.
Rollback
Return collection to GA4 without losing Plausible-era events.
- Stop relying on Plausible as the only production report.
- Restore the prior GA4 tags, GTM container, and server-side streams.
- Export the Plausible post-cutover period.
- Keep both datasets labeled until the next reporting cycle.
- Run the same blocking checks against GA4.
Proof to capture: GA4 again owns production measurement and no unowned collector remains.
- Unexplained critical count or value variance
- A critical conversion has no destination receipt
- Imported history covers the wrong property or dates
- Failed access, consent, or deletion check
- A critical report has no safe Plausible replacement
Prove the migration worked.
Every blocking check must pass. Capture the evidence before cleanup begins.
| Pass | ID | Check | Method | Expected result | Evidence |
|---|---|---|---|---|---|
V-01Blocking | Live event receipt | Trigger every critical client and server event. | One valid Plausible event with approved properties. | Event log. | |
V-02Blocking | Recreated goals | Complete every approved conversion path after goals exist in site settings. | Each signed goal fires once. | Goal report. | |
V-03Blocking | Imported date coverage | Compare the import row in Imports & Exports with the GA4 property ID and date range. | Every supported period is imported or explicitly archived. | History ledger. | |
V-04Blocking | Parallel-run interpretation | Compare daily visitors, visits, and top pages for the overlap window. | Variance is explained and owner-approved. | Metric comparison. | |
V-05Blocking | Source and campaign behavior | Run tagged journeys and inspect native Plausible source reports. | Source, medium, and campaign resolve as designed on native data. | Attribution test. | |
V-06Blocking | Consent, retention, and deletion | Test opt-out, deletion, access, and retention configuration. | Collection and lifecycle match policy. | Privacy evidence. | |
V-07 | Imported-data exclusions | Open exit pages, scroll depth, hourly view, UTM source, and consolidated view. | Each gap is documented. No report claims imported coverage it does not have. | Limitation checklist. | |
V-08Blocking | Reporting ownership | Inspect tags, SDKs, APIs, exports, and dashboards. | Plausible owns approved production measurement. | Ownership checklist. |
Remove the scaffolding safely.
Safe after: One complete reporting cycle, at least seven stable days, and owner sign-off on every blocking check.
- Create final GA4 exports and archive verification evidence.
- Revoke the Google account link if you no longer need it. Plausible does not need it after a finished import.
- Remove obsolete GA4 tags, GTM tags, and server-side streams.
- Keep the GA4 property readable through the approved retention window.
- Cancel paid Google properties only after billing, legal, and recovery review.
- Schedule the next Plausible backup, access, and playbook review.
When the plan met reality.
First-hand accounts are preferred. Vendor case studies are labeled, and every note below is an editorial paraphrase—follow the link for the full context.
Swizec Teller writes that swizec.com ran Google Analytics for 15 years and that GA4 was the breaking point. A weekend adding GA4 to a test site recorded no pageviews. He moved to Plausible for a 1 kb script, cookie-free GDPR posture, and event tracking. Email signup fired with window.plausible('Email Signup') on the first try, after years of unused GA conversion setup. He does not describe a historical import. The useful field lesson is that collection and goal setup were the cutover, not report parity.
- Prove live pageviews and one real conversion on Plausible before you spend time on GA4 report reconstruction.
- Treat GA4 setup cost as part of the migration decision, not a sunk cost you have to finish.
- A failed GA4 test install was enough reason to leave, even after 15 years of Universal Analytics history.
- Plausible custom events were usable on the first attempt where GA conversion setup had never been.
Carlos Bindert, running the stack at YIP, replaced Google Analytics with Plausible during a December 2022 domain move as Universal Analytics sunset approached. They picked Plausible over Simple Analytics, Fathom, and Matomo after a trial on part of a Webflow site. Collection started 29 December, the night before the domain change. Six months later the team still liked sources, realtime, and CSS-class conversions. They lost Narrative BI Slack reports, froze Looker Studio, and could not share the dashboard by path. Search Console linking helped and was not exact.
- Install Plausible before a domain change so the new host starts with native data instead of a hole.
- List the reports you will lose, such as Looker Studio and path-restricted sharing, before you call the move done.
- Script size and a simple dashboard mattered more than matching every GA report.
- Weekly email snapshots plus a Slack mailbox were a workable, rough replacement for automated GA commentary.
Verify against the primary material.
Platform behavior changes. Check these sources and the review dates above before executing a production migration.
- Plausible: import stats from Google AnalyticsAccessed 2026-10-28
- Plausible: migrate from Google AnalyticsAccessed 2026-10-28
- Plausible: verify the integrationAccessed 2026-10-28