Technical audit · 27.09.2026

snabb.xyz

Website of a Parking Operator and an App for Paying for Parking and Car Washes

The website of Estonian parking and car-wash operator Snabb — one capture, four pages, 420 requests. There is no cookie banner, and Google consent mode is not configured. Google Analytics 4 creates an identifier on the very first visit and sends a page view 1.7 seconds later, while the same identifier simultaneously goes to Google's advertising endpoints. The policy, meanwhile, names two legal bases at once for cookies and analytics — consent and legitimate interest. It does not specify which one applies, and it offers no way to give or withdraw consent for cookies.

Request timeline

+0 ms · entering the homepage
Request to http://snabb.xyz/, 307 redirect to https. The site runs on WordPress (Elementor, WPML), served by LiteSpeed, PHP 8.2.33. The Content-Security-Policy header contains only upgrade-insecure-requests and lists no sources.
+342…+624 ms · Google tags
www.googletagmanager.com/gtag/js?id=G-KD6CRDCHX6 (+342 ms) and the GTM-T44FH5ND container (+624 ms). No condition precedes the loading.
+806…+1303 ms · parking map
An embedded map from admin.barking.ee (+806 ms). The host belongs to the same company and is served by nginx, with version 1.4.6 stated in the header. The map is followed by Google Maps, jQuery from ajax.googleapis.com, Bootstrap from maxcdn.bootstrapcdn.com, and Google fonts (+1301…+1303 ms).
+1739 ms · first transmission to analytics
region1.analytics.google.com/g/collect — page_view: client identifier, homepage address and title, screen resolution 1536x864, Windows platform, x86 architecture, browser language, first-visit markers.
+1740…+1743 ms · Google advertising endpoints
stats.g.doubleclick.net/g/collect and www.google.ee/ads/ga-audiences — the same client identifier, with the npa=1 and aip=1 flags.
pages 2–4 · the same profile
The parking page, the terms of use, the privacy policy: each fires a page_view at +5.8…+6.0 s. On the parking page and the policy page — scroll events (+27.5 s and +46.3 s) and repeated requests to ga-audiences. The client identifier is the same across all four pages.

Declared versus actual

✓ Controller — Snabb OÜ, registration code 12801774, Veerenni tn 40a, Tallinn; contact info@snabb.ee (sections 1.1, 1.3) — declared
✓ Cookies, web analytics and user-experience improvement: visit statistics, cookie identifier, device and browser information, navigation data; analytics — 'e.g., Google Analytics' (section 3.1) — declared
✓ Legal basis for cookies and analytics — consent (Art. 6(1)(a)) and legitimate interest (Art. 6(1)(f)) at once (section 3.1) — declared
✓ Session cookies are deleted when the browser closes; persistent cookies and analytics data are kept for up to 6 months (section 3.1) — declared
✓ Withdrawal of consent — via the contact address or an unsubscribe link, described for direct marketing (section 3.3) — declared
✓ Recipients — by category: IT support, hosting and software providers, payment services, accounting, debt collection, surveys and direct marketing, legal and audit services, public authorities (section 5.2) — declared
✓ Processing generally takes place within the EU/EEA; where data is transferred outside, standard contractual clauses apply (section 5.3) — declared
✓ Supervisory authority — the Andmekaitse Inspektsioon (section 6.1.7) — declared
+ Transmission of the client identifier to Google's advertising endpoints — stats.g.doubleclick.net and www.google.ee/ads/ga-audiences — not declared
+ Google Tag Manager as a separate component — not declared
+ Google Maps, Google Fonts, Google Hosted Libraries, and BootstrapCDN are not named — not declared
+ Which of the two bases — consent or legitimate interest — actually applies to analytics — not declared
+ The site has no tool with which a visitor could give or withdraw consent for cookies — not declared

Transfer timings

+342 ms www.googletagmanager.com

gtag.js for G-KD6CRDCHX6; followed by the GTM-T44FH5ND container at +624 ms.

