Technical audit · 29.09.2026

citybee.ee

Website of the CityBee car-sharing service in Estonia

The website of the CityBee car-sharing service — three pages, 319 requests. The Cookiebot banner is exemplary: 'Keeldu' sits on the first screen next to 'Luba kõik'. But while the visitor reads the banner, the Meta pixel manages to send 19 events, Google Ads records a conversion, and Google Analytics issues an identifier and shares it with Google's advertising endpoints — all without consent mode. After refusal, Google switches to denied mode, while the Meta pixel keeps running on every page.

Request timeline

+0 s · entering the homepage
Redirect to citybee.ee/ee/. The site runs on WordPress with the PixelYourSite Pro plugin.
+2.1…+3.9 s · tags alongside the consent platform
Cookiebot, GTM-N8VG3G8, Google Maps, reCAPTCHA (+2.1 s). A page view to Google Ads with no consent state (+3.2 s). The Meta pixel — first event (+3.9 s).
+34 s · conversion and analytics before any choice
Google Ads conversion AW-759927963, session_start and events in GA4 G-Q5B0W3WTCL with a client identifier, stats.g.doubleclick.net and ga-audiences. Before the decision — 19 Meta pixel events.
+181…+215 s · after refusal
Google starts with default consent and switches to denied. The Meta pixel loads again and sends events.
+355…+358 s · third page
Three more Meta pixel events. In total after refusal — 8.

Declared versus actual

✓ Controller — CityBee Eesti OÜ, registration code 14646800, Tallinn — declared
✓ Cookiebot declaration, updated 10.09.2026: _fbp (Meta) — marketing; _ga (Google) — statistics — declared
✓ Banner: 'Luba kõik', 'Luba valik', 'Keeldu'; categories switched off by default — declared
✓ Policy: service providers outside the EU — for example Google, Microsoft Azure, CleverTap, Intercom, Sendgrid — declared
+ The Meta pixel, Google Ads, and Google Analytics run before any choice — not declared
+ The Meta pixel runs after refusal — not declared
+ Google consent mode starts from a default grant — not declared

Transfer timings

+3.2 s www.google.com

ccm/collect Google Ads, page_view with no consent state.

+3.9 s www.facebook.com

First Meta pixel event.

+34.4 s googleads.g.doubleclick.net

Conversion AW-759927963.

+34.5 s region1.analytics.google.com

GA4 G-Q5B0W3WTCL with a client identifier.

+178.6 s consent.cookiebot.com

logconsent, action=decline.

+183.5 s www.facebook.com

A Meta pixel event on the page after refusal.

Detected trackers

Indicators of GDPR non-compliance

Context

citybee.ee is the website of the CityBee car-sharing service in Estonia. The controller is CityBee Eesti OÜ (registration code 14646800, Tallinn), a brand of the Modus Mobility group. The site runs on WordPress, pixels are managed by the PixelYourSite Pro plugin, and consent by Cookiebot in strict mode.

The measurement is a single capture of three homepage loads. In total, 319 requests. Processing is described by the CityBee privacy policy, a separate cookie page, and the Cookiebot declaration, updated on 10 September 2026.

Who receives data directly

Meta — before any choice and after refusal. Google — Ads, Analytics, DoubleClick advertising endpoints, Maps, reCAPTCHA, YouTube. Cookiebot — as the consent platform.

Declared versus actual

The banner is exemplary: “Luba kõik”, “Luba valik”, and “Keeldu” sit side by side and look the same, and categories are switched off. The Cookiebot declaration is detailed and correctly classifies _fbp as marketing and _ga as statistics. The discrepancy is that the tags do not wait for the decision the banner invites the visitor to make.

First — everything runs before any choice. The Meta pixel loads simultaneously with the consent platform and sends its first event at +3.9 s. While the visitor spends three minutes reading the banner, 19 such events accumulate. Google Ads and Google Analytics 4 run with no consent mode at all: not a single state is set. At +3.2 s, a page view goes to Google Ads. At +34 s — a conversion, a session start in GA4 with a client identifier, and the transmission of that identifier to Google’s advertising endpoints — DoubleClick and ga-audiences.

Second — after refusal, Meta carries on. At +178.6 s, the visitor presses “Keeldu”, and Cookiebot records it. On the next page, Google switches to denied mode, although it starts from a grant set by default and only then receives an update to denied. The Meta pixel does not notice the refusal: on the next two pages it sends 8 more events.

Proven: tags run before any choice. 19 Meta events, a Google Ads page view and conversion, and GA4 with an identifier — all before the decision is recorded at +178.6 s.

Proven: a refusal took place. The Cookiebot log records action=decline.

Proven: the Meta pixel runs after refusal. 8 events on pages 2 and 3.

Proven: Google consent mode starts from a grant. After refusal, the gcd parameter shows an initial grant and an update to denied.

Not established: the content of the Meta events. They were sent via POST, and the bodies were removed during cleaning.

Boundaries of this observation

The measurement covers the site’s homepage. The CityBee app, registration, and rentals were not examined. The observation records browser behavior, not server-side processing. The file has been published cleaned: Cookie headers and POST request bodies were removed. The Google client identifier is not reproduced in this review.

Legal assessment falls to the competent authority — the Andmekaitse Inspektsioon.

Conclusion

CityBee has installed an exemplary banner but connected the tags to it in a way that ignores it. Before any choice, the Meta pixel sends 19 events, Google Ads records a conversion, and Google Analytics issues the visitor an identifier and shares it with advertising endpoints. After refusal, Google complies — the Meta pixel does not.

Remedy: bring the Meta pixel under Cookiebot — this is configured separately in PixelYourSite — and do not load it without consent to marketing; configure Google consent mode with a default of denied before any Google tags load.

Evidence

How to verify: download the file and compute its checksum — sha256sum file.har (Linux, macOS) or certutil -hashfile file.har SHA256 (Windows); it must match the one shown. The conclusions apply to the scope of this measurement — see the limitations of the method.

Original (audit)
HAR file: ee/citybee-ee-2026-09-29.har
SHA-256: c2da4dd82410c802aa7398fdcf99c130c446626f88ac84e5a06d015bd5be66f1
Screenshot
Скриншот интерфейса
The Cookiebot banner on the homepage: 'Luba kõik', 'Luba valik', 'Keeldu'; categories switched off · 29.09.2026
Скриншот интерфейса
The 'Üksikasjad' tab: 'Eelistused', 'Statistika', 'Turundus' switched off by default · 29.09.2026
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.