The decision to leave Google Analytics 4 rarely happens overnight. It’s usually a slow accumulation of small frustrations: a UI you can’t navigate without a tutorial, a consent banner that tanks your conversion rate, a sampling notice on the one report you actually needed, a legal email about Schrems II, a finance question about the cost of Google Tag Manager Server-Side, or simply the realization that you don’t own the data describing your own audience. At some point the friction crosses a line, and you decide to migrate.
This walkthrough is for site owners who have made that decision and want a clear, mechanical path from GA4 to Plausible — without losing the data points they actually use. I’ll show you what migrates cleanly, what doesn’t, and how to run both tools in parallel for 30 days so you can verify the numbers before pulling the plug. The whole installation takes about 30 minutes. The reconciliation period takes a month. Plan accordingly.
I’m not going to pretend this is a like-for-like swap. Plausible is intentionally smaller than GA4 — that’s the point. If you used GA4 because you genuinely needed multi-touch attribution and BigQuery export, this migration will leave gaps. If you used GA4 because someone told you to and you mostly look at the top-pages report, you’ll be relieved by how much you don’t miss.
Before You Start: A 5-Minute Audit
Before you commit, double-check that Plausible is actually the right fit. Here is how it lines up against two common alternatives:
| Feature | Plausible | Fathom Analytics | Matomo |
|---|---|---|---|
| Pageviews & visitors |
✓ Pageviews + unique visitors
|
✓ Pageviews + unique visitors
|
✓ Pageviews + visits + visitors
|
| Live visitor count |
✓ Live, ~5s refresh
|
✓ Real-time count
|
✓ Visitors in real-time widget
|
| Top pages report |
✓ By pageviews/visitors
|
✓ By pageviews/visitors
|
✓ Pages report (drillable)
|
| Top referrers |
✓ Source domain breakdown
|
✓ Referrer + UTM breakdown
|
✓ Channels report (drillable)
|
| UTM campaign tracking |
✓ Source/medium/campaign breakdown
|
✓ Source/medium/campaign
|
✓ Full attribution model
|
| Custom events |
✓ All paid plans (Starter $9+)
|
✓ fathom.trackEvent() with optional revenue (_value)
|
✓ Multi-dimensional events
|
| Goals / conversions |
✓ All paid plans
|
✓ Events with optional monetary value (revenue tracking)
|
✓ Multi-step + revenue tracking
|
| Cookieless by default |
✓ Daily salt rotates every 24h, then deleted
|
✓ Cookieless: no localStorage/sessionStorage; daily salt rotation (24h UTC) on visitor hash
|
~ Opt-in mode (one-line JS or admin toggle); cookies on by default
|
| GDPR-compliant out of the box |
Yes Vendor legal opinion (CNIL-aligned); DE TTDSG/IT Garante stricter
|
True Vendor claims no banner needed (no PII, no terminal storage); legitimate-interest basis
|
Partial CNIL exemption (FR); DSK (DE) + Garante (IT) require case-by-case DPA review
|
| Self-hostable |
✓ MIT, Docker
|
— Cloud-only (no self-host)
|
✓ Free
|
The most common migration mistake is treating GA4 as a single product when it’s actually four or five things bolted together. Before you touch Plausible, spend five minutes inventorying what you actually use. Open GA4 and write down the answers to these questions:
- Custom events. What events have you defined beyond the automatic page_view? Newsletter signups, file downloads, form submissions, video plays, scroll depth? List them by name.
- Conversions / key events. Which of those events are marked as conversions? This is your goals list.
- Audiences. Have you built audience segments — for example, “users who viewed pricing but didn’t sign up”? Note them, but understand most won’t migrate.
- Custom dimensions. Are you sending custom properties (logged_in, plan_tier, author, content_type)? These map to Plausible’s custom event properties, but the path is manual.
- Ecommerce. Do you have a configured Enhanced Ecommerce or GA4 ecommerce setup with purchase events and revenue tracking? Plausible supports revenue, but the schema is different.
- Integrations. Are you piping GA4 to BigQuery, Looker Studio, Google Ads, or Search Console? Each integration has its own migration path or replacement.
- Reports you actually open. Pull up your “Most viewed” reports for the last 30 days. If the only thing you ever click is “Pages and screens” and “Traffic acquisition,” you’ll be home free.
Write this down. The audit doubles as your acceptance test — when you finish migrating, you should be able to answer every question above using Plausible alone.
What You Can Migrate Cleanly
The good news is that the data points most site owners actually use are exactly the data points Plausible captures by default. If you’re a content site, blog, SaaS marketing site, documentation, or small ecommerce store, here’s what works without effort:
- Page views — same metric, simpler definition (no engagement-time threshold).
- Sessions / visits — Plausible calls them “visits”; the underlying definition is similar (30-minute inactivity window).
- Top pages, top entry pages, top exit pages — built-in reports.
- Top sources, channels, campaigns — referrer parsing plus full UTM tagging.
- Country, region, city — IP-derived (anonymized, not stored).
- Device, browser, OS — User-Agent derived.
- Custom events — the conceptual model is identical: send a named event, optionally with properties.
- Goals — page-based or event-based; you define them once and they appear in every report as a conversion column.
- Outbound links, file downloads, 404s, hash routes — supported via opt-in script extensions.
- Revenue tracking — supported on Business plan; you pass currency and amount with the event.
For most non-enterprise sites, that list covers 90% of the reporting that ever gets read. If your monthly review meeting consists of “traffic up or down, top 10 pages, top sources, conversion count” — you can stop reading the migration risks section.
What Doesn’t Map Directly
Honesty matters here. There are GA4 features Plausible deliberately does not replicate, and pretending otherwise is how migrations fail in week three when someone asks for a report you can’t produce. Here’s the list of gaps:
- Free-form Explorations. GA4’s Explore tab lets you build pivot-style ad-hoc reports. Plausible has filters and breakdowns, but no equivalent to the multi-dimensional pivot canvas. If you live in Explore, you’ll feel the loss.
- Audiences. GA4 audiences are evaluated server-side and can be exported to Google Ads for remarketing. Plausible has no audience builder. If remarketing is core to your stack, this is a hard blocker — keep GA4 or use a dedicated tag for ad platforms.
- Advertising integrations. Google Ads and Display & Video 360 hook directly into GA4 for bid signals. Plausible doesn’t replace this. You’d run Google Ads conversion tracking directly on the site, separately.
- BigQuery export. GA4 has a free BigQuery export (with daily limits). Plausible has CSV export and a stats API; you can pipe it to a warehouse, but you write the loader yourself.
- Multi-touch attribution and lookback windows. Plausible attributes a conversion to the last non-direct UTM source within the visit. There’s no data-driven, position-based, or 30-day lookback model. For long, multi-session B2B funnels, this is a real reduction in fidelity.
- User-level reports. Plausible doesn’t expose individual user IDs in the UI. Cohort retention, lifetime-value-style reports, and user-explorer drilldowns are not available.
- DebugView and real-time troubleshooting at field level. Plausible has a real-time dashboard, but no per-event debug stream the way GA4 DebugView does.
- Historical data. You cannot import GA4 history into Plausible. Day one in Plausible is day one — the past stays in GA4 for as long as you keep the property alive (export anything you want to keep first).
Now the side-by-side, so you can show this to a stakeholder in 30 seconds. If anyone on the team is also weighing the lighter end of the privacy-first shortlist, our side-by-side breakdown covers the trade-offs against Simple Analytics.
| Capability | GA4 | Plausible |
|---|---|---|
| Page views, sessions, sources | Yes | Yes |
| Custom events | Yes (25 params) | Yes (props, unlimited names) |
| Goals / conversions | Yes (mark events) | Yes (define in UI) |
| Funnels | Free, in Explore | Business plan only |
| Cookieless tracking | Cookies on by default | No cookies, ever |
| Consent banner required (EU) | Yes | No (no PII stored) |
| BigQuery / raw export | Native, free | CSV + API only |
| Audiences for ad remarketing | Yes | No |
| Attribution models | Multiple incl. data-driven | Last non-direct only |
| Historical data import | — | Not supported |
If you want a fuller side-by-side that includes Matomo, Fathom and other contenders, see the 15 best Google Analytics alternatives in 2026 roundup. And for a deeper look at Plausible specifically — pricing tiers, the Business plan, edge cases — the Plausible Analytics review for 2026 covers it. Our standalone Plausible Analytics tool profile keeps the same scorecard up to date alongside the rest of the privacy-first shortlist.
Step 1: Sign Up and Verify Domain
Go to plausible.io, start a 30-day trial (no card required), and create your first site. The form asks for your domain — enter the apex (example.com), not a subdomain, unless you want subdomain-only tracking. Plausible will generate the tracking snippet on the next screen, but don’t paste it yet. Domain verification happens automatically once the snippet starts firing; there’s no DNS step, no Search Console handshake, no waiting 24 hours.
While you’re in setup, take 60 seconds to configure two things:
- Time zone. Reports default to UTC; switch to your business time zone so “today” matches what the rest of your team sees.
- Reporting currency. Only relevant if you’ll track revenue. Set it now to avoid mixed-currency reports later.
You can add additional team members later. Plausible’s permission model is simpler than GA4 — owner, admin, viewer — and that’s the whole list.
Step 2: Install the Tracking Snippet
You have four installation routes. Pick the one that matches your stack. They are not equivalent — the proxy route, in particular, has implications for ad-blocker bypass and first-party data ownership that the raw script does not.
Route A: Raw script tag
The simplest install. One line goes in the <head> of every page:
<script defer data-domain="example.com" src="https://plausible.io/js/script.js"></script>
If your site is fully static or rendered through a single layout file, this is done in 30 seconds. The downside: the script loads from plausible.io, which means ad-blockers will block it, and some browsers’ tracking-protection lists will too. Expect 5-15% under-counting from blocked requests alone.
Route B: WordPress plugin
If you run WordPress, install the official “Plausible Analytics” plugin from the repository. It handles snippet injection, exclusions for logged-in users (so admin pageviews don’t pollute data), 404 tracking, outbound link tracking, and — importantly — a one-click proxy mode that serves the script from your own domain. For most WordPress sites this is the recommended install path. Plugin overhead is negligible (the script is the same script).
Route C: Google Tag Manager
If your site already runs GTM, you can deploy the Plausible snippet as a Custom HTML tag firing on All Pages. This works, but adds a layer of latency and a single point of failure (GTM itself becomes a blocker). Use this route only if you can’t edit the site theme directly. Important caveat: ad-blockers that block GTM also block the Plausible tag inside it. The proxy route doesn’t help here, because the bottleneck is GTM, not the tracker.
Route D: Plausible Proxy (recommended for ad-blocker bypass)
This is the route serious operators choose. Instead of loading the script from plausible.io, you proxy it through your own domain (e.g., example.com/js/stats.js and POST to example.com/api/event). Ad-blockers can’t easily distinguish a first-party request from a tracking request when the domain matches your site. Plausible publishes a step-by-step proxy guide for Cloudflare Workers, Netlify, Vercel, Caddy, Nginx, and a handful of other platforms.
This is also the route that maximizes your first-party data position. If you want to understand why first-party matters more than the cookieless framing alone, the first-party tracking explained without cookies guide walks through the mechanism.
Step 3: Migrate Goals to Custom Events
This is where most of the manual work lives. Every GA4 conversion you flagged in your audit needs an equivalent Plausible custom event. The mapping is conceptually clean — GA4 events with a name become Plausible events with the same name — but you’ll touch each one to wire it up in the front-end.
Here’s a typical mapping for a SaaS marketing site:
| GA4 Event | Plausible Goal | How to fire |
|---|---|---|
| generate_lead | Signup | plausible('Signup') on form success |
| file_download | Download | Auto via file-downloads extension or manual |
| click (outbound) | Outbound Link | Auto via outbound-links extension |
| view_pricing | Pageview /pricing | Page-based goal — no code needed |
| purchase | Purchase (revenue) | plausible('Purchase', {revenue:{currency:'USD',amount:49}}) |
| subscribe | Subscribe | plausible('Subscribe', {props:{plan:'pro'}}) |
Two practical rules: keep event names human-readable (Plausible shows them verbatim in the UI), and use props for the dimension-style data you’d previously have shoved into a custom dimension. A single “Signup” event with a plan property is much easier to filter than four separate events called Signup_Pro, Signup_Starter, etc.
For page-based goals (anything that’s just “did the visitor reach this URL”), don’t write any JavaScript at all. Define the goal in the Plausible UI as “Pageview” with the URL pattern, and you’re done. Most signup-success and thank-you-page conversions fit this model.
Step 4: Set Up the Goals Dashboard
Once events are firing, head to Site Settings → Goals and add each one. Plausible immediately shows a Goals tab on the main dashboard with conversion counts and conversion rates per source, per page, per device — the full breakdown set, but filtered to that goal.
If you’re on the Business plan, this is also where you build funnels. The funnel builder takes 2-5 sequential goals and produces a step-through report (visitors who completed step 1, of those who completed step 2, etc.). It’s not as flexible as GA4 Explore funnels — you can’t insert filters between steps — but it covers the common signup-flow and checkout-flow case.
For revenue-bearing events, there’s a Revenue column added to the Goals report once you’ve sent at least one event with a revenue property. Currency conversion is handled server-side based on the daily ECB rate against your reporting currency.
Step 5: Run Both in Parallel for 30 Days
Do not turn off GA4 yet. The single most valuable thing you can do during a migration is run the old and new tools side by side for a full 30 days. Here’s why it matters and what to compare.
The reason: every analytics tool counts slightly differently. Bot filtering, session timeout rules, referrer-spam handling, single-page-app handling, and ad-blocker reach are all calibrated differently. If you switch overnight and your numbers move 12%, you have no way to know whether the move is real, a tool difference, or a bug in your install. With 30 days of overlap you can answer that question.
What to compare each week:
| Metric | Comparison |
|---|---|
| Total visits / sessions | Plausible should be 5-15% lower; trend direction should match |
| Top 20 pages | Order should be near-identical; absolute counts within 15% |
| Top 10 referrers | Both lists should agree on the top 5; long tail will differ |
| UTM-tagged campaigns | Should be within 5% — UTM data is captured the same way |
| Conversion / goal counts | Should be within 10% if goals are mapped correctly |
If any row in that table is off by more than the stated tolerance, stop and debug before decommissioning. The most common cause is an event that’s firing in GA4 (because it was set up two years ago by a developer who left) but not in Plausible (because you only mapped the events you knew about during the audit).
Step 6: Reconcile the Numbers
Even after a clean install, expect your Plausible numbers to be 5-15% lower than GA4. This isn’t a bug. It’s the predictable result of three differences:
- No cookies. Plausible identifies a unique visitor with a daily-rotating hash of (IP + User-Agent + salt). A user who clears cookies between visits looks the same to Plausible (same IP/UA hash) but counts as a new user in GA4 cookie-based attribution. Net: Plausible’s unique-visitor count is lower; raw pageviews match closely.
- No consent banner needed, so no banner skew — but blocked requests still happen. Plausible doesn’t require a consent banner because no personal data is stored, but ad-blockers don’t know that and block it anyway. The proxy install (Route D above) recovers most of the 5-10% blocked traffic. Without the proxy, expect that gap to persist. If consent banner UX has been hurting your conversion rate, the analysis in cookie consent banner hurting conversions — here’s what to do is worth a read while you’re decommissioning yours.
- Different bot filtering. Plausible filters bots using the IAB/ABC International Spiders & Bots List plus its own heuristics. GA4 has its own list. Lists overlap but aren’t identical, so a small fraction of traffic gets classified differently.
If your gap is 5-15%, you’re normal — keep going. If your gap is over 25%, something is wrong. Common causes: snippet missing on some pages, single-page-app routes not firing pageview events, multiple Plausible properties on the same domain, or a CSP blocking the script.
One more thing worth understanding: GA4 has historically over-counted in some configurations because its session definition is unusually generous. The “real” number is somewhere between the two tools, but for trend purposes — which is what 99% of analytics is used for — pick one and stick with it.
If part of your decision was data ownership and you would prefer to self-host instead of running on Plausible Cloud, the Matomo compared with Plausible piece weighs the trade-offs of going fully self-hosted on Matomo’s heavier feature stack.
Step 7: Decommission GA4
After 30 days of clean parallel data, you can pull GA4. The order of operations matters because GA4 has a 14-month default retention floor, and once you delete the property the historical reports go with it. Here’s the safe sequence:
- Export anything you want to keep. Use the GA4 reporting UI to export the last 12-24 months of your top 5 reports as CSV. If you’re on a property with BigQuery export enabled, do a full historical export to a separate dataset that’s not tied to the property.
- Save the property in read-only mode. You don’t have to delete GA4 immediately. Stop sending it new data (remove the GA4 snippet) but keep the property alive. Reports remain queryable for the retention window.
- Remove GTM tags or hardcoded snippets. Delete the GA4 Configuration tag and any GA4 Event tags from GTM, or remove the gtag.js script from your theme. Publish.
- Verify with Real-time view. Both Plausible and GA4 have real-time dashboards. Browse the site yourself; confirm Plausible shows you and GA4 doesn’t.
- Disable Google Signals (if enabled). Property Settings → Data Settings → Data Collection → toggle off. This stops cross-device backfilling that can keep showing data after the snippet is removed.
- Update your privacy policy and cookie banner. Remove GA4 from the list of cookies/services. If Plausible was your only remaining tracker, the banner can often go entirely (depending on jurisdiction). The privacy-friendly website analytics complete guide covers what most sites actually need to disclose.
- Set a calendar reminder to delete the GA4 property. 90 days out is a reasonable cooling-off period. If you haven’t missed it by then, delete the property and reclaim the management overhead.
If at any step you discover a report you forgot you needed, you can stop the process — the snippet hasn’t been deleted yet, just paused — and figure out the Plausible equivalent before continuing.
Common Migration Mistakes I See
Six anti-patterns that turn a clean migration into a six-month mess:
- Skipping the parallel period. Switching cold and trying to compare a Plausible number to a GA4 number from a different month. You can’t reconcile what you didn’t measure simultaneously.
- Not auditing custom events first. Discovering in week three that the marketing team has been reporting on a “request_demo” event you didn’t migrate, because nobody told you it existed.
- Installing the raw script and never moving to the proxy. Living with 10% under-counting forever because the proxy step felt optional. It’s not — for any site over $X in revenue per month, the data quality difference pays for itself.
- Treating Plausible like a free GA4. It’s not. It has different reports, fewer reports, and a different conceptual model. If your team needs Audiences and BigQuery, accept that and choose Matomo instead — it’s the closer drop-in replacement for full-featured GA.
- Migrating before solving the consent problem. If your real reason to leave GA4 was the consent banner, make sure your Plausible install actually lets you remove the banner (it usually does, but check with your DPO if you’re in heavily regulated territory).
- Over-instrumenting events from day one. Resist the urge to recreate every GA4 event you ever added. Most of them never got read. Migrate the 5-10 events that drive decisions; add more only when someone asks a question you can’t answer.
If your motivation for leaving was specifically that GA4 felt over-engineered for what you actually do, the case is laid out plainly in why most small websites don’t need GA4 complexity.
Frequently Asked Questions
Is Plausible cheaper than GA4?
GA4 is free up to 10M events/month, then expensive (GA360). Plausible is paid from event one — pricing is page-view-tier-based, starting around $9/month for 10k pageviews. The honest answer: for low-traffic sites, GA4 is free and Plausible isn’t. For mid-traffic sites, Plausible is cheaper than the time you spend on GA4. For enterprise sites, you’re not in the market for either of them in this comparison.
Can I import my GA4 history into Plausible?
No. There’s no historical import path. Day one in Plausible is day one. Export anything you want to keep from GA4 first (CSV from the UI, or BigQuery if you had export enabled), and accept that “before” and “after” will live in different tools.
What about Google Ads conversion tracking?
Google Ads uses its own conversion tag (gtag with conversion ID), not the GA4 measurement ID. You can keep the Google Ads conversion tag firing while removing the GA4 snippet — they’re separate. If you were using GA4 → Google Ads conversion import, you’ll switch back to native Google Ads conversion tracking.
Does Plausible work with Google Tag Manager?
Yes. You can deploy the snippet as a Custom HTML tag firing on All Pages. The downside is that GTM itself is blocked by some ad-blockers, so you lose the tracking-resilience benefit. If GTM is your only deployment option, use it. If you can put the snippet in the theme, do that instead.
Can I track ecommerce / revenue with Plausible?
Yes, on the Business plan. Send a custom event (commonly named “Purchase”) with a revenue property containing currency and amount. Plausible aggregates by goal and shows revenue per source, per page, per campaign. It’s not a full Enhanced Ecommerce schema (no line items, no product-level reports) but it answers the “how much money did this campaign make” question directly.
How does opt-out work without a cookie banner?
Plausible doesn’t store personal data, so there’s nothing to opt out of in the GDPR sense — that’s the whole pitch. For users who explicitly want to be excluded anyway, there’s a localStorage.plausible_ignore = "true" trick (the script honors it) and a Do-Not-Track respect option in site settings. Most sites don’t expose this; the legal basis (legitimate interest, no PII processed) doesn’t require an opt-out path in most jurisdictions.
Can I export raw event data for my own analysis?
Yes, in two ways. The Plausible Stats API returns aggregated data over HTTP (great for dashboards). For raw event-level export, use the CSV export from each report, or — on Business plan — the imports/exports feature for full data dumps. There’s no native BigQuery streaming export, but the API plus a small script gives you a serviceable equivalent for most warehouse use cases.
Bottom Line
A GA4 to Plausible migration is a 30-minute install, a 30-day reconciliation, and a 30-minute decommission. The traps aren’t technical — they’re organizational. The audit step matters more than the install step. The parallel-run step matters more than either. And the honest framing — what you keep, what you lose — matters more than all of them combined.
If you’ve already decided this is the right move for your site, you have a working playbook above. If you’re still weighing it, the full Plausible review goes deeper on the product itself, and the best alternatives roundup includes the four or five other tools you should at least name-check before signing the order. Pick the one that fits your reporting reality, not the one with the longest feature list.
— Mark Sutton