Store policy and privacy
Extension analytics is a compliance question before it is a product question. This page is what to tell each store, and why an integration here is straightforward to get approved.
Chrome Web Store
Two policies matter.
No remote code. Manifest V3 requires that all executable code ship inside the extension package. A conventional analytics snippet fetches its own script at runtime, which is remote code and grounds for rejection. This SDK is a bundled dependency. Nothing is fetched and executed; the only network traffic is data, sent to a documented endpoint.
The User Data Policy requires you to disclose what you collect, use it only as disclosed, and keep it to what the advertised function needs. What an integration here collects:
| Collected | How to disclose it |
|---|---|
| A random identifier generated on first run, kept in your extension's own storage | Not personally identifiable, and not derived from the device or the person |
| The event names and properties you choose to send | Whatever you actually send, which is up to you |
| A country, and in 21 countries a region (a state, province or territory), resolved from the request address, which is then discarded | Location, coarse: never finer than a state or province |
| The browser family, operating system family and device type, read from the request's User-Agent, which is then discarded | Not personally identifiable; never a version or a model |
| The browser's primary language, such as pt, read from the request's Accept-Language header, which is then discarded | Not personally identifiable; never a region or the full preference list |
| The version of your extension, from its manifest | Not about the person: your own release number |
None of that is personally identifiable unless you make it so by attaching your own user data to event properties. The naming guide asks you not to, and this is why: your disclosure describes what the SDK collects, and it stops being accurate the moment you put an email address in a property.
In the listing's data-collection section, an integration following this guidance declares Location, for the country and region, and User activity, because the events you send record what people do in your extension and Chrome's examples for that box include clicks. Nothing else on the list applies: no personally identifiable information, no health data, no financial data, no authentication information, no personal communications, no web history and no website content. The store disclosure helper gives the same answers, and the Firefox manifest block, for whatever else your extension collects.
Mozilla Add-ons
Mozilla reviews by hand, and a person reads your source. That works in your favour here: a bundled dependency making one documented request is quick to assess, where an obfuscated snippet fetching remote script is exactly what gets an add-on held for weeks.
Three things to have ready.
A privacy policy URL, required for any add-on that transmits data. It has to say what is collected and where it goes.
Source for review. If you ship a bundled or minified build, Mozilla may ask for the original source and build instructions. Nothing in this SDK obstructs that. There is no obfuscation and no runtime code loading.
A data-collection declaration. Required for new add-ons since November 2025, and for every add-on during 2026. Analytics are technicalAndInteraction, the browser's language included, which Mozilla accepts only as an optional permission, shown as a toggle when someone installs your add-on.
Mozilla counts the country and region as locationInfo, a category of its own, so declare it as optional too. From SDK 0.4.0 it is a separate toggle that is honoured: someone who turns location off and leaves analytics on is still counted, with no country or region.
That toggle is a real choice, and Firefox does not enforce it for you: it records the answer and leaves the rest to your extension. The SDK honours it — declined, nothing is stored and nothing is sent. So on Firefox this product is opt-out for the person installing your add-on, and your numbers there count only the people who left it on. The Firefox install guide has the manifest and the code to offer it again later.
Data residency
Data is stored in Canada.
What this never does
- No cookies.
- No fingerprinting, canvas or otherwise.
- No cross-extension or cross-site identity. The identifier is scoped to the one extension or site that generated it, so the same person using two of your products is two unconnected identifiers. That is a property of the construction, not a promise about policy.
- No storage of network addresses. One is used transiently to resolve a country and region, then discarded.
- No counting of a Firefox user who switched analytics off in the add-on's settings, nor, by default, of a browser that sends Global Privacy Control where the browser lets the extension see it. Firefox and Brave do; Chrome does not show an extension's background the signal.
- No selling or sharing of data with anyone.