+1303 ms maps.googleapis.com

Google Maps for the parking map; 60 requests over the capture.

+1739 ms region1.analytics.google.com

page_view, client identifier, first-visit markers; consent mode not set.

+1740 ms stats.g.doubleclick.net

Google advertising endpoint, the same client identifier, npa=1.

+1743 ms www.google.ee

ads/ga-audiences, the same client identifier; repeats on pages 2 and 4.

+27481 ms region1.analytics.google.com

A scroll event on the parking page.

Detected trackers

Indicators of GDPR non-compliance

Context

snabb.xyz is the website of Snabb OÜ (registration code 12801774, Tallinn, Veerenni tn 40a). The company runs a mobile app for paying for parking, car washes, and vehicle charging, and operates its own network of car parks. The company was formerly called Barking OÜ, which is why part of the site’s infrastructure still runs on the barking.ee domain. That is the first party, not a third-party recipient. The site is built on WordPress with the Elementor page builder and the WPML multilingual module, and is served by LiteSpeed. The Content-Security-Policy header contains only the https-upgrade directive and reveals no hidden dependencies.

The measurement is a single capture of four consecutive pages: the homepage, the parking page, the terms-of-use section, and the privacy policy itself. In total, 420 requests to 14 hosts. Of these, 10 requests to edge.microsoft.com are the browser’s built-in translator (Estonian → Russian); they have nothing to do with the site and are excluded from the review. The homepage accounts for 161 requests to 13 hosts.

Processing is described by the Estonian-language document “Privaatsuspõhimõtted”, which was opened during the capture itself.

Who receives data directly

Google: Analytics and Tag Manager, the doubleclick and ga-audiences advertising endpoints, Maps, Fonts, Hosted Libraries. Also BootstrapCDN. First party — the site, the map host admin.barking.ee, and the icon storage on DigitalOcean (Amsterdam).

Declared versus actual

The policy is short and does mention Google Analytics honestly — in section 3.1, in the row on cookies, web analytics, and user-experience improvement. The same row states a retention period of up to six months for analytics data. The discrepancy is not that analytics is hidden, but in how it runs and on what basis.

First — analytics starts without any choice. There is no cookie banner on the site: the homepage’s first screen opens straight away, with no request for consent. Across the entire capture, there is not a single request to a consent-management platform. Google consent mode is not configured either: the gcd service parameter in every request shows that no consent state is set, and the gcs parameter is absent altogether. The Google tag loads at +342 ms, the Tag Manager container at +624 ms. At +1739 ms, the first page view fires, carrying the client identifier, the page address and title, the screen resolution, the platform, and the browser language. The identifier was created in this same session — two seconds after entry — and the requests carry first-visit markers. In other words, the visitor’s device is tagged on the very first opening of the site, before they have made any decision at all.

Second — along with the analytics, the identifier goes to Google’s advertising endpoints. One and four milliseconds after the first page view, the same client identifier is sent to stats.g.doubleclick.net and www.google.ee/ads/ga-audiences. This is the infrastructure of Google’s advertising features: it is how Google Analytics collects data for audiences. The requests to ga-audiences repeat on the parking page and on the policy page. The requests carry the npa=1 flag, meaning ad personalization is marked as disallowed. But the policy describes the purpose of processing only as analytics and site improvement — it says nothing about transmission to advertising infrastructure.

Third — two legal bases at once and no consent tool. For cookies and analytics, the policy lists consent and legitimate interest simultaneously, without explaining which applies to what. As a result, a visitor cannot tell whether they are supposed to permit anything. In practice, nothing is asked at all. Section 3.3 describes withdrawal of consent — but only for direct marketing, by writing to the contact address or clicking an unsubscribe link. No such mechanism exists for cookies: the consent the policy refers to can be neither given nor withdrawn.

