Technical audit · 29.05.2026

obi.de

German Home Improvement Retail Chain

A German home improvement retail chain. 388 requests, 21 domains. CloudFront. Usercentrics TCF serves as the CMP — but Kameleoon, Instana, GTM, and Bannerflow are all active before the banner. Four violations: two services undeclared (Instana, Bannerflow), two active without consent (Kameleoon visitorCode, GTM). Baqend SpeedKit and ot.obi.de — OBI's proprietary infrastructure.

Request timeline

+120 ms · Instana, Usercentrics loader, Kameleoon
Three external services activate simultaneously with page load: eum.instana.io/1.8.1/eum.min.js (IBM RUM monitoring), web.cmp.usercentrics.eu/ui/loader.js (the CMP loader), l96jc26jvj.kameleoon.eu/engine.js (the A/B engine). Before the banner.
+131 ms · Baqend SpeedKit
obi-de.app.baqend.com/v1/speedkit/install.js — SpeedKit optimizes page loading, ML models (cl_desktop_xgb.json, cl_desktop_cfg.json), and a bloom filter. Six rum/pi requests follow throughout the session. Declared in the policy as technically necessary (§25(2) TDDDG).
+202 ms · Google Tag Manager
www.googletagmanager.com/gtm.js?id=GTM-5SDGHH — the tag container loads before the banner. Not mentioned in the policy.
+337 ms · Kameleoon visitorCode
eu-data.kameleoon.eu/visit/visitor?siteCode=l96jc26jvj — a request with currentVisit=true transmits visit data to Kameleoon SAS's servers. Followed at +1101 ms by visit/events, carrying visitorCode=r5rxxh2... and POST data.
+1442 ms · Bannerflow
c.bannerflow.net/scripts/responsive-format-v4.js (did=5cf6638e...) — the banner advertising platform. 19 requests: scripts, obi-baumarkt campaign data, fonts, image optimization. A tr/v2/pixel/ pixel (+2286 ms) fires before any interaction with Usercentrics.
+4636 ms · Usercentrics TCF
uct.service.usercentrics.eu/uct — the first banner analytics request. web.cmp.usercentrics.eu loads TcfCmpController, UcTcfCmpView, secondLayer. api.usercentrics.eu returns the GVL (Global Vendor List, IAB TCF v3). graphql.usercentrics.eu — the final request. The banner appears roughly 4.6 seconds after the page starts loading.

Declared versus actual

✓ Kameleoon — declared as technically necessary (§25(2) TDDDG), 380-day retention — declared
✓ Baqend SpeedKit — declared as technically necessary (§25(2) TDDDG) — declared
✓ Usercentrics — declared as the CMP (§25(2) TDDDG, Art. 6(1)(c)) — declared
✓ Mapp Intelligence / Webtrekk — declared as anonymous tracking (§25(2) TDDDG) — declared
✓ Bonial — declared (§25(2) TDDDG) — declared
+ Instana / IBM (eum.instana.io, eum-blue-saas.instana.io) — not mentioned — not declared
+ Bannerflow (c.bannerflow.net) — not mentioned — not declared
+ Google Tag Manager (GTM-5SDGHH) — not mentioned — not declared

Transfer timings

+120 ms eum.instana.io

Instana EUM. IBM. Real User Monitoring. Not declared.

+121 ms l96jc26jvj.kameleoon.eu

Kameleoon engine.js. A/B testing. visitorCode.

+202 ms www.googletagmanager.com

GTM-5SDGHH. Tag container. Not declared.

+1442 ms c.bannerflow.net

Bannerflow. Banner advertising. tr/v2/pixel/. Not declared.

Detected trackers

Indicators of GDPR non-compliance

Context

OBI is a German retail chain of home improvement and hardware hypermarkets, with 350+ stores across Germany. A subsidiary of the Tengelmann Group. CloudFront CDN, a Next.js-like architecture. HAR: 388 requests, 21 domains.

Loading before the banner: four external services

Usercentrics (the CMP) displays the consent banner roughly 4.6 seconds after the page begins loading. By that point, four external services are already active.

At +120 ms, Instana EUM (eum.instana.io/1.8.1/eum.min.js) loads — IBM’s Real User Monitoring tool. Over the course of the session, Instana transmits data to eum-blue-saas.instana.io three times. At +121 ms, the Kameleoon engine loads (l96jc26jvj.kameleoon.eu/engine.js). At +337 ms — a request to eu-data.kameleoon.eu/visit/visitor assigning a visitorCode, followed at +1101 ms by transmission of visit events carrying that identifier. At +202 ms, Google Tag Manager loads (GTM-5SDGHH). At +1442 ms, Bannerflow activates with a tracking pixel.

Kameleoon: “technically necessary” with a 380-day visitorCode

The policy declares Kameleoon as technically necessary under §25(2)(2) TDDDG and Art. 6(1)(f) DSGVO (legitimate interest). The stated rationale is “A/B Verteilung von Webseitenbesuchern zur Lastverteilung” (load balancing). However, the visitorCode=r5rxxh2up62t7vz7 parameter is retained for 380 days and transmitted to Kameleoon SAS’s servers in Germany. Load balancing does not require a long-lived visitor identifier.

Instana and Bannerflow: undeclared

Neither IBM Instana nor Bannerflow is mentioned in the privacy policy. Bannerflow is a Swedish banner-advertising management platform: 19 requests, including a tr/v2/pixel/ pixel, font loading, and obi-baumarkt campaign data.

Google Tag Manager: undeclared

GTM with identifier GTM-5SDGHH loads at +202 ms. The policy contains no mention of Google Tag Manager, Google, or a “Tag Manager” of any kind.

Baqend SpeedKit and ot.obi.de

Baqend SpeedKit is declared in the policy as technically necessary. It loads predictive-preload ML models (cl_desktop_xgb.json) and transmits RUM data via a series of rum/pi requests throughout the session. ot.obi.de is OBI’s proprietary endpoint for logging consent events (consent.viewed, onInitialPageLoad); it carries banner-state parameters (ess:true, mar:false, ana:false).

Conclusion

www.obi.de uses Usercentrics TCF as its CMP, yet four external services activate before the banner is displayed. Instana and Bannerflow are absent from the privacy policy. GTM loads without consent and is undeclared. Kameleoon is declared as technically necessary, but it assigns a long-lived visitor identifier.

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