Technical audit · 25.09.2026

opera.ee

Website of the Estonian National Opera

Website of the Estonian National Opera — one recording, two loads of the home page, 225 requests, eleven nodes. The Cookiebot consent platform is correctly configured: refusal is on equal footing with consent, categories are off by default, and the refusal is recorded and shown in the settings. However, Google Analytics 4 runs in Consent Mode's advanced mode: the first page_view goes out even before the banner is shown, and after the recorded refusal page_view and scroll events carrying device and page information keep going to Google. Cookies are not stored, but the transmission does not stop. The policy of the operator — a public-law legal person — promises to transfer data to third parties only by law, under contract or with consent, and does not name Google. The browser did not send a DNT header.

Request timeline

+0 ms · navigation
Opening of opera.ee: 307 and 302 redirects to the Estonian version. nginx server. Security headers: HSTS (max-age=63072000), X-Frame-Options SAMEORIGIN, X-Content-Type-Options nosniff; there is no content security policy and no referrer policy. The browser did not send a DNT header.
+1119…+1535 ms · the container launches both consent and analytics
GTM-WXLXM5H (+1119 ms) loads Cookiebot uc.js (+1506 ms), gtag/js (+1522 ms) and analytics.js (+1535 ms); reCAPTCHA is loaded by the site's own script (+1899 ms).
+123890…+182841 ms · transmission after refusal
scroll (+123890 ms) on the same page, then after the reload — page_view (+173622 ms) and scroll (+182841 ms); in every case gcs=G100, gcd=13q3q3q2q5l1. On the new page the client identifier is new and the first-visit flag is set again — cookies are not stored.

Declared versus actual

