Technical audit · 29.05.2026

bahn.de

Germany's National Railway Operator

Deutsche Bahn — Germany's largest transport operator. 411 requests, 8 domains. All external domains are either DB's own infrastructure or declared services. The at.bahn.de/1x1.gif tracking pixel fires with no consent recorded. Optimizely and Verint initiate requests that end up blocked by the browser.

Request timeline

+179–500 ms · load
All CSS, JS bundles, fonts (icon-font-fallback.woff2) load from www.bahn.de. Proprietary infrastructure.
+461–462 ms · tracking init
initTracking-DFtVjSRH.js and onConsentProvidedOrEdited-GrrqcBQr.js load as part of the main bundle.
+3811 ms · tracking
at.bahn.de/ccrm — a request to DB's own analytics endpoint (302 redirect).
+4070 ms · pixel
cdn-at.bahn.de/1x1.gif — a Tealium/Adobe Analytics tracking pixel. A 1×1 GIF — a classic analytics beacon.
+4588 ms · blocked
cdn.optimizely.com — A/B testing configuration. Status 0 — blocked by the content blocker.
+4980 ms · blocked
ucm-eu.verint-cdn.com — the Verint SDK. An EU endpoint. Status 0 — blocked.

Declared versus actual

✓ Adobe Analytics — in the policy (via at.bahn.de) — declared
✓ Tealium — in the policy as Tag Management — declared
✓ Optimizely — in the policy as A/B testing — declared
✓ Verint Systems — in the policy (Ziegelteich 29, 24103 Kiel) — declared
✓ Qualtrics — in the policy — declared
✓ m-pathy — in the policy — declared

Transfer timings

+3811 ms at.bahn.de

DB's own analytics endpoint. /ccrm → 302.

+4070 ms cdn-at.bahn.de

1x1.gif tracking pixel. Tealium/Adobe Analytics.

+4588 ms cdn.optimizely.com

Optimizely A/B datafile. Initiated by JS before being blocked.

+4980 ms ucm-eu.verint-cdn.com

Verint SDK next-bahn-de. EU endpoint. Initiated before being blocked.

Detected trackers

Indicators of GDPR non-compliance

Context

Deutsche Bahn AG is Germany’s federal railway company, responsible for passenger and freight transport. Ticket sales, bookings, account management. HAR: 411 requests, 8 domains. 390 requests to www.bahn.de, 9 to assets.static-bahn.de, 7 to cms.static-bahn.de — and 5 to external domains, two of which belong to DB itself (at.bahn.de, cdn-at.bahn.de).

Proprietary analytics infrastructure

DB uses at.bahn.de as its own analytics domain — a bahn.de subdomain, meaning it is technically first-party. Through /ccrm (+3811 ms), a redirect fires to cdn-at.bahn.de/1x1.gif (+4070 ms). The “redirect to a 1x1 pixel” pattern is a classic implementation of Tealium iQ Tag Management with an Adobe Analytics beacon. The policy confirms that Tealium and Adobe Analytics are used for analytics, with IP addresses anonymized where required.

There is no cookie banner and no SET-Cookie in the HAR. This means either that consent was carried over from a previous session (though the Cookies in the requests are also empty), or that tracking fires with no explicit user consent. The file names initTracking-DFtVjSRH.js and onConsentProvidedOrEdited-GrrqcBQr.js indicate the presence of consent logic — but its activation is not recorded in the HAR.

Optimizely and Verint — status 0

Both services are declared in the policy, and both initiate requests in the HAR — Optimizely (+4588 ms) and Verint (+4980 ms). Status 0 means the requests were blocked at the network level (uBlock Origin or a similar content blocker in the audit browser). This does not mean DB’s consent mechanism blocked them — on the contrary, the very fact that a network request to an external domain was initiated means the JS code had already executed. The browser-level blocker intercepted the request after it was initiated.

Documentation: detailed and correct

bahn.de’s privacy policy names all the providers involved by name: Tealium, Adobe Analytics, Optimizely, Qualtrics, m-pathy, Verint. For each, an address, legal basis, and description of the processing are given. For Optimizely, the stated legal basis is explicit: § 25 Abs. 1 TDDDG (consent). For Verint: Art. 6(1)(b) DSGVO (contract). This level of disclosure is unmatched by most sites in the Irish series.

Conclusion

bahn.de shows correct documentation and, apparently, the presence of a consent mechanism — but the HAR records neither a banner nor cookies, and the tracking pixel fires anyway. Two external services (Optimizely, Verint) initiate requests before being blocked by the browser. A full compliance assessment would require testing in a browser with no blockers, while observing the banner’s actual behavior.

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: de/bahn-de-2026-05-29.har
SHA-256: 4ae4bea877ba3a6226cf7a23bed2cdb7d198fb0da69677584bfdee8aa056f2f0
Re-check snapshot
Awaiting changes
HAR files are stored on EU infrastructure (Proton Drive). SHA-256 is published for integrity verification.