Pirsch
A cookieless, EU-hosted analytics service distinctive for first-class server-side tracking through backend SDKs and an API.
INTEGRATES: google-tag-manager
ALTERNATIVES: plausible-analytics · fathom-analytics · simple-analytics · umami
Pirsch is a German, cookieless analytics service built in Go on ClickHouse and hosted on German servers. Its distinguishing feature in the privacy-first field is collection flexibility: alongside the usual JavaScript snippet, it treats server-side tracking as the recommended path — official SDKs for JavaScript, Go, and PHP (plus community .NET and Ruby SDKs) and an HTTP API let you record page views from your application code, which sidesteps ad blockers entirely because there is nothing for the browser to block.
How it models data. Visitors are identified by a hash computed from IP address, User-Agent, the date, and a per-site salt. The salt varies from site to site so visitors cannot be matched across dashboards, and the date input limits recognition to a 24-hour window — there is no persistent identifier and no cross-day visitor stitching by design. The IP address itself is never stored; Pirsch keeps the page path, referrer, UTM parameters, language, browser, OS, country, city, device type, screen size, and time of visit, with the raw User-Agent retained for up to three months. Reporting covers pageviews, referrers, UTMs, custom events with metadata, conversion goals, segmentation tags, and funnels, with dashboards shareable per site.
Implementation notes. For server-side tracking you must forward the visitor’s IP, the full URL, and the User-Agent header on every hit; Pirsch recommends also passing Accept-Language and the Sec-CH-UA Client Hints headers, since data quality depends on what you send. Authentication is via an access key (simplest) or a client ID/secret pair that requires token refresh on 401 responses; the docs suggest wiring tracking into router middleware. That flexibility is also the main gotcha: when you instrument the backend yourself, filtering out health checks, bots hitting your origin, and requests served from a CDN or cache layer is your responsibility, not the snippet’s. Client-side users get the usual options — a script tag, a Google Tag Manager setup, and a proxy script (including a Cloudflare Workers variant) — plus documented plugins for WordPress, Shopify, Laravel, Webflow, Framer, Astro, Docusaurus, and other platforms.
Migration. Pirsch can import historical statistics from Google (Universal) Analytics, Plausible, and Fathom, but imported data is second-class: filters are disabled on views that include it, hourly breakdowns are unavailable, and imported data cannot be re-exported. Imports only cover dates before your Pirsch dashboard was created, so the two datasets never overlap. Going the other way, you can export the previous 12 months of statistics, and a DPA is available for GDPR paperwork.
Pricing is by monthly pageviews: the Standard plan starts at $6/month for 10k pageviews across up to 50 sites with API access included, while Plus ($12/month) adds unlimited sites, funnels, A/B testing, segmentation, custom domains, and white-labeling. There is a 30-day trial but no free tier. The company publishes the Go library its collection core grew out of, but the product itself is proprietary SaaS with no self-hosted edition.
Use it when you want privacy-first analytics and care about measurement accuracy under ad blockers, especially if your stack makes backend instrumentation natural, or you run client sites and want the white-label option. Look past it when you need self-hosting, user-level product analytics, cross-day visitor journeys, or analysis beyond aggregate web reporting.