Plausible: the product plan
A product plan on ProductBrain: 5 goals, 15 needs, 41 approaches, 47 jobs. Goals hold the why, needs the user problems, approaches the bets, jobs the checkpoints. This is a live, read-only ProductBrain plan; the interactive tree and matrix load when scripts run.
how this plan was built (the full agent transcript) · all public plans · ProductBrain
Goal: Measure the web without surveilling people
Privacy-first analytics that stays accurate and trustworthy without cookies, personal data, or cross-site tracking.
- need: Count visitors accurately without cookies or personal data
Sessionize and count real humans from raw requests alone — no cookies, no identifiers, no IP storage.
- approach: Cookieless sessionization & pageview counting (resolved)
- approach: Bot, spam & datacenter-IP filtering (validation)
- approach: Interaction-aware bounce & engagement accuracy (development)
- job: Custom events can be flagged non-interactive in the tracker and events API (done, phase: Later)
- job: A session with fewer than 2 pageviews and no interactive event counts as a bounce (done, phase: Later)
- job: Non-interactive events no longer flip a session to interactive (phase: Deeper, more trustworthy reporting)
- need: Stay compliant with privacy law by design
GDPR, CCPA and PECR compliance must be a property of the data model, not a consent banner bolted on top.
- approach: Zero-PII, cookieless data model (resolved)
- approach: EU-only data processing for Cloud (resolved)
- need: Let site owners control what gets measured
Owners need to exclude their own and unwanted traffic so the numbers they act on are clean.
- approach: Traffic shields: exclude by IP, country, page & hostname (resolved)
Goal: Give teams answers at a glance
Every key insight on one fast, clutter-free dashboard that needs no training or custom report-building.
- need: Surface every key insight on one fast page
All the metrics a team acts on — top stats, trend, sources, pages, audience, goals — on a single page with no menu-diving.
- approach: Audience: geography & device breakdowns (resolved)
- approach: Realtime visitors view (resolved)
- approach: Goals, conversions & custom properties (resolved)
- approach: Single-page dashboard: top stats & main graph (resolved)
- approach: Sources & acquisition reporting (development)
- job: Sources report breaks traffic down by referrer and UTM campaign/source/medium (done, phase: Later)
- job: Search terms appear for sessions arriving from search engines (done, phase: Later)
- job: Traffic is grouped into recognizable acquisition channels (done, phase: Later)
- job: 'AI Assistants' appears as an acquisition channel (phase: Deeper, more trustworthy reporting)
- job: Top referrers and Search terms render beside the other Sources tabs (phase: Deeper, more trustworthy reporting)
- approach: Pages, entry/exit & content reporting (development)
- job: Pages report can break down by full URL (hostname + path), not just path (phase: Deeper, more trustworthy reporting)
- job: Page-filtered Top Stats show bounce rate even when imported data is included (phase: Deeper, more trustworthy reporting)
- job: Page-filtered Top Stats show time on page even when imported data is included (phase: Deeper, more trustworthy reporting)
- job: Top pages, entry pages and exit pages each report with per-page metrics (done, phase: Later)
- need: Let analysts slice, compare and roll up the data
Filter, save segments, compare periods, and aggregate across sites without leaving the dashboard.
- approach: Filtering & saved segments (validation)
- approach: Time periods & comparisons (development)
- job: Any period can be compared against the previous period with up/down deltas (done, phase: Later)
- job: 'Last 24 Hours' is selectable in the dashboard picker and Stats API v2 (phase: Dashboard & graph refresh)
- job: Comparisons against 'Today' align to the same time range (phase: Dashboard & graph refresh)
- job: Incline/decline percentages render in top stats in comparison mode (phase: Dashboard & graph refresh)
- approach: Consolidated views across multiple sites (development)
- job: An owner can define a consolidated view over a chosen set of sites (phase: Later)
- job: The dashboard aggregates stats across all sites in a consolidated view (phase: Later)
- job: Stats API v2 /query accepts a consolidated view as its target (phase: Later)
- need: Keep the dashboard fast, legible and modern
The interface itself is the product; it must stay quick, readable in light and dark, and pleasant to look at.
- approach: Dashboard & graph UI refresh (development)
- job: Dark mode uses the refined darker color scheme with clearer hierarchy (done, phase: Later)
- job: Top bar and top stats use the redesigned styling (phase: Dashboard & graph refresh)
- job: Graph interval picker, export, imports toggle and notices live in one top-bar options menu (phase: Dashboard & graph refresh)
- job: A vertical indicator line marks the hovered or selected point on the graph (phase: Dashboard & graph refresh)
- job: Graph tooltip anchors to the top of the chart beside the hovered point (phase: Dashboard & graph refresh)
- approach: Timeline annotations on the graph (development)
- job: A user can add a dated annotation to a site (phase: Timeline annotations)
- job: Annotations render as markers on the visitors graph (phase: Timeline annotations)
- job: Clicking an annotation marker shows its note (phase: Timeline annotations)
- job: Annotations can be edited and deleted (phase: Timeline annotations)
- approach: Dashboard & graph UI refresh (development)
- need: Deliver and share insight beyond the dashboard
Push insight to people who never open the app — scheduled reports, alerts, and public share links.
- approach: Weekly & monthly email and Slack reports (resolved)
- approach: Traffic spike & drop notifications (resolved)
- approach: Shared links & public dashboards (validation)
Goal: Fund the product through subscriptions, not surveillance
A sustainable, independent business: premium Cloud features, team accounts, and honest subscription billing instead of ad-tech.
- need: Manage teams, roles and access
Multiple people per account with scoped roles, invitations, and secure sign-in.
- approach: Teams, roles & invitations (validation)
- job: Owners invite members and guests with scoped roles (done, phase: Later)
- job: A member can leave a team from Team Settings (done, phase: Later)
- job: A site owner can transfer a site to another team (done, phase: Later)
- job: Team switching happens from the topbar dropdown (standalone switcher page removed) (phase: Later)
- job: Removing a member or changing a team role behaves correctly (phase: Later)
- approach: Two-factor auth & account security (resolved)
- approach: Teams, roles & invitations (validation)
- need: Convert and bill Cloud subscribers
Turn trials into paying subscriptions and handle plans, limits and dunning without friction.
- approach: Paddle subscriptions & plan management (resolved)
- approach: Usage quotas, limits & grace periods (resolved)
- need: Justify premium with team-grade capabilities
Give paying teams features worth paying for: funnels, revenue, enterprise SSO, and a provisioning API.
- approach: Conversion funnels (premium) (resolved)
- approach: Ecommerce revenue goals & attribution (premium) (validation)
- approach: Enterprise SSO / SAML for teams (development)
- job: A team admin configures a SAML integration with IdP metadata (phase: Enterprise SSO)
- job: A team verifies ownership of an email domain for SSO (phase: Enterprise SSO)
- job: Users at a verified domain sign in via SAML SSO (phase: Enterprise SSO)
- job: A team can enforce SSO and centrally manage or revoke SSO sessions (phase: Enterprise SSO)
- approach: Sites provisioning API (premium) (resolved)
Goal: Make adopting Plausible — and building on it — effortless
Two-minute install, painless migration off Google Analytics, and open APIs so anyone can build on their own data.
- need: Get tracking live in minutes
From sign-up to first pageview should take one snippet and a verification check — no developer required.
- approach: Lightweight tracker script & snippet (resolved)
- approach: Next-gen configurable tracker (validation)
- job: A site-specific dynamic tracker script is generated and served per site (done, phase: Later)
- job: The script tracks outbound links, file downloads and 404s from config with no code changes (done, phase: Later)
- job: The script tracks form submissions when enabled (done, phase: Later)
- job: plausible.init() overrides tracking options page-by-page (done, phase: Later)
- job: Scroll-depth tracking uses ResizeObserver instead of polling (no forced reflows) (phase: Deeper, more trustworthy reporting)
- approach: Guided installation & verification (validation)
- need: Bring history and existing tools across
Nobody switches if they lose their history; import GA and connect the tools teams already use.
- approach: Google Analytics 4 import (resolved)
- approach: CSV import/export & full-site export (resolved)
- approach: Google Search Console integration (resolved)
- need: Let developers build on the data
Expose the stats and site management through documented, versioned APIs so teams can automate and integrate.
- approach: Public Stats API v1 (resolved)
- approach: Stats API v2 query language (validation)
- job: POST /query returns composable metric+dimension+filter results validated against the JSON schema (done, phase: Later)
- job: include.trim_relative_date_range trims empty trailing buckets for day/month/year (done, phase: Later)
- job: Revenue metrics (total_revenue, average_revenue) can be queried with visit dimensions (phase: Stats API v2 depth)
- job: views_per_visit can be queried with a time dimension (phase: Stats API v2 depth)
- job: An empty filter-clauses list is rejected with a clear error (phase: Stats API v2 depth)
- approach: Plugins API & outbound webhooks (resolved)
Goal: Serve managed Cloud and self-hosters from one codebase
Ship both a hosted service and an open-source Community Edition from the same code, and run Cloud reliably at scale.
- need: Ship a self-hostable Community Edition
A free, open-source build anyone can run on their own server, with the edition split kept clean.
- approach: Community Edition distribution (resolved)
- approach: Edition split & premium gating (resolved)
- need: Operate Cloud reliably at scale
Ingest and query high event volumes with headroom, and see what the system is doing in production.
- approach: ClickHouse ingest & query pipeline (resolved)
- approach: Observability: OpenTelemetry, PromEx & Sentry (resolved)
Make yours · Made with ProductBrain