Skip to content

Consent · 28 September 2026

Analytics Without Consent: What EU Sites Can Still Count After Reject

“Analytics without consent” is the search people type when a banner Reject emptied their GA4 chart and they still need to know whether /pricing loaded. This note is for EU WordPress and Shopify shops that want an observed pageview after decline — not a modeled fill. For observed hits vs Consent Mode modeling, see Google Analytics alternatives after Reject. Compare your numbers side by side for the same week.

What “analytics without consent” usually means (and what it does not)

Usually it means: count the HTML that ran when someone clicked Reject or never saw a grant. A cookieless script that does not set a cookie, localStorage id, or lasting fingerprint can record that load. It does not mean “skip the banner while Google Ads and Meta still fire.” Those tags are a different conversation. Your counsel owns the final call.

It also does not mean an ads suite, session replay, or Mixpanel-depth product analytics. Cookie Free Analytics answers pageviews, sources, campaigns (five UTM tags), and a named goal if you fire cfa('signup'). Keep GA4 when you need audiences.

Cookie banner Reject vs cookieless pageviews — two different questions

Reject is a consent answer. A cookieless pageview is a measurement of whether the page ran. Mixing them creates a story: “we recovered X% of Reject.” That X is not a Cookie Free Analytics product number. The observed-vs-modeled checklist is in /blog/google-analytics-alternatives-after-reject.

When Reject and list blockers remove googletagmanager.com hits, GA4 page_view falls. The shop page still rendered. A ~1 KB cookieless beacon can still record the landing. Those are two instruments, not one percentage.

Side-by-side checklist: GA4 beside a cookieless count

Leave GA4 where it is. In Explore, take event_count for eventName = page_view over seven days in the shop timezone. Optionally pull Search Console clicks for the same window as a third column — GSC is not a GA replacement.

Add Cookie Free Analytics: create the site, paste /cf.js (WordPress theme header, Shopify theme settings, or Custom HTML in GTM — /docs/gtm). Wait seven days. Compare pageviews to pageviews. If ours is higher, the usual causes are Reject, blockers, and Safari. If GA is higher, check a missing snippet on a template. Many sites run both: GA4 for ads, us for the count of what loaded after Reject. Compare your own two totals for the same week. See /blog/leave-ga-on-for-a-week or /blog/run-next-to-ga4-for-a-week before ripping anything out.

What Cookie Free Analytics measures (and what it does not)

The script is 1,515 bytes, about 930 bytes gzipped as served. It records pageviews, sources, five UTM tags and named goals. It is not an ads suite, session replay, or product analytics.

On Starter and Growth, Watch covers a hostname you already added. Growth adds funnels. Live is the last path in five minutes. Beacons hit Frankfurt; pageviews sit in Ireland Postgres. Vercel is still a US company — we disclose that on /europe. Many sites run both: GA4 for ads, us for the unblocked count.

Pricing, and when to keep GA4

Hobby is free with a badge. Starter is from €4 and Growth from €8; see /pricing. Keep GA4 when you need Google Ads audiences, and load both through Tag Manager with /docs/gtm.

Add Cookie Free Analytics when you wanted to know whether the page loaded after Reject. Install via /cf.js in your WordPress theme header, Shopify theme settings, or /docs/gtm. Soft path for the hole itself: /consent-gap. Operator: Prestons Creek Capital. Support: hello@cookiefreeanalytics.com.

After Reject · Consent gap · Pricing · GTM docs

All notes · How a visitor is counted