Signatur
Beschreibung
Mit setAttributionReporting() legen Sie fest, dass die Antwort einer XMLHttpRequest-Anfrage eine Attributionsquelle (z. B. eine Anzeigeneinblendung oder einen Klick) oder einen Attributionstrigger (z. B. einen Kauf oder eine Anmeldung) registrieren darf. Die Methode gehört zur Attribution Reporting API aus der Privacy Sandbox. Diese API soll Conversions messen, ohne dass dafür Drittanbieter-Cookies nötig sind.
Nach dem Aufruf sendet der Browser den Anfrage-Header Attribution-Reporting-Eligible mit. Daran erkennt der Server, welche Art von Registrierung erlaubt ist. Die eigentliche Registrierung passiert erst, wenn der Server mit dem Header Attribution-Reporting-Register-Source oder Attribution-Reporting-Register-Trigger antwortet. Der Browser verarbeitet diese Header selbst. Für Ihren JavaScript-Code sind sie nicht sichtbar.
Sie müssen die Methode nach open() und vor send() aufrufen. Für neuen Code ist die Fetch-Variante meist die bessere Wahl: fetch(url, { attributionReporting: {...} }).
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $options Pflicht | Object | Objekt, das festlegt, welche Art von Registrierung die Antwort vornehmen darf. | |
| $options.eventSourceEligible Pflicht | boolean | Bei true darf die Antwort eine Event-Quelle registrieren. Das ist eine Quelle, die an ein Ereignis wie einen Klick oder eine Einblendung gebunden ist. |
|
| $options.triggerEligible Pflicht | boolean | Bei true darf die Antwort einen Attributionstrigger registrieren, also eine Conversion. |
Rückgabewert
undefined zurück.Beispiele
Attributionsquelle beim Anzeigenklick registrieren
const registerAdClick = (adId) => {
const xhr = new XMLHttpRequest();
xhr.open('GET', `https://ads.example/register-source?ad=${encodeURIComponent(adId)}`);
// Die Antwort darf eine Event-Quelle registrieren
xhr.setAttributionReporting({
eventSourceEligible: true,
triggerEligible: false
});
xhr.addEventListener('load', () => console.log('Quelle angefragt, Status:', xhr.status));
xhr.send();
};
document.querySelector('#ad-banner')
?.addEventListener('click', () => registerAdClick('summer-sale-42'));
Conversion (Trigger) nach dem Kauf melden
const reportPurchase = (orderValue) => {
const xhr = new XMLHttpRequest();
xhr.open('POST', 'https://ads.example/register-trigger');
xhr.setRequestHeader('Content-Type', 'application/json');
// Die Antwort darf einen Trigger registrieren
xhr.setAttributionReporting({
eventSourceEligible: false,
triggerEligible: true
});
xhr.send(JSON.stringify({ value: orderValue }));
};
reportPurchase(49.99);
Funktionserkennung und korrekte Aufrufreihenfolge
const xhr = new XMLHttpRequest();
const supported = typeof xhr.setAttributionReporting === 'function';
xhr.open('GET', '/tracking/pixel');
if (supported) {
try {
xhr.setAttributionReporting({ eventSourceEligible: true, triggerEligible: false });
} catch (err) {
// z. B. TypeError, wenn die Permissions-Policy die Funktion verbietet
console.warn('Attribution Reporting nicht erlaubt:', err.name);
}
} else {
console.log('Attribution Reporting wird nicht unterstützt');
}
xhr.send();
// Wichtig · Fallstricke
- Experimentell und abgekündigt: Die Methode gibt es nur in Chromium-Browsern (Chrome, Edge). Firefox und Safari unterstützen sie nicht. Google hat angekündigt, die Privacy-Sandbox-Technologien und damit auch die Attribution Reporting API auslaufen zu lassen. Verwenden Sie die Methode nicht in Produktivcode, ohne vorher zu prüfen, ob sie vorhanden ist.
- Aufrufreihenfolge: Wenn Sie die Methode vor
open()oder nachsend()aufrufen, wirft sie einenInvalidStateError(DOMException). - Permissions-Policy: Wenn die Policy
attribution-reportingdas Dokument ausschließt, z. B. in einem iframe ohneallow="attribution-reporting", wirft die Methode einenTypeError. - Die Registrierung funktioniert nur in einem sicheren Kontext (HTTPS). Außerdem muss der Server die passenden
Attribution-Reporting-Register-*-Antwort-Header senden. Ohne diese Header bewirkt der Aufruf nichts. - Datenschutz: Die Berichte werden verzögert und mit Rauschen versehen verschickt. Rechnen Sie also nicht damit, dass sie sofort oder exakt ankommen. Nutzer und Browser-Einstellungen können die API außerdem jederzeit deaktivieren.