Extension intelligence · installation to release

See every installation. Know what every release changes.

Start with a pinned rate, a permission decline or a release anomaly. Open the exact population, inspect a real installation, then follow its activity down to the source event.

SDK 0.6 · MV3-ready · Remote modules · Chrome / Firefox / Edge / Safari

Live feed1,204 connected
09:40:18extension_installedv3.2.1 · chrome · 🇸🇪 SE
09:40:26extension_heartbeatdaily · firefox · 🇫🇷 FR
09:40:31extension_ui_openedpopup · action_icon
09:40:39context_menu_clickedselection · chrome · 🇩🇪 DE
09:40:44uninstallv3.0.9 · edge · 🇺🇸 US
09:40:51extension_updated3.1.4 -> 3.2.1 · chrome · 🇧🇷 BR
09:40:57toolbar_pin_state_seenpinned · safari · 🇯🇵 JP
09:41:04permission_requestedtabs · firefox · 🇮🇳 IN
09:41:12permission_grantedtabs · popup
09:41:20custom_eventrule_created · chrome · 🇳🇱 NL
09:40:18extension_installedv3.2.1 · chrome · 🇸🇪 SE
09:40:26extension_heartbeatdaily · firefox · 🇫🇷 FR
09:40:31extension_ui_openedpopup · action_icon
09:40:39context_menu_clickedselection · chrome · 🇩🇪 DE
09:40:44uninstallv3.0.9 · edge · 🇺🇸 US
09:40:51extension_updated3.1.4 -> 3.2.1 · chrome · 🇧🇷 BR
09:40:57toolbar_pin_state_seenpinned · safari · 🇯🇵 JP
09:41:04permission_requestedtabs · firefox · 🇮🇳 IN
09:41:12permission_grantedtabs · popup
09:41:20custom_eventrule_created · chrome · 🇳🇱 NL

Events stream over SSE when the public demo is active

The gap

Store dashboards stop before the product work starts.

The store can tell you a rough audience number. It cannot tell you which release hurt retention, which browser keeps users, or what people say when they uninstall.

Store dashboard

Install base
rounded, delayed
Activation
not visible
Feature usage
not visible
Retention
not visible
Release impact
not visible
Uninstalls
partial, delayed
Uninstall reasons
not visible
Live activity
not visible

extension.report lifecycle view

Install base
daily, by browser and country
Activation
first opens and lifecycle events
Feature usage
custom events and counters
Retention
D1 / D7 / D30 cohorts
Release impact
versions and update paths
Uninstalls
observed + silence churn
Uninstall reasons
feedback page + comments
Live activity
real-time launch room

One SDK, one install base, broken down across Chrome, Edge, Firefox and Safari.

The product

Follow the full extension lifecycle.

Sample data — the public demo is warming up.

Micro → macro

Every metric opens the people behind it

Start with the signal. Open its exact population, inspect a real installation, then follow milestones and source events without rebuilding the query.

Observed installed
1,847
active base
Installed today
312
open population →
Net movement
+186
installs − uninstalls
Observed uninstalls
126
inspect reasons →

Selected population

Installed today

312 installations. Each row opens its complete trace.

Save as segment
Sofia · Pro
v3.2.1 · Chrome · 🇸🇪
First value reached
Anonymous · …a84f19c2
v3.2.1 · Edge · 🇫🇷
Pinned to toolbar
kenji@example.test
v3.2.1 · Firefox · 🇯🇵
Permission granted
Anonymous · …2d990bf1
v3.2.0 · Chrome · 🇩🇪
Opened popup

Retention

Find the versions and markets that keep users

Read retention curves, version adoption, update paths and country breakdowns in one place. When a release changes behavior, the dashboard should make it obvious.

Retention

38% of installs are still active a week later; 22% after 30 days.

Countries

🇺🇸United States502 45%
🇩🇪Germany187 17%
🇫🇷France165 15%
🇬🇧United Kingdom144 13%
🇧🇷Brazil118 11%

Versions

3.2.1861 71%
3.2.0172 14%
3.1.4121 10%
2.9.951 4%

Churn

