Skip to content

Consent · 14 September 2026

Google Analytics Alternatives After Reject: Observed Hits vs Modeled Gaps

Search for “google analytics alternatives” and you usually get a list: Plausible, Fathom, Matomo, Cloudflare, us. The GDPR long-tail — google analytics alternative gdpr — is the same shopping list with a privacy filter. The sharper question after someone clicks Reject is narrower: do you want an observed pageview, or a modeled fill for the hole?

Cookie Free Analytics is a 1 KB cookieless script. It is not an ads suite. This note states the trade-offs without inventing a recovery percentage. There is no published dual-run GA4 vs Cookie Free Analytics percentage table. Say that aloud before you sell a lift number.

What “Google Analytics alternative” usually means (and what Reject does to it)

Most “alternatives” replace charts. Few replace Google Ads identity. GA4 is free because the product is audiences and attribution. When a visitor clicks Reject — or a list blocker drops googletagmanager.com — that identity path goes dark. The HTML still ran. The paid click still landed. The cookie report pretends otherwise.

A cookieless counter answers a different job: count the load, the source, the five UTM tags, and a named goal if you fire cfa('signup'). Keep GA4 if you buy ads. Dual-run is normal. Swapping logos is not the same as closing the Reject hole.

Observed vs Blended / modeled — thresholds without inventing recovery %

Consent Mode can keep some signals and fill Reject with a model (often shown as Blended in Explore). A model is not a count of the people who opened the page. Thresholds and behavioral modeling change with traffic volume and how often people grant storage — Google documents the machinery; we will not invent a site-wide recovery % from it.

Observed hits are the visits your cookieless script (or a first-party beacon that does not wait for a cookie) actually recorded. Modeled gaps are estimates. Put them in different columns. Do not average them into a vanity “we recovered 40%” claim you did not measure.

Why Users and Unassigned move harder than pageviews after default=denied

With Consent Initialization default denied, analytics_storage starts off. GA4 Users lean on identity that needs a yes. Unassigned traffic grows when the channel graph cannot attach. Page_view event counts still move, but Users and channel groupings move harder — that is the identity product showing stress, not proof that the landing never happened.

When you dual-run, compare pageviews to pageviews. A “visitor” in Cookie Free Analytics is a distinct HMAC for one UTC day, not a person across a month. Bounce is a short single-page visit. Do not compare GA Active Users to our daily visitors and call the delta a cookieless win.

Dual-run checklist (GA4 Explore event_count for page_view + GSC clicks + cookieless script)

Leave GA4 where it is. Do not turn Consent Mode off as an experiment — you are measuring the hole, not inventing a cleaner GA.

In GA4 Explore, build a free-form report: event_count for eventName = page_view over seven UTC days. Export or note the total. Pull Search Console clicks for the same window if Search is a channel you care about — GSC is a different instrument, useful as a third column, not a GA replacement.

Add Cookie Free Analytics: create the site, paste the 1 KB snippet (WordPress plugin, Shopify theme, or /cf.js). First-party path or c. CNAME if list blockers drop our hostname. Wait seven UTC days. Compare pageviews. If ours is higher, the usual causes are Reject, list blockers, and Safari. If GA is higher, check a missing snippet on a template or an SPA route you have not hooked — we count pushState.

We will not publish a dual-run percentage table for you. Your two totals, same week, are the case study.

What Cookie Free Analytics measures (and will not: Ads, replay, Mixpanel depth)

We measure pageviews, sources, campaigns (UTM), named goals, and — on Starter and Growth — Watch on a hostname you already added. Live is the last path in five minutes. Growth adds funnels.

We will not build Google Ads audiences, session replay, heatmaps, or Mixpanel-depth product analytics. Ads conversion tags stay on the ads platforms. Many sites run both: GA4 for ads, us for the unblocked count.

Script size, install paths (WP plugin, Shopify theme, /cf.js)

On 14 Sep 2026, /cf.js measured about 1504 B raw and ~920 B gzip. Paste it from site settings. WordPress: upload the plugin from GitHub and paste the public ID. Shopify: theme settings — there is no Shopify app. First-party recipes live under /docs/proxy. GTM installs that still need GA4 can follow /docs/gtm — Consent Initialization default deny, cookieless Custom HTML on All Pages, do not gate on Granted.

Pricing + keep GA4 when you need audiences

Hobby is free with a Cookie Free Analytics badge — 3 sites, 90 days. Starter from €4 at 10k pageviews. Growth from €8. Events are not billed. Beacons hit Frankfurt; pageviews sit in Ireland Postgres. Vercel is still a US company. Operator: Prestons Creek Capital. Support: hello@cookiefreeanalytics.com.

Keep GA4 when you need audiences, remarketing, or BigQuery joins. Add Cookie Free Analytics when you wanted to know whether /pricing loaded after Reject. That is the alternative that survives the banner — not another modeled gap.

Consent Mode · GA alternative · GTM docs · Leave GA on a week

All notes · How a visitor is counted