Consent banners (CMP setup)
X3 is not on the IAB TCF vendor list. In every banner you therefore add it as a custom (non-IAB) service or vendor and report the visitor's decision to X3 with one line of code. Recordings are never derived from a general category on their own – they need their own purpose „Sitzungsaufzeichnung“ (Cookiebot, which only knows categories, is the one exception and needs the logged confirmation described below).
Purposes
The texts for the purposes come from your capture scope – copy them from Einstellungen › Datenschutz & Erfassung › Texte für Banner und Datenschutzerklärung or the last step of the recordings wizard:
| Purpose in the banner | X3 purpose | Covers |
|---|---|---|
| Statistik (cookielos) or Statistik | analytics | clicks, scrolling, section visibility, location, form interactions |
| Sitzungsaufzeichnung | recordings | recordings of single visits |
| Live-Ansicht & Mausbewegung | recordings | mouse movement, single visitors in the live view |
Reporting the decision
x3("consent", "granted"); // both purposes granted
x3("consent", "denied"); // both denied – capturing stops at once
x3("consent", { analytics: true, recordings: false });With the npm package the same calls are x3.consent(…). Report rejections too – a missing call
leaves the purpose „pending“, which counts as not granted for every level „Nur mit Zustimmung“ and
as allowed for „Solange nicht abgelehnt“. Report on every page load (most banners fire their event
again); the SDK keeps an explicit choice for the rest of the visit either way. Global Privacy
Control and the opt-out link ?x3_notrack=1 act as a rejection without any banner code.
After saving, use Erneut prüfen in the wizard: X3 loads your page in a headless browser
(POST …/behavior/cmp-check), detects the banner and looks for the purpose. The result and the
time stay visible in the wizard.
Per banner
In the steps below, „here“ means the first step of the recordings wizard (Banner prüfen), and „the banner text from step 5“ the generated purpose text from its last step.
Usercentrics
- Admin › Services › “Add custom service”: service “X3 session recording”, category “Statistics” or your own.
- Description: paste the banner text from step 5, add the storage period.
- Publish, then “Check again” here.
window.addEventListener("UC_UI_CMP_EVENT", () => {
const s = (window.UC_UI?.getServicesBaseInfo?.() ?? []).find((x) => x.name === "X3 Sitzungsaufzeichnung");
x3("consent", { recordings: !!s?.consent?.status });
});Cookiebot
- Cookiebot only knows categories. Extend the text of the “Statistics” category with session recording (text from step 5).
- Then confirm here that the category text names session recording. We store the confirmation with the text we read; if the text changes, we ask again.
window.addEventListener("CookiebotOnConsentReady", () => {
x3("consent", { recordings: !!window.Cookiebot?.consent?.statistics });
});Borlabs Cookie
- Borlabs Cookie › Services › “Add new”: service “X3 session recording” in the group “Statistics”, ID “x3-recordings”.
- Paste the snippet under “Opt-in code”.
x3("consent", { recordings: window.BorlabsCookie?.Consents?.hasConsent?.("x3-recordings") === true });Complianz
- Complianz › Integrations › Services: add service “X3 session recording” as a custom service, category “Statistics”.
- Add the snippet in the “Script center” as a statistics script.
document.addEventListener("cmplz_status_change", () => {
x3("consent", { recordings: !!window.cmplz_has_consent?.("statistics") });
});consentmanager
- Menu › Vendors › “Add custom vendor” (not an IAB vendor): service “X3 session recording”, purpose “session recording”.
- Put the vendor ID into the snippet.
window.__cmp?.("addEventListener", ["consent", () => {
x3("consent", { recordings: window.__cmp("getCMPData").vendorConsents?.["<ID>"] === true });
}, false]);CCM19
- CCM19 › Embeddings › “New embedding”: service “X3 session recording”, purpose “Statistics”.
- Store the snippet as the embedding's code (runs only after consent).
x3("consent", { recordings: true });OneTrust
- Cookie categories › “New category” “Session recording” (ID e.g. C0099), assign X3 as a custom (non-IAB) vendor.
- Republish and put the category ID into the snippet.
window.addEventListener("OneTrustGroupsUpdated", () => {
x3("consent", { recordings: (window.OnetrustActiveGroups ?? "").includes(",C0099,") });
});Real Cookie Banner
- Real Cookie Banner › Services › “Add service”: service “X3 session recording”, group “Statistics”.
- Add the snippet as “code on opt-in”.
x3("consent", { recordings: true });Didomi
- Consent notices › Purposes › custom purpose “Session recording” (ID e.g. session_recording) and X3 as a custom vendor.
- Publish and add the snippet.
window.didomiEventListeners = window.didomiEventListeners || [];
window.didomiEventListeners.push({ event: "consent.changed", listener: () => {
x3("consent", { recordings: window.Didomi.getUserStatusForPurpose("session_recording") === true });
} });Your own banner
- Add a separate switch “Session recording” to your banner (off until the visitor switches it on).
- Report the decision to X3 with the snippet – rejecting as well.
x3("consent", { recordings: zustimmung }); // true = zugestimmt, false = abgelehntTroubleshooting
- „Sitzungsaufzeichnung fehlt“ after publishing: banners cache their configuration – publish again, wait a few minutes and check again. If the banner blocks headless browsers, confirm manually in the wizard; the confirmation is stored with your name and time.
- Recordings stay at zero although visitors agree: the alert
recordings_no_consentsopens after enough visits without a single consent. Check that the snippet runs after the banner's own script and that the service name matches exactly. - Consent mode without a banner: in „Solange nicht abgelehnt“ and „Immer cookielos“ the base
signals run without any banner call; recordings at „Nur mit Zustimmung“ never start without
recordingsgranted.