Turn uninstalls into product feedback

When someone uninstalls, a feedback page opens in their language and asks why — seven reasons, one optional comment. Pair that with observed churn and heartbeat silence.

Top uninstall reasons

Not working34 40%
Too many permissions21 25%
Found an alternative17 20%
No longer needed12 14%

e.g. “Broke after the last Chrome update on my work laptop.” · Not working · v3.2.0

Integration

Wired in one call.

Initialize the SDK once and it tracks lifecycle, active usage, toolbar state, permissions, context menus, shortcuts, omnibox, and notification engagement when those browser APIs are present. Add explicit product events only where they matter. Adoption, Engagement, and Reliability remain remotely adjustable as coherent groups.

terminal
$pnpm add @extension-report/js@0.6.1
ChromeFirefoxEdgeSafari
extension.ts
import { initExtensionReport } from "@extension-report/js";

// initialize lifecycle and automatic extension signals
const sdk = initExtensionReport({ projectPublicKey: "pk_er_..." });

// optional: track specific UI or configuration moments
await sdk.popup.opened();
await sdk.trackCustomEvent("settings_saved");

SDK permissions are lightweight: "storage", "alarms", and your extension.report host permission. Feature permissions stay tied to the features your extension already uses.

Need server-side exports? Owner Stats API is available on plans with API access.

Pricing

Start with evidence. Scale with usage.

No trial clock and no invitation. Every plan uses the same owner-first telemetry pipeline; paid plans add capacity, history, and automation.

Free

€0/month

Understand one extension and reach your first insights.

Extensions
1
Team members
1
Monthly active users
1,000
Event history
30 days
Alerts
included
API & exports
  • 1 extension
  • 1,000 monthly active users
  • 30-day history
Start free

Pro

Built for growth
€29/month

€290 billed yearly

Operate a growing extension with deeper history and automation.

Extensions
5
Team members
5
Monthly active users
100,000
Event history
90 days
Alerts
included
API & exports
included
  • 5 extensions
  • 100,000 monthly active users
  • 90-day history
Choose Pro

Scale

€99/month

€990 billed yearly

Manage a portfolio with long-term history and higher limits.

Extensions
10
Team members
20
Monthly active users
1,000,000
Event history
365 days
Alerts
included
API & exports
included
  • 10 extensions
  • 1,000,000 monthly active users
  • 365-day history
Choose Scale

Prices exclude applicable taxes. You can change or cancel a paid plan from your workspace once billing is enabled.

Questions

Asked, answered.

Will this get my extension rejected from the store?

The SDK collects a random installation ID and coarse context (browser, OS, version) — no cookies, no browsing history, no personal data. Country is derived from the IP at ingestion and the IP isn't stored. You disclose the telemetry in your privacy policy like any analytics, and you stay well inside Chrome Web Store and AMO data policies.

How accurate is uninstall tracking?

Honest answer: it's best-effort, like everything built on setUninstallURL — some uninstall pages never open. That's why the dashboard pairs observed uninstalls with churn estimated from heartbeat silence, so the trend is reliable even when individual events are missed.

How do I learn why users uninstall?

The moment an uninstall happens, the browser opens your feedback page — localized in six languages — asking one question: why? Seven reasons, one optional comment. Reasons and quotes land on your report next to the churn numbers. No store dashboard does this.

Does it survive MV3 service workers going to sleep?

Yes — it was designed for that. Events queue persistently in storage.local, ship in batches with retry and exponential backoff, and heartbeats piggyback on alarms or the next wake. A worker being killed mid-flight loses nothing.

Which browsers are supported?

Chromium (Chrome, Edge, Brave, Arc…), Firefox, and Safari WebExtensions. One dashboard, one install base, broken down by browser, version and country.

What happens if my extension suddenly takes off?

Remote config is fetched by the SDK, so you can reduce Adoption, Engagement, or Reliability as coherent groups, roll changes out progressively, target compatible clients, cap noisy traffic, or stop telemetry entirely — without waiting for another store review.

Your extension has a lifecycle. Measure all of it.

Start tracking — first events in minutes →