Why Webflow has its own playbook
Webflow’s CMS / hosting model is closed — no theme files to edit, no plugin system. Analytics live in two places: Project Settings → Custom Code (head/footer), and any installed embeds (Memberstack, Outseta, form connectors). All cleanup is UI-driven.
Pre-flight
- Audit Custom Code locations. Project Settings → Custom Code → Head Code + Footer Code. Search for `gtag` / `googletagmanager`.
- Audit page-level Custom Code. Page Settings → Custom Code (per-page Site plan and above only). Some teams sneak GA4 here for split testing.
- Audit Webflow integrations. Memberstack, Outseta, Google Analytics native integration. Each emits gtag separately.
- Confirm plan capabilities. Free / Basic plans can’t edit per-page head code — only site-wide. Site / Business plans can.
Step-by-step
1. Install Plausible (Day 1)
Project Settings → Custom Code → Head Code:
<br />
<script defer data-domain="example.webflow.io" src="https://plausible.io/js/script.js"></script><br />
If Webflow is on a custom domain (recommended), use that domain in `data-domain`:
<br />
<script defer data-domain="example.com" src="https://plausible.io/js/script.js"></script><br />
Save → Publish.
2. Track form submissions (Day 1-2)
Webflow forms don’t auto-track. Add a script for form-submit tracking:
<br />
<script>
document.querySelectorAll('form').forEach(form => {
form.addEventListener('submit', () => {
plausible('Form submit', { props: { id: form.id || form.name || 'unnamed' } });
});
});
</script><br />
3. Track outbound links (Day 1-2)
Set Plausible to auto-track outbound clicks:
<br />
<script defer data-domain="example.com"
src="https://plausible.io/js/script.outbound-links.file-downloads.js"></script><br />
4. Dual-tag (Days 2-14)
Plausible runs alongside existing GA4. Compare daily.
5. Remove GA4 (Day 14)
- Project Settings → Custom Code → Head Code → DELETE gtag block
- Project Settings → Integrations → Google Analytics → DISCONNECT (if used native integration)
- Page Settings on each page → Custom Code → check for stray gtag
- Re-publish entire site
6. Verify (Day 15)
Open published site → DevTools → Network → reload. Filter “google” should be empty. Plausible script should appear.
Webflow-specific gotchas
- Webflow CDN cache — Custom Code changes need full re-publish; preview environment may show stale state for hours.
- Per-page Custom Code — Site plan and above. If you have GA4 on individual pages (split tests, one-off campaigns), check each manually.
- Native GA integration — Webflow’s Project Settings → Integrations → Google Analytics emits gtag without showing up in Custom Code. Disconnect explicitly.
- Memberstack / Outseta — These emit their own analytics events. Don’t conflict with Plausible but are separate streams.
- Webflow Ecommerce — Native checkout doesn’t expose hooks for purchase events. Use the order-confirmation page redirect with `plausible(‘Purchase’, {…})`.
Frequently asked
Webflow forms vs Memberstack / Outseta forms — different tracking?
Yes. Webflow native forms fire normal submit events you can hook. Memberstack / Outseta have their own events — check their developer docs for callbacks.
Does Plausible support Webflow's localised content?
Yes. Plausible auto-detects URL changes including language switchers. Custom dimension for language requires manual props.
What about the Webflow Designer iframe?
Don’t worry — Plausible’s `data-domain` filtering excludes Webflow’s editor / preview environments automatically.
Page speed impact?
Plausible’s 1.4kB vs GA4’s 87kB is ~80kB saved. Webflow sites typically gain 100-200ms LCP on mobile.
What about Webflow's built-in page-view tracking?
Webflow doesn’t have built-in analytics — it relied on Google Analytics native integration. Once you disconnect that, you need Plausible (or any) to see traffic.