Experiment units and privacy

Reading or writing an assignment on the device (cookie, localStorage) is device access under § 25 TDDDG, and the German data protection authorities grant no exemption for testing. X3 therefore assigns without any device storage by default.

Units

UnitIdStable forDevice access
pageloadrandom id of the page load (memory)one page loadnone
daythe daily visitor hash X3 already uses for cookieless sessions (salt rotates at midnight)same network and browser, one project daynone
visitorthe consented visitor id x3_vidone browser, ≤ 13 monthsonly with consent

A visitor is never placed in a weaker unit than the experiment needs: a visitor-sticky experiment does not enrol visitors without consent ("unit unavailable"). The analysis unit is always the assignment unit.

ModeBefore consentAfter consent
cookielessday or page loadvisitor (with visitor ids on), else day
strictday or page load; exposure only from code (no visibility reads)as cookieless
requirenot enrolled: control, no assignment requestenrolled from the consent on

Visitors who opt out (optOut(), GPC/DNT when respected) are never enrolled.

Honest statements (shown with every result)

  • Visit-days are not people. Someone returning on another day may see both arms – this dilutes the effect toward zero (conservative) and cannot be detected; results say "Besuchstage".
  • A visit across midnight becomes two units; multi-day conversions need visitor units.
  • require mode analyses consenters only.

Recordings and heatmaps per arm

Behaviour views per arm (page map, heatmap, mass replay, recordings) use exactly the data your capture settings allow – an experiment never widens them. Each arm shows its basis ("solange nicht abgelehnt" or "nur mit Zustimmung"), arms below the project's minimum number of visitors show "zu wenig Besucher", and with heatmaps or recordings switched off the experiment page says so instead of linking to an empty view. Single recordings stay subject to the recordings permission and consent rules.

Public by design

Flag keys, arm keys, arm params and the client-evaluable targeting ship in the public client config – anyone can read which tests run. Use neutral keys (pricing-test-2) and never put unpublished prices or offers into params; X3 warns about prices, percentages and words like "intern". Never in the public config: names, hypotheses, notes, metrics, results, creators.

Never done

No fingerprinting beyond the daily hash, no IP storage, no device storage without consent, no experiment data sent to ad platforms, QA and test traffic never enter results.