Technical audit · 13.04.2026

koda.ee

Representing Business Interests

The Chamber of Commerce — the voice of business, teaching entrepreneurs how to operate correctly. On its own site, the banner states: clicking any link constitutes consent — a practice explicitly prohibited by GDPR. By the time the user sees the banner, data has already been transmitted to six services.

Request timeline

+248–268 ms · before consent
GTM (+248 ms), AddToAny (+253 ms), Google Maps API (+254 ms, status 200), Microsoft Clarity (+268 ms) fire on every page load. Some are blocked by the browser, but the requests had already gone out — the IP address reached servers in the USA.
Consent banner — broken
Text: 'By clicking any link, you confirm your consent.' This is not consent under Recital 32. There is no 'Reject' button, no 'Customize' button. There is one option — agree. The banner appears after all the requests.
Per session
Google Maps actually transmitted roughly 1.5 MB (313,583 bytes × 5 pages) to Google without consent, with the API key exposed in the HAR. CartoCDN — 164,836 bytes. unpkg and jsDelivr — CDNs in the USA.

Declared versus actual

✓ Google Analytics — the only entry in the cookie table — declared
+ Google Maps API — ~1.5 MB per session, key exposed — not declared
+ Microsoft Clarity — a session recorder — not declared
+ AddToAny, basemaps.cartocdn.com, unpkg.com, cdn.jsdelivr.net — not declared

Transfer timings

+248 ms www.googletagmanager.com

GTM — blocked by the browser, but the request went out, IP address to Google

+254 ms Google Maps API

Status 200. ~1.5 MB per session. API key exposed in the HAR

+268 ms Microsoft Clarity

Session recorder. Response blocked, request sent. Data to the USA

No exact timing

in the background basemaps.cartocdn.comA mapping service, 164,836 bytes. Absent from the policy

Detected trackers

Indicators of GDPR non-compliance

Context

Eesti Kaubandus-Tööstuskoda is the Estonian Chamber of Commerce and Industry. It represents entrepreneurs’ interests, processes data on thousands of member companies, and advises on running a business, including in the digital environment. HAR: 319 requests per session, 5 pages.

The site has a banner, but it’s structurally broken. Its text: “By clicking any link on this page, you confirm that you agree…” This is not consent: under GDPR Recital 32, consent requires an unambiguous affirmative action, and clicking an arbitrary link does not qualify — EDPB Guidelines 05/2020 explicitly prohibit this practice (“consent by continued use”). There is no “Reject” button, no “Customize” button — the only option is to agree. And by the time the user sees the banner, the data has already been transmitted: consent is requested after the fact.

On every page load, GTM (+248 ms), AddToAny (+253 ms), Google Maps API (+254 ms), and Microsoft Clarity (+268 ms) fire, along with CartoCDN, unpkg.com, and cdn.jsdelivr.net. Google Maps actually transmitted roughly 1.5 MB of data to Google per session (313,583 bytes on each of 5 pages), and the API key is exposed directly in the HAR file. Microsoft Clarity is a session recorder, capturing mouse movements and clicks. Some requests were blocked by the browser, but all of them had been initiated — the user’s IP address reached servers in the USA.

A policy frozen in 2018

The privacy policy was last updated on May 25, 2018 — the day GDPR came into force. Eight years, not a single update. Only Google Analytics is declared in the cookie table; Google Maps API, Microsoft Clarity, AddToAny, CartoCDN, unpkg, and jsDelivr go unmentioned. Six services actually run on the site, and the user knows nothing about them (Art. 13(1)(e)). A policy unchanged for 8 years, despite an actual change in the roster of processors, indicates non-compliance with Art. 5(1)(e).

Conclusion

The Chamber of Commerce sets standards, protects entrepreneurs’ interests, and teaches how to operate correctly. But customers’ digital rights don’t start with a brochure — they start with the organization’s own website. If an organization that advises businesses on legal matters doesn’t know what’s happening on its own site, that’s no longer just a technical question. It’s a question of trust.

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