for customers

Privacy policy snippet

Copy this into your own privacy policy to inform your visitors about blockrate.

Consent-free by design

blockrate is built to work without a cookie banner. It does not set cookies, does not write to localStorage or sessionStorage (by default), does not store IP addresses, and does not perform cross-site tracking. This puts it in the same category as privacy-first analytics tools like Plausible and Fathom that operate without consent under the CNIL's audience measurement exemption.

You still need to inform your visitors that blockrate is in use. Add a section like the one below to your privacy policy. Adjust the retention period to match your plan (Free: 7 days, Pro: 30 days, Team: 90 days).

The snippet

We use blockrate (blockrate.app) to measure whether the third-party
analytics tools our site depends on are reachable from your browser.
blockrate is designed to operate without requiring cookie consent: it
does not use cookies, does not store IP addresses, does not write to
your browser's local or session storage, and collects only technical
metadata: the page path, your browser family and major version (e.g.
"Chrome 131"), which analytics provider was checked, whether it was
reachable, and how long the check took. This data is aggregated into
per-provider block rate statistics and cannot identify individual
visitors. Data is retained for [7/30/90] days depending on our plan
and then permanently deleted. For more information, see
https://blockrate.app/privacy.

If your URLs contain personal data

blockrate only collects the URL pathname (no query strings or hashes). However, if your paths contain PII (e.g. /users/[email protected]), use the sanitizeUrl callback to strip it:

new BlockRate({
  sanitizeUrl: (path) => path.replace(/\/users\/[^/]+/, "/users/:id"),
  ...
})

Strict jurisdictions

If your legal counsel requires explicit consent for blockrate in your jurisdiction, the library supports a consentGiven option that gates all checks behind your consent management platform:

new BlockRate({
  consentGiven: () => window.CookieConsent?.accepted("analytics"),
  providers: ["posthog", "ga4"],
  reporter: beaconReporter("/api/block-rate"),
})

When consentGiven returns false, blockrate does nothing — no network requests, no data collection.