Technical audit · 27.09.2026

virukeskus.com

Website of the Viru Keskus Shopping Centre in Tallinn

The website of the Viru Keskus shopping centre — eleven pages, 764 requests. The Cookiebot banner is exemplary: refusal sits next to consent and looks the same. But pressing 'Keeldu' changes nothing for the Meta pixel. It sent events before any choice and continued after refusal — on every page and with every shop selection on the centre's floor plan. Meta, moreover, is named neither in the cookie declaration nor in the policy, and the policy mentions neither the right to withdraw consent nor the right to lodge a complaint.

Request timeline

+0 s · entering the homepage
Redirect http → https. The site runs on WordPress, served by Apache. There is no Content-Security-Policy header and not a single Set-Cookie header.
+1.5…+1.8 s · consent platform
Cookiebot: uc.js, configuration, and cc.js. At the same time, calendar styles from cdn.jsdelivr.net.
+3.4…+3.7 s · the Meta pixel before any choice
connect.facebook.net/en_US/fbevents.js (+3.4 s), the configuration of pixel 1756073664609514 (+3.7 s), and a PageView event to www.facebook.com/tr (+3.7 s): page address, screen width and height.
+128…+310 s · the pixel after refusal
On each of the next ten pages — contact, privacy policy, homepage, offers, Roheversum, floor plan, services, a news item, parking — the Meta pixel loads anew and sends a PageView with the page address and the address of the previous page.
+229…+258 s · shop selections on the floor plan
The floor-plan page: every shop selected on the map sends a separate PageView event with the address majaplaan?shop=… — ten events, one for each shop viewed.

Declared versus actual

✓ Controller — Viru Keskus AS, registration code 10932986, Viru väljak 4, Tallinn; contact info@virukeskus.com — declared
✓ Banner: cookies are used to personalise content and ads, provide social media features, and analyse traffic; data is shared with social media, advertising, and analytics partners — declared
✓ Banner: three equally weighted buttons — 'Keeldu', 'Luba valik', 'Luba kõik' — declared
✓ Cookiebot declaration, updated 11.09.2026: Cookiebot, Issuu, Monotype, Soundcloud, Stripe, Hotjar, WordPress.com, Google (_ga, _gcl_au, and others), YouTube, the site's own sbjs_*; Meta and _fbp are not listed — declared
✓ Policy: purposes — video surveillance, marketing, the customer app, business relations; legal bases — legitimate interest, consent, contract, legal obligation — declared
✓ Policy: for rights — a link to a European Commission page and the address info@virukeskus.com — declared
+ The Meta pixel — neither in the Cookiebot declaration nor in the policy — not declared
+ The Meta pixel runs before any choice and after refusal — not declared
+ Every shop selection on the centre's floor plan is sent to Meta as a separate event — not declared
+ The right to withdraw consent at any time is not stated in the policy — not declared
+ The right to lodge a complaint with the Andmekaitse Inspektsioon is not stated in the policy — not declared
+ Data processing on the website — cookies, analytics, advertising — is not described in the policy — not declared
+ jsDelivr is not named — not declared

Transfer timings

+3.4 s connect.facebook.net

fbevents.js and the configuration of pixel 1756073664609514.

+3.7 s www.facebook.com

Homepage PageView: page address, screen dimensions.

+120.6 s consent.cookiebot.com

logconsent, action=decline.

+128.2 s www.facebook.com

PageView of the contact page — the first event after refusal.

+140.6 s www.facebook.com

PageView of the privacy policy page.

+236.0 s www.facebook.com

PageView with the address majaplaan?shop=… — the shop selected on the map.

+310.0 s www.facebook.com

PageView of the page for drivers — the twentieth event after refusal.

Detected trackers

Indicators of GDPR non-compliance

Context

virukeskus.com is the website of the Viru Keskus shopping centre in Tallinn. The controller is Viru Keskus AS (registration code 10932986, Viru väljak 4, Tallinn). The site runs on WordPress and is served by Apache. There is no Content-Security-Policy header, and no response sets Set-Cookie. Consent is managed by Cookiebot.

The measurement is a single capture of eleven pages: the homepage, contact, the privacy policy, offers, the Roheversum section, the floor plan, services, a news item, and the page for drivers. In total, 764 requests to 7 hosts. Of these, 4 requests to edge.microsoft.com are a browser service; they have nothing to do with the site and are excluded from the review. Apart from the consent platform, there are two third-party hosts: Meta and jsDelivr.

Processing is described by three texts: the Cookiebot banner, the Cookiebot cookie declaration (updated September 11, 2026), and the “Isikuandmete kaitse” page.

Who receives data directly

Meta — before any choice and after refusal. Cookiebot — as the consent platform. jsDelivr — calendar styles.

