Technical audit · 2026-05-26

wien.gv.at

Official Website of the City of Vienna

Official website of Vienna — 40 requests, 4 domains. A Truendo CMP is present, the privacy policy is detailed, Adform is in the code. But Siteimprove reaches an external server at 271 ms — before the consent banner has time to appear.

Timeline of the leak

+271 ms · before consent
Siteimprove Analytics loads its script from siteimproveanalytics.com. The Truendo CMP has not yet initialized at this point — app_api.pid.js only loads at +902 ms.
+315 ms · before consent
audio.buzzsprout.com delivers an audio file (206 Partial Content). Under the site's own policy, embedded media content requires consent — there is none.
+902 ms · Truendo
The Truendo CMP finishes initializing. Self-hosted: both scripts (truendo_cmp.pid.js, app_api.pid.js) load from www.wien.gv.at, with no external requests to prod-origin.truendo.com.
Session total
Adform is absent from the HAR — not activated on the homepage, or blocked. YouTube, Vimeo, and X are listed in the CSP but did not appear in the HAR. Of 40 requests, 38 go to proprietary infrastructure (wien.gv.at + assets.wien.gv.at).

Declared versus actual

Siteimprove — described in the policy, Art. 6(1)(e), cookieless — declared
Adform — described in the policy, Art. 6(1)(a), marketing — declared
Buzzsprout — described in the policy, Art. 6(1)(a), embedded content — declared
Vimeo — described in the policy, Art. 6(1)(a), embedded content — declared

Transfer timings

+271 ms siteimproveanalytics.com

Script loaded before consent. Cookieless tracking based on a Visitor Hash (IP + User-Agent).

+315 ms audio.buzzsprout.com

Audio stream loaded before consent. Buzzsprout — USA, SCC + EU-US DPF.

Detected trackers

Indicators of GDPR non-compliance

Context

wien.gv.at is the official portal of the City of Vienna, one of Austria’s largest municipal sites. Operator: Stadt Wien, MA 53 (Kommunikation und Medien). HAR: 40 requests, 4 domains.

Proprietary infrastructure, detailed policy

38 of 40 requests go to proprietary infrastructure: www.wien.gv.at and assets.wien.gv.at — the city’s own CDN. No Google, no Meta, no external fonts. HSTS with max-age=31536000 and preload. The server identifies itself as “Magistrat der Stadt Wien — Web Gateway.” The privacy policy is structured around GDPR Art. 13: four separate processing sections, legal bases, retention periods, DPO with contact details.

Siteimprove ahead of the banner

There is one main problem, but a specific one: Siteimprove Analytics loads 271 ms after the page opens. The Truendo CMP — the city’s consent management platform — only finishes initializing at 902 ms. There is no banner, there is no consent, and the script has already reached siteimproveanalytics.com and returned a 200. The city justifies Siteimprove via Art. 6(1)(e) — public interest — and treats it as not requiring consent. Austria’s TKG § 165 requires consent for any identifier, including a Visitor Hash. This is a disputed but real conflict.

Adform declared, absent from the HAR

Adform is listed in the CSP (track.adform.net, *.adform.net) and described in detail in the policy as a consent-based marketing tool. Not a single request to Adform appears in the HAR for the homepage. Either it’s not activated on the homepage, or it fires on other pages after consent. This is the correct architecture for an Art. 6(1)(a) tool.

Conclusion

wien.gv.at is not a case where trackers are hidden or the policy is unwritten. The policy is detailed, infrastructure is mostly proprietary, a Truendo CMP is present. The problem lies in one place: Siteimprove reaches the outside world before the consent system has time to act. 271 ms versus 902 ms — and this isn’t a technical glitch, but an architectural choice the city shields behind a disputed public-interest justification.

Evidence
Original (audit)
HAR file: at/wien-gv-at-2026-05-26.har
SHA-256: 0debe245f468d0f370a99e254af8fae974204509b280bcf7ab0240ebffa1b540
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.
IMPORTANT: before filing a complaint with the regulator, first contact the company directly and give it 30 days to respond. Without this step the regulator may reject the complaint. Details and a template letter to the company are in the Methodology.
Ready-to-send complaint letter

Where to file: Datenschutzbehörde (DSB)file a complaint online →

To: Datenschutzbehörde (DSB)
From: [Your name], [contact email]

1. Subject of the complaint
I am filing a complaint regarding the processing of my personal data by the website wien.gv.at.

2. Circumstances
I visited the website wien.gv.at and found indications that the processing of my personal data does not comply with the GDPR. The technical analysis published on gdpru.eu on 26 May 2026 (open methodology, reproducible measurements) documents the following indications:

1) Siteimprove Analytics loads 271 ms after the page opens — before the Truendo CMP has finished initializing and displaying the consent banner. There is no consent, yet the request has already gone out.

2) Buzzsprout loads audio 315 ms after the page opens — also before consent. By the site's own policy, embedded media requires Art. 6(1)(a).

Full technical documentation is published at: https://gdpru.eu/en/audits/at-wien-gv-at/

3. Provisions violated
GDPR Art. 6(1)(a), TKG § 165; GDPR Art. 6(1)(a)

4. Request
I request that you investigate the violations described and apply the measures provided for in Article 58(2) GDPR.

5. Attachments
The full evidence base — the HAR file, its SHA-256 checksum and the quotation from the site's privacy policy documenting the stated contradiction — is published and verifiable at the link in point 2 above.

[Date]                                    [Signature / name]