Technical audit · 06.06.2026

pilet.ee

Estonia's Public Transport Ticketing Platform

Estonia's public transport ticketing platform — Swedbank, SEB, LHV, Visa, Mastercard. There is no consent banner. LaunchDarkly transmits an identifier for every anonymous user to the USA on page load.

Request timeline

+83 ms · before consent
Google Fonts (fonts.googleapis.com) — the Inter typeface, IP address to Google, USA.
+1350 ms · before consent
GTM (GTM-MFT2LM8) — loads with no consent.
+1359 ms · before consent
LaunchDarkly (app.launchdarkly.com) — SDK goals and evalx requests. Transmits an anonymoususer identifier to the USA.
+1522 ms · before consent
LaunchDarkly clientstream — a persistent SSE connection carrying the user identifier.
Consent banner
Completely absent. Zero consent requests, zero Set-Cookie.

Declared versus actual

+ Google Fonts (fonts.googleapis.com, fonts.gstatic.com) — not declared
+ Google Tag Manager (GTM-MFT2LM8) — not declared
+ LaunchDarkly (app.launchdarkly.com, clientstream.launchdarkly.com) — not declared

Transfer timings

+83 ms fonts.googleapis.com

Inter. IP address to Google, USA

+1350 ms www.googletagmanager.com

GTM-MFT2LM8, status 200

+1359 ms app.launchdarkly.com

SDK goals + evalx, anonymoususer ID

+1522 ms clientstream.launchdarkly.com

An SSE stream carrying the identifier. USA

Detected trackers

Indicators of GDPR non-compliance

Context

pilet.ee is Estonia’s public transport ticketing platform, run by Ridango AS. Payment transactions flow through the site: bank links for Swedbank, SEB, and LHV, plus Visa and Mastercard. The privacy policy is, in fact, Ridango’s terms of service — describing the rules for using the service, not the processing of personal data on the site. HAR: 50 requests, 7 domains.

LaunchDarkly — what it is

LaunchDarkly is an American feature-flag management platform: it lets site features be toggled on and off for different user groups without code deployment. A technically useful tool, but on load it transmits every visitor’s identifier to the USA.

Three requests appear in the HAR: sdk/goals (goals), sdk/evalx/…/users/ (flag evaluation for the user), and clientstream (a persistent SSE connection). The URL encodes JSON with an anonymoususer key — LaunchDarkly assigns a unique identifier to every anonymous visitor and transmits it to American servers. All of this happens before any consent banner appears — and there is none at all.

The policy — not about privacy

The document is titled “Ridango teenuste tingimused” — terms of service. It describes ticket-purchase rules, prices, refunds, and the parties’ liability. There is no section on cookies, external services, or personal-data recipients. This is not a privacy policy within the meaning of GDPR Art. 13.

Sensitivity context

pilet.ee is not an informational site. Real payment transactions of Estonian residents pass through it. The absence of a consent banner on a payment platform means data about every visitor is transmitted to Google and LaunchDarkly before a person has even decided to buy a ticket.

Conclusion

50 requests, 7 domains — a relatively clean architecture for a payment platform. But LaunchDarkly transmits every anonymous user’s identifier to the USA, GTM loads with no consent, there’s no banner at all, and the document titled a privacy policy isn’t one. Ridango builds payment infrastructure for urban transport — the same level of care should extend to how it handles site visitors’ data.

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