Technical audit · 06.09.2026

laspa.ee

Laulasmaa spa-hotel website

A spa-hotel website — a single capture of the homepage, 101 requests, 10 nodes, about one second. The CookieYes consent management platform loads first, and the active consent is negative: the state across all analytics and advertising requests is 'denied'. Even so, the Facebook / Meta Pixel sends a PageView, Google AdSense sends a page_view to an ad account, and GA4 sends its own ping. The library of the legacy Universal Analytics counter additionally loads on the page. The privacy policy meanwhile states plainly that the operator does not transfer data to third parties without consent, and names only the payment service as a recipient — whereas the data goes to Meta and Google. The security headers are weak: the site sets neither HSTS nor Content-Security-Policy.

Request timeline

+682 ms · legacy counter
www.google-analytics.com/analytics.js — the Universal Analytics library is pulled in from the container. Data processing in Universal Analytics was shut down by Google in 2023; there is no /collect request in this capture — dead weight is loaded.
+684…+906 ms · Facebook / Meta Pixel
connect.facebook.net/fbevents.js at +684 ms, the signals/config/1056232558212702 configuration at +856 ms, then www.facebook.com/tr at +906 ms — a PageView event of pixel 1056232558212702.
+688…+789 ms · Google AdSense / Ads
pagead2.googlesyndication.com/ccm/collect — page_view events, including to the ad account AW-299175511. All with the state gcs=G100.
+747 ms · GA4
region1.google-analytics.com/g/collect — page_view, counter G-5MBV570VB4, gcs=G100. Cookieless ping.

Declared versus actual

✓ Controller — LaSpa Group OÜ, registry number 16097332, Pukekodu tee 4, Laulasmaa, Lääne-Harju vald 76702; info@laspa.ee, reservations@laspa.ee — declared
✓ Policy: 'Me töötleme teie isikuandmeid ainult teile teenuse osutamiseks' — data is processed only to provide the service to you — declared
✓ Policy: 'Me ei edasta, müü ega avalikusta Teie andmeid kolmandatele osapooltele ilma Teie eelneva nõusolekuta' — we do not transfer, sell or disclose data to third parties without prior consent — declared
✓ The only named recipient is the payment processor Maksekeskus AS (for carrying out payments) — declared
✓ Booking terms, clause 6.2: personal data is not disclosed to third parties without consent, except as provided by law; clause 6.4 — payment via Stripe (PCI-DSS) — declared
✓ CookieYes cookie declaration: necessary — rc::a, rc::c (Google reCAPTCHA); analytics — _ga, _gid, _gat_UA-*, _ga_* (Google Analytics, 'anonymously'), sbjs_* (Sourcebuster); marketing — _gcl_au (Google), _fbp (Facebook) — declared
✓ Supervisory authority — Andmekaitse Inspektsioon — declared
+ Facebook / Meta Pixel — not named as a recipient in the policy (the cookie declaration has only the _fbp cookie) — not declared
+ Google AdSense / Ads and the ad account AW-299175511 — not named in the policy — not declared
+ Google Analytics as a recipient — not named in the policy (present only in the cookie declaration) — not declared
+ That the Facebook pixel, the AdSense advertising and the analytics fire under a refused consent — not declared
+ The legacy Universal Analytics counter library loaded on the page — not declared

Transfer timings

+439 ms cdn-cookieyes.com

CookieYes, first from the page markup.

+682 ms www.google-analytics.com

Universal Analytics analytics.js library, a legacy counter; no /collect request.

+747 ms region1.google-analytics.com

GA4 page_view, counter G-5MBV570VB4, gcs=G100.

+788 ms pagead2.googlesyndication.com

AdSense page_view to the ad account AW-299175511, gcs=G100.

+906 ms www.facebook.com

PageView, pixel 1056232558212702. Under a refused consent.

Detected trackers

Indicators of GDPR non-compliance

Context

laspa.ee is the website of the LaSpa Laulasmaa spa hotel in Laulasmaa. The controller is LaSpa Group OÜ, registry number 16097332, Pukekodu tee 4, Laulasmaa, Lääne-Harju vald 76702; contacts info@laspa.ee, reservations@laspa.ee. On booking, name, address, phone, email and payment data are collected. The site is served via Apache/ZoneOS and sets no protective headers.

The capture is a single recording of the homepage: 101 requests, 10 nodes, about one second, recorded on 6 September 2026. Consent is managed by the CookieYes platform. Processing is described by the LaSpa Group privacy policy (laspa.ee/et/privaatsuspoliitika/), the booking terms, and the automatic CookieYes cookie declaration.

Who receives data directly

Meta (Facebook Pixel), Google (AdSense, Analytics, Tag Manager). Of the functional — Google reCAPTCHA and the jQuery library.

Declared vs. actual

The hotel’s privacy policy is worded briefly and categorically — and it is in that categoricalness that the discrepancy arises.

First — the trackers fire under a refused consent. The load order here is correct: the CookieYes platform starts first, from the page markup. The problem is not the order but that the active consent is negative, and that does not stop the trackers. The consent state in the GA4 ping and in the AdSense requests is gcs=G100 (both storages denied). Even so, the Facebook / Meta Pixel sends PageView, Google AdSense sends page_view to the ad account AW-299175511, and GA4 sends its own ping. Google analytics does honour the storage denial (the pings are cookieless), but the pixel and the advertising are not conditioned on that state.

Second — the policy denies a transfer that does happen. The privacy policy states plainly that the operator ‘does not transfer, sell or disclose’ data to third parties without prior consent, and names the payment service Maksekeskus AS as the only recipient. In fact data goes to Meta via the Facebook pixel and to Google via AdSense and Google Analytics — without consent and without any mention of these recipients. The document denies exactly the kind of transfer that the capture records.

Third — the recipients are disclosed only in the cookie declaration, and inaccurately. Neither Google nor Facebook is named in the policy itself. Their presence is disclosed only in the automatic CookieYes cookie declaration, where _fbp (Facebook) and _gcl_au (Google) are assigned to marketing files. At the same time, that same declaration describes the _ga analytics as storing information ‘anonymously’ — whereas the transfer of an event with the page URL to Google and of the pixel to Meta is not an anonymised count.

Fourth — a legacy counter as dead weight. The Universal Analytics library (analytics.js) loads on the page, its data processing having been shut down by Google in 2023. There is no /collect request in this capture — so no data goes out through it, but the very fact of loading a defunct counter points to legacy code that has not been removed.

Fifth — the security headers are weak. The site on Apache/ZoneOS sets neither HSTS, nor Content-Security-Policy, nor Referrer-Policy, nor X-Frame-Options, nor X-Content-Type-Options — on a platform where a guest leaves contact and payment data on booking.

Proven: the active consent is negative. The GA4 ping and the AdSense requests carry gcs=G100 (both storages denied). So at the time of the capture, consent for analytics and advertising was not given.

Proven: the consent platform loads first. cdn-cookieyes.com starts at +439 ms from the page markup, before any tracker; the banner elements are pulled in only at +1031 ms. So the trackers fire not because of an earlier load, but in spite of the consent state.

Proven: the trackers transmit data in this state. Facebook /tr goes out at +906 ms (PageView); AdSense ccm/collect at +788 ms (page_view, account AW-299175511); GA4 g/collect at +747 ms.

Not proven, and not claimed: a transfer via Universal Analytics. The analytics.js library loads, but there is no /collect request to the legacy counter in the recording; no conclusion is drawn about a transfer through it.

Observation boundaries

The capture covers one page — the homepage — and records browser behaviour, not the services’ internal workings: server-side processing and contracts with recipients are not verified by a browser-level capture. Service identification relies on domains and URL schemes: Meta — by connect.facebook.net and facebook.com/tr with the pixel identifier; Google — by google-analytics.com, googletagmanager.com and googlesyndication.com with the counter and ad-account numbers. The sbjs_* file (Sourcebuster) in the cookie declaration is a client-side visit-source attribution mechanism; it is not among the network recipients in this capture.

The file is published redacted of personal data: cookie values in requests have been removed. Response bodies and markup are preserved, so the load order, initiators and request parameters are verified directly against the published file. The consent state is established from the machine signal gcs=G100 in the requests to Google. The current privacy policy was checked against the site (laspa.ee/et/privaatsuspoliitika/).

The legal assessment is made by the competent authority — Andmekaitse Inspektsioon.

Conclusion

The spa-hotel website keeps the CookieYes consent management platform and loads it first, and Google analytics does honour the storage denial — the pings are cookieless. But the rest of the tracking ignores that state: under a refused consent (gcs=G100) the Facebook / Meta Pixel sends a PageView, and Google AdSense sends a page_view event to an ad account. The library of the Universal Analytics counter, defunct since 2023, additionally loads on the page.

The privacy policy meanwhile states plainly that the operator does not transfer, sell or disclose data to third parties without prior consent, and names the payment service Maksekeskus AS as the only recipient — whereas the data in fact goes to Meta and Google. None of these web recipients is named in the policy; they are disclosed only in the automatic cookie declaration. Added to this is the weakness of the security headers on a platform that collects contact and payment data on booking.

Remediation: condition the firing of the Facebook pixel, the AdSense advertising requests and the analytics on actual consent, so that under a refusal (gcs=G100) these requests do not go out; remove the defunct Universal Analytics counter library from the pages; bring the privacy policy into line with the facts — name Meta and Google as recipients of web data, or cease those transfers; and set the basic set of protective headers (HSTS, Content-Security-Policy, Referrer-Policy, X-Frame-Options, X-Content-Type-Options).

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/laspa-ee-2026-09-06.har
SHA-256: 43925d6a6d014c674ea91bb0dc95d12e8ae3365e933eb4e9a3f75ac68c6eca2c
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.