✓ Controller — Rahvusooper Estonia, a public-law legal person; data-protection specialist andmekaitse@opera.ee — declared
✓ Basis for processing — applicable laws and legitimate interest — declared
✓ Cookies — files 'used for tracking or identification'; they can be disabled in the browser — declared
✓ Personal data is transferred to third parties when fulfilling legal obligations, in supervisory and court proceedings, to perform contracts, and also at the person's request and/or with their consent — declared
✓ Right to apply to the Data Protection Inspectorate or a court — declared
✓ Cookiebot declaration (updated 27.08.2026), necessary: CookieConsent, Google (test_cookie, rc::a, rc::c) with a note on use for advertising, Vimeo (__cf_bm), csrftoken — declared
✓ Cookiebot declaration, statistics: Google Analytics (_ga, _ga_#, _gat), sentryReplaySession; marketing: Meta (_fbp and others), Google (DFPAudiencePixel, _gid), Spotify, YouTube; unclassified: static.koobin.com, tickets.opera.ee — declared
✓ Banner: information on use of the site is shared with social media, advertising and analytics partners — declared
+ Google Analytics — not named in the data-processing principles — not declared
+ Transmission of device and page information to Google after a recorded refusal — not declared
+ Google reCAPTCHA as a recipient of data — not named in the processing principles — not declared

Transfer timings

+1119 ms www.googletagmanager.com

GTM-WXLXM5H; launches both Cookiebot and Google Analytics.

+1506 ms consent.cookiebot.eu

uc.js, leveloptin mode.

+2291 ms region1.google-analytics.com

page_view, gcs=G100, gcd=13p3p3p2p5l1.

+112357 ms consent.cookiebot.eu

logconsent.ashx?action=decline.

+123890 ms region1.google-analytics.com

scroll, gcs=G100, gcd=13q3q3q2q5l1; then page_view +173622 ms and scroll +182841 ms.

Detected trackers

Indicators of GDPR non-compliance


Context

opera.ee is the website of the Estonian National Opera (Rahvusooper Estonia): the repertoire, operas, operettas and musicals, ballets, performances for children, and ticket sales via tickets.opera.ee. The operator is a public-law legal person acting under the Estonian National Opera Act; the data-protection specialist is andmekaitse@opera.ee. The site is served by an nginx server, with media files from Amazon S3.

Processing is described by the Rahvusooper Estonia personal-data processing principles and the Cookiebot cookie declaration (updated 27 August 2026). Attached to the material are two screenshots: the consent banner and the consent state after the choice.

The measurement consists of one recording of about three minutes: a load of the Estonian home page and its reload. Two hundred and twenty-five requests, eleven nodes. The recording was made on 25 September 2026.

Who data goes to directly

Google (Analytics 4, Tag Manager, reCAPTCHA, Fonts, jQuery CDN), Cookiebot (the consent platform), Amazon (S3 — the site’s media files). There is no advertising, Meta, Spotify, YouTube or Sentry in the recording.

Declared versus actual

The data-processing principles give laws and legitimate interest as the basis and list the cases in which data is transferred to third parties: fulfilling legal obligations, supervisory and court proceedings, performing contracts, and the person’s own request or consent. Google is not named in the document; cookies are said to be ‘used for tracking or identification’ and can be disabled in the browser. The Cookiebot declaration is detailed: Google Analytics and Sentry session recording under statistics; Meta, Google advertising pixels, Spotify and YouTube under marketing.

The measurement shows the following.

The consent platform is correctly configured. Cookiebot runs in leveloptin mode. The banner, as seen in the screenshot, offers ‘Keeldu’, ‘Luba valik’ and ‘Luba kõik’ — refusal is on equal footing with consent, and the preference, statistics and marketing categories are off. The refusal is recorded at +112357 ms (logconsent.ashx?action=decline), and the state window after the choice shows all three categories as declined. The services declared under marketing — Meta, Google advertising pixels, Spotify, YouTube — did not fire in the recording.

Google Analytics sends data before the banner and after refusal. The Google Tag Manager container GTM-WXLXM5H launches both Cookiebot and Google Analytics at the same time. The first page_view of property G-8VGE9CCDY8 goes out at +2291 ms — before the banner configuration loads (+2336 ms) — with the status gcs=G100 and gcd=13p3p3p2p5l1: analytics and advertising ‘denied by default’. After the refusal gcd takes the value 13q3q3q2q5l1 — the denial is confirmed by an update — yet GA4 keeps sending a scroll event on the same page (+123890 ms), and after the reload a page_view (+173622 ms) and a scroll (+182841 ms). Each request carries the page title and address, the referrer, the screen resolution 1536x864, browser client hints (Microsoft Edge 153, Windows 19.0, x86/64) and the language.

Cookies are not stored, but transmission continues. On the new page the client identifier is new and the first-visit flag is set again — the refusal stops Google Analytics from writing cookies. However, under EDPB Guidelines 2/2023 on the technical scope of Art. 5(3) of the ePrivacy Directive, reading device information by script and transmitting it requires consent even without the use of cookies.

The documents do not reflect this transmission. The processing principles promise transfer to third parties only by law, under contract or with consent, and do not name Google; in fact browsing information goes to Google even after refusal. The Cookiebot declaration, moreover, classifies the Google cookie test_cookie as necessary, while noting next to it that this provider’s data is used for personalisation and measuring advertising.

Functional nodes: Google reCAPTCHA (www.google.com/recaptcha, www.gstatic.com) is loaded by the site’s own script on every page, with the Roboto font from Google Fonts; jQuery — from ajax.googleapis.com; media files — from s3.eu-central-1.amazonaws.com/estonian-opera-production.

Proven: the consent platform is correctly configured and the refusal is recorded. By the screenshots and the logconsent.ashx?action=decline request.

Proven: the first page_view goes out before the banner is shown. The /g/collect request at +2291 ms precedes the loading of the Cookiebot configuration at +2336 ms.

Proven: after refusal GA4 keeps sending page_view and scroll. Three requests with the status gcs=G100 and gcd=13q3q3q2q5l1 after +112357 ms.

Proven: there is no persistent identifier between pages. The cid values on the two loads differ, and the first-visit flag is set on both.

Not proven and not asserted: how Google processes the received requests on its side. A browser measurement captures the fact and content of the transmission, not how Google uses it.

Separately: the browser did not send a DNT header in this recording.

Bounds of observation

The measurement covers the site’s home page and its reload; no tickets were purchased. Observation captures the browser’s behaviour, not the internal side of the services. The legal assessment is made by the competent authority — in Estonia, Andmekaitse Inspektsioon.

The file is published redacted under a “lean” profile: cookie values in requests have been removed, the Cookie and Set-Cookie headers stripped; the redaction registry records 207 redactions and a checksum. The consent-mode parameters, the set of fields in the Google Analytics requests, the consent decision and the timings are fully legible from the recording.

The identification of services relies on domains and address patterns: analytics — by google-analytics.com and property G-8VGE9CCDY8; the container — by GTM-WXLXM5H; the consent platform — by cookiebot.eu; reCAPTCHA — by google.com/recaptcha and gstatic.com. The gcd values are interpreted according to Google’s documentation on consent-mode parameters.

Conclusion

A correctly configured Cookiebot consent platform operates on the Estonian National Opera’s website: refusal is on equal footing with consent, categories are off by default, and the refusal is recorded and visible in the settings. However, Google Analytics 4 is launched by the same Google Tag Manager container in Consent Mode’s advanced mode: the first page_view goes out even before the banner is shown, and after the recorded refusal page_view and scroll events keep going to Google with the page address and title, screen resolution, browser client hints and language. The refusal stops the writing of cookies, but not the transmission of data. The data-processing principles of the operator — a public-law legal person — promise transfer to third parties only by law, under contract or with consent and do not name Google, while the Cookiebot declaration classifies the Google test_cookie, an advertising cookie by its own description, as necessary.

Remediation: switch Google Analytics to Consent Mode’s basic mode, in which the tag neither loads nor sends requests before consent, and launch it only after a choice in the banner; name Google Analytics, Google Tag Manager and reCAPTCHA in the data-processing principles and state the purposes and legal basis of web analytics; move test_cookie out of the necessary category into one requiring consent; set a content security policy and a referrer policy.

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/opera-ee-2026-09-25.har
SHA-256: 870bc4cc26d64d93b8962e2329487d5a02c99e6967bd620f0a673492e02bb2e0
Screenshot
Скриншот интерфейса
Cookiebot banner: 'Keeldu' on equal footing with 'Luba kõik', statistics and marketing categories off · 25.09.2026
Скриншот интерфейса
Consent state after the choice: preferences, statistics and marketing declined — matches action=decline in the network recording · 25.09.2026
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.