Separately, on the parking map. It is embedded in the homepage and the parking page, is built on Google Maps, and generates 71 requests to map hosts over the capture. Alongside it, Google fonts, jQuery from Google Hosted Libraries, and Bootstrap from BootstrapCDN are loaded. All of this loads without any choice by the visitor, and each of these hosts receives the visitor’s IP address. None of them is named in the policy. The recipient list in section 5.2 is given by category, and “IT support, hosting and software providers” formally covers them, so this is not recorded as a separate violation.

Proven: the site has no consent mechanism. The screenshot of the homepage’s first screen shows no banner. The network requests contain no consent-management platform. No server response sets a Set-Cookie header.

Proven: Google consent mode is not configured. The gcd parameter in all ten requests to Google shows unset consent states, and there is no gcs parameter.

Proven: the identifier was created on the first visit. The timestamp within it is 18:46:26 UTC; entry to the site was at 18:46:24 UTC. The requests carry first-visit and first-session markers. The identifier is the same across all four pages.

Proven: the same identifier goes to Google’s advertising endpoints. stats.g.doubleclick.net — once, www.google.ee/ads/ga-audiences — three times, with the npa=1 and aip=1 flags.

Not proven: the analytics property’s settings. The bodies of Google’s scripts and the page markup were removed from the published file. So which advertising features are enabled in the property cannot be read from the file. The finding rests on the requests to the advertising endpoints themselves.

Not verified: cookie lifetime. Cookie headers in requests were removed during cleaning, so compliance with the stated six months cannot be established by a browser-based measurement.

Boundaries of this observation

The measurement covers four pages of the public website. The Snabb app and the driver’s personal account were not examined. The observation records browser behavior, not server-side processing: what Google does with the data it receives, and how the analytics property is configured, are not verified by a browser-based measurement.

The review rests on the Estonian document “Privaatsuspõhimõtted”, which was opened during the capture. The English version of the site hosts a separate document for the Snabb platform, listing a different company address. Automated reading of that page is blocked by the site’s rules, so it is not included in the comparison.

The host admin.barking.ee is classified as first party: it is the same company’s former name. The storage barking-public.ams3.digitaloceanspaces.com serves parking icons and is classified as hosting. Requests to edge.microsoft.com are the browser’s built-in translator, not part of the site.

The file has been published cleaned: Cookie headers, page markup, and script bodies were removed. The client identifier is not reproduced in this review. Its creation within the session and its consistency across pages are established from the requests to Google themselves.

Legal assessment falls to the competent authority — the Andmekaitse Inspektsioon, which is named in section 6.1.7 of the policy itself.

Conclusion

The parking operator’s website switches on Google Analytics on the very first visit, with no banner and no configured consent mode. The device is tagged with an identifier two seconds after entry, and the same identifier simultaneously goes to Google’s advertising endpoints. The transmission continues on every subsequent page, including scroll events.

The policy, meanwhile, does not hide Google Analytics, but it makes consent unattainable. It names consent as one of two bases for cookies, does not specify which basis applies, and provides no way to give or withdraw consent. From the policy, a visitor does not learn that their identifier is transmitted to Google’s advertising infrastructure.

Remedy: do not load Google Analytics and Tag Manager before the visitor’s consent; introduce a banner with an equally prominent refuse button and configure Google consent mode with a default of denied; choose a single basis for analytics — consent — and state it plainly in the policy; give visitors a tool to withdraw consent for cookies as easily as they gave it; disable the analytics property’s advertising features, or describe them in the policy as a separate purpose; name Google (Analytics, Tag Manager, Maps, Fonts) and BootstrapCDN.

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/snabb-xyz-2026-09-27.har
SHA-256: fb6520766a60fc27079c505725e27196761fc59d816c4c7fb7a4f91f5e4a1f04
Screenshot
Скриншот интерфейса
The snabb.xyz homepage, first screen: no cookie banner, no choice offered to the visitor · 27.09.2026
Скриншот интерфейса
The Snabb parking map built on Google Maps — embedded in the page and loaded without any choice by the visitor · 27.09.2026
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.