Declared versus actual

The banner here is exemplary. The “Keeldu” button sits on the first screen next to “Luba kõik” and looks the same, and non-essential categories are switched off by default. The declaration lists a dozen providers, and none of them loads without consent in the capture. All of this looks like a disciplined setup — except for one component that is missing from the declaration.

First — the Meta pixel runs on its own. The pixel script loads at +3.4 s, and at +3.7 s the first PageView event goes to www.facebook.com/tr — with the page address and screen dimensions. By this point, the visitor has not chosen anything. At +120.6 s, they press “Keeldu”, and Cookiebot records the refusal. The pixel does not react. On each of the next ten pages, it loads anew and sends a PageView with the page address and the address of the previous page. In total, 20 events after refusal.

The floor plan is the most telling. There, every shop selected on the map changes the page address, and the pixel sends a separate event with the shop parameter. In half a minute, Meta received ten such events — a list of the shops the visitor viewed on the map after refusing marketing cookies.

Second — the Meta pixel is mentioned nowhere. The Cookiebot declaration is detailed: Google, Hotjar, Issuu, Soundcloud, YouTube, WordPress.com, Stripe, Monotype, and the site’s own cookies. There is no Meta, Facebook, or _fbp in it. The privacy policy says nothing about the website at all: it describes video surveillance, marketing, the customer app, and business relations, but not cookies, analytics, or advertising partners. The banner mentions social media and advertising partners without names. The result is a mirror image: everything named in the declaration stays silent in the capture, while the only third-party tracker that runs is named nowhere. This is most likely why Cookiebot does not block it — the platform controls only what has been described to it.

Third — the policy is incomplete on mandatory points. It gives consent as the legal basis for marketing and for personalised offers in the app. But the text does not state that consent can be withdrawn at any time. The data subject’s rights are not listed — instead there is a link to a general European Commission page. Nothing is said about the right to lodge a complaint with the Andmekaitse Inspektsioon.

Proven: the Meta pixel runs before any choice. Script at +3.4 s, PageView event at +3.7 s; the refusal is recorded only at +120.6 s.

Proven: the Meta pixel runs after refusal. The Cookiebot log records action=decline at +120.6 s. After that — 20 PageView events across ten pages.

Proven: shop selections on the floor plan are sent to Meta. Ten events with the address majaplaan?shop=…, one for each shop selected.

Proven: Meta is absent from the declaration and the policy. A search of both saved documents finds neither Meta, nor Facebook, nor _fbp.

Not established: whether facebook.com cookies are sent to Meta. The pixel does not transmit its own _fbp identifier in the events. Whether Meta’s own cookies, if present in the browser, are sent along with the requests to www.facebook.com cannot be checked in the cleaned file: Cookie headers were removed.

Not established: how the pixel is inserted into the page. The page markup was removed during cleaning. Whether it is inserted directly or via the WordPress theme cannot be read from the file. What is established is the outcome: its loading does not depend on the decision in the banner.

Boundaries of this observation

The measurement covers eleven public pages of the site. The customer app and restaurant orders were not examined. The observation records browser behavior, not server-side processing. What Meta does with the events it receives is not verified by a browser-based measurement.

The parameters of the Meta events are carried in the request address and are fully preserved in the published file: pixel ID, event type, page address, previous page address, screen dimensions. Cookie headers and page markup were removed during cleaning.

The cookie declaration and the policy were saved from the site in full and can be verified against the saved files.

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

Conclusion

The shopping centre has installed a banner that looks like a model to follow: refusal on the first screen, equally weighted buttons, categories switched off by default. But the only third-party tracker actually running on the site is not covered by this system. The Meta pixel sends events from the fourth second, continues after a recorded refusal, and even transmits which shops the visitor selected on the centre’s floor plan.

This pixel appears neither in the cookie declaration nor in the privacy policy. The policy, moreover, mentions neither the right to withdraw consent nor the right to lodge a complaint with the supervisory authority.

Remedy: bring the Meta pixel under Cookiebot — mark it as marketing and do not load it without consent to marketing; add Meta and its cookies to the declaration; add a section to the policy on data processing on the website — cookies, analytics, advertising, recipients; add to the policy the right to withdraw consent at any time and the right to lodge a complaint with the Andmekaitse Inspektsioon, as well as a list of the data subject’s rights instead of a link to an external page.

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/virukeskus-com-2026-09-27.har
SHA-256: 7cbb0ad29cefc9ad309a649a454ae04d4f4de8ed7df5e96f47854ab27c53beca
Screenshot
Скриншот интерфейса
The Cookiebot banner on the homepage: 'Keeldu', 'Luba valik', and 'Luba kõik' — three equally weighted buttons; all non-essential categories are switched off by default · 27.09.2026
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.