Privacy-first product analytics
Product analytics without the cookie banner.
Events, funnels, journeys and retention for your website, your browser extension or your app. Nothing is collected about who people are, and nothing is loaded at runtime, so store reviewers have nothing to object to.
- Daily active
- 1,284
- Weekly
- 4,910
- New
- 57
| Event | Count |
|---|---|
| report_viewed | 12,408 |
| settings_saved | 3,271 |
| export_failed | 96 |
No cookies
None on your visitors or users
No fingerprinting
A random id, scoped to one project
No IP addresses kept
The IP resolves a region, then is discarded
Three ways in, one dashboard
What runs is what you installed
Conventional analytics snippets fetch their own JavaScript at runtime, and whatever the vendor serves that day runs in your product. Nothing here does.
A website bundles the package, or loads one pinned file whose integrity hash the browser checks. A browser extension bundles a package of its own. An app sends its events over HTTP, with no SDK at all. All three report into the same dashboard.
import { init } from "@analyticstrend/web";
const analytics = init({
writeKey: "wk_8a6bc8b7effeb3ad9033",
pageViews: "history",
});
analytics.track("signup");Website, no build step
One tag in the <head> of WordPress, Webflow, Squarespace or any page, from jsDelivr, pinned to one version and checked by its hash. It counts page views by itself. See installing without a build step.
Browser extension
The extension SDK starts in your background script and counts installs and uninstalls as well as your events. What it handles for you, and what the stores ask, is under browser extensions below.
Mobile, desktop and server apps
An iOS or Android app, a Tauri or .NET desktop app, a server or a game sends the same events over HTTP, with no SDK, into the same reports. The app guide has runnable examples in Swift, Kotlin, Rust, C#, JavaScript and Python, and the collector HTTP API has every field.
What you get
What it measures
For every project
Events
Any action you care about, in one line of code, with properties to group it by, and link clicks, downloads and form submissions once you turn them on.
Goals
An event, an event with a property, or a page, with its conversion rate and revenue by source, page, country and device.
Funnels
Two to eight goals in order, and how many visitors carried on at each step.
Journeys
What people do in sequence, from entry, after a step or before one, drawn as a flow, totals only.
Retention
Weekly cohorts, so you can see whether a release changed who came back.
Locations and devices
Countries on a map, with regions in 21 of them, the languages people read, and browsers by name, operating systems and device types.
Versions
Which releases people run, how fast a new one takes hold, and every report for one version, to compare releases.
Screens
An app's most viewed screens, the screen each day began on, screen goals and journeys through screens.
AI assistants, through MCP
Ask your AI client about your numbers, and have it set up goals and funnels, with a token an Admin allows.
CSV export
Every report table as a spreadsheet, and the raw events for Admins, with visitor ids replaced.
Members and roles
Read, Write and Admin, so a team can share one account.
For websites
Pages
Each page's views and visitors, and the page each visit began on.
Sources and referrals
Search, social, email and tagged campaigns, AI assistants such as ChatGPT and Perplexity as a channel of their own, and the sites that sent visitors, by name.
For browser extensions
Installs and uninstalls
Side by side, with each uninstall counted from a page the SDK registers.
Browser extensions
For browser extensions
One package for Chrome, the other Chromium browsers and Firefox, through store review.
No remote code
A snippet that fetches its own JavaScript is remote code to a store: Manifest V3 forbids that outright, and Mozilla reviewers reject it by hand. The extension SDK is bundled into your extension, so there is nothing for them to find.
Uninstalls in Firefox
The lifecycle differences are handled rather than documented away. Firefox forgets an uninstall URL when its event page unloads, so the SDK re-registers on every background start and you never find out.
Service workers that sleep
Service workers are suspended after about thirty seconds idle. Events are written to storage before any send, so a teardown mid-flush costs nothing and nothing is ever sent twice.
What to declare
Not sure what to declare to the Chrome Web Store and Mozilla Add-ons? Try the store disclosure helper.
Extension frameworks
Built with WXT, Plasmo or CRXJS? There is a guide for each, and a WXT starter template that is already measured.
Working together
For teams
Invite the people you work with as Read, Write or Admin, with members and roles that keep exports and settings with Admins. Let an AI assistant read the numbers through a token an Admin allows, export any report as CSV, and show legal and IT exactly what is collected.
Questions
Frequently asked questions
What it measures, where its limits are, and what it asks of you.
Is it for websites, or for extensions and apps?
All of them, from one account. A website, a browser extension, and a mobile, desktop or server app are each a project, and every project reports into the same dashboard, with the same events, goals, funnels, journeys and retention.
What each kind adds: a website gets pages, sources, referrals and campaigns, with visits, bounce rate and visit duration. An extension gets installs and uninstalls, in Chrome and Firefox. An app gets screens and versions, and the app guide has examples for iOS, Android, desktop and server apps.
Can it measure sign-ups, purchases and campaigns?
Yes. Make each one a goal: an event such as signup_completed, an event with one property, or a page such as /thank-you. Each goal shows its conversions and its conversion rate by channel, source, campaign, entry page, country and device, and a purchase goal can sum its amount as revenue, in one currency.
A funnel of two to eight goals shows how many people carried on at each step, and where they stopped. Links tagged with utm_source, utm_medium, utm_campaign, utm_content and utm_term are read as they land: the medium sets the channel, and Sources groups by each tag.
What can it do, and what are its limits?
The numbers that matter most:
- Projects: unlimited, on every plan.
- Goals: up to 20 a project. Funnels: two to eight goals, within 1 hour, 1 day or 7 days. Journeys: three to eight steps.
- Visitor counts and daily totals: kept indefinitely, so they cover any range. Individual events: kept 90 days, so funnels, journeys and filtered event counts cover the last 90 days.
- Any figure from fewer than 5 visitors is withheld, so nobody can be singled out.
- Events: up to 2048 bytes of properties each, 200 distinct event names a project, and 50 a second with bursts of 500.
- Plans: 100,000 to 5,000,000 events a month. Team members: 5 during the beta.
Every number, and what happens at each edge, is in Capabilities and limits.
Can I ask an AI assistant about my numbers?
Yes, through MCP. Connect Claude, Cursor, VS Code or another client that speaks the Model Context Protocol with a personal access token, and ask it which sources converted best last month. With a token that may change them, it can also create goals and funnels. It reads the totals the dashboard shows, never raw events or visitor identifiers.
Does it show traffic from ChatGPT and other assistants?
Yes. Visits from ChatGPT, Perplexity, Gemini, Copilot and other chat assistants have a channel of their own, AI Assistants, whether they arrive with a referrer or a tagged link, so you can see how many came that way and whether they converted.
Will it tell me when something changes?
Three emails, each chosen by every member for themselves. The weekly report arrives on Monday mornings, in the account's time zone, with each project's visitors against the week before, its events and its top sources. The no-events alert arrives when a project that was receiving events stops for 24 hours, which usually means a release broke sending, and again when events arrive. The traffic-spike alert arrives the day a project's visitors reach twice its usual day, with where they came from.
Can I take my data with me?
Yes. Every report table downloads as CSV, with every row. An Admin can also download the raw events of the last 7, 30 or 90 days, with each visitor's identifier replaced by a token that matches within that one file only. See exporting.
What does it cost?
A free trial with no card: free until paid plans open, then three months for each new account. Plans start at US$9, C$12 or €9 a month for 100,000 events, and every plan has every feature and unlimited projects. See pricing.
Free trial
No card. Free until paid plans open, then a three-month free trial for each new account.