Um Ereignisdaten an Adobe Experience Cloud zu senden, verwenden Sie die sendEvent
Befehl. Die sendEvent
-Befehl ist die primäre Methode zum Senden von Daten an die Experience Cloudund um personalisierte Inhalte, Identitäten und Zielgruppenziele abzurufen.
An Adobe Experience Cloud gesendete Daten gehören zwei Kategorien an:
XDM-Daten sind Objekte, deren Inhalt und Struktur mit einem Schema übereinstimmen, das Sie in Adobe Experience Platform erstellt haben. Erfahren Sie mehr darüber, wie Sie ein Schema erstellen.
Alle XDM-Daten, die Sie als Teil Ihrer Analyse, Personalisierung, Zielgruppen oder Ziele verwenden möchten, sollten mit der xdm
-Option.
alloy("sendEvent", {
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
Es kann einige Zeit vergehen, zwischen denen sendEvent
ausgeführt wird und wenn die Daten an den Server gesendet werden (z. B. wenn die Web SDK-Bibliothek nicht vollständig geladen wurde oder die Zustimmung noch nicht eingegangen ist). Wenn Sie einen Teil der xdm
-Objekt nach dem Ausführen der sendEvent
-Befehl verwenden, wird dringend empfohlen, die xdm
Objekt before Ausführung der sendEvent
Befehl. Beispiel:
var clone = function(value) {
return JSON.parse(JSON.stringify(value));
};
var dataLayer = {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
};
alloy("sendEvent", {
"xdm": clone(dataLayer)
});
// This change will not be reflected in the data sent to the
// server for the prior sendEvent command.
dataLayer.commerce = null;
In diesem Beispiel wird die Datenschicht geklont, indem sie in JSON serialisiert und dann deserialisiert wird. Als Nächstes wird das geklonte Ergebnis an die sendEvent
Befehl. Dadurch wird sichergestellt, dass die sendEvent
-Befehl hat einen Schnappschuss der Datenschicht, wie er beim sendEvent
wurde ausgeführt, sodass spätere Änderungen am ursprünglichen Datenschichtobjekt nicht in den an den Server gesendeten Daten übernommen werden. Wenn Sie eine ereignisbasierte Datenschicht verwenden, wird das Klonen Ihrer Daten wahrscheinlich bereits automatisch durchgeführt. Wenn Sie beispielsweise die Adobe Client-Datenschicht, die getState()
-Methode liefert eine berechnete, geklonte Momentaufnahme aller vorherigen Änderungen. Dies wird auch automatisch für Sie verarbeitet, wenn Sie die Adobe Experience Platform Web SDK-Tag-Erweiterung verwenden.
Die Daten, die in jedem Ereignis im XDM-Feld gesendet werden können, sind auf 32 KB begrenzt.
Daten, die nicht mit einem XDM-Schema übereinstimmen, sollten mit der data
der sendEvent
Befehl. Diese Funktion wird in den Versionen 2.5.0 und höher des Web SDK unterstützt. Bei Verwendung dieser Option müssen die Daten serverseitig einem unterstützten XDM-Schema zugeordnet werden über Datenvorbereitung für die Datenerfassung.
Diese Funktion ist auch nützlich, wenn Sie ein Adobe Target-Profil aktualisieren oder Target Recommendations-Attribute senden müssen. Mehr dazu Target-Personalisierung.
So senden Sie Profil- und Recommendations-Attribute an Adobe Target:
alloy("sendEvent", {
data: {
__adobe: {
target: {
"profile.gender": "female",
"profile.age": 30,
"entity.id": "123",
"entity.genre": "Drama"
}
}
}
});
eventType
In XDM ExperienceEvent-Schemata gibt es eine optionale eventType
-Feld. Dies enthält den primären Ereignistyp für den Datensatz. Die Festlegung eines Ereignistyps kann Ihnen dabei helfen, zwischen den verschiedenen Ereignissen zu unterscheiden, die Sie senden. XDM bietet verschiedene vordefinierte Ereignistypen, die Sie verwenden können oder Sie immer eigene benutzerdefinierte Ereignistypen für Ihre Anwendungsfälle erstellen. Eine finden Sie in der XDM-Dokumentation . Liste aller vordefinierten Ereignistypen.
Diese Ereignistypen werden in einer Dropdown-Liste angezeigt, wenn Sie die Tag-Erweiterung verwenden oder sie immer ohne Tags übergeben können. Sie können als Teil der xdm
-Option.
alloy("sendEvent", {
"xdm": {
"eventType": "commerce.purchases",
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
Alternativ hierzu kann eventType
über die type
-Option an den Ereignisbefehl übergeben werden. Hinter den Kulissen wird dies den XDM-Daten hinzugefügt. Mit type
als Option können Sie eventType
einfacher einstellen, ohne die XDM-Payload zu ändern.
var myXDMData = { ... };
alloy("sendEvent", {
"xdm": myXDMData,
"type": "commerce.purchases"
});
Die datasetId
-Option unterstützt von sendEvent
nicht mehr unterstützt. Verwenden Sie zum Überschreiben einer Datensatz-ID Konfigurationsüberschreibungen anstatt.
In einigen Anwendungsfällen möchten Sie möglicherweise ein Ereignis an einen anderen Datensatz als den in der Konfigurationsoberfläche konfigurierten senden. Dazu müssen Sie die datasetId
-Option auf sendEvent
command:
var myXDMData = { ... };
alloy("sendEvent", {
"xdm": myXDMData,
"type": "commerce.checkout",
"datasetId": "YOUR_DATASET_ID"
});
Benutzerdefinierte Identitätsinformationen können auch zum Ereignis hinzugefügt werden. Siehe Abrufen der Experience Cloud-ID.
Es kann schwierig sein, Ereignisdaten zu senden, kurz bevor der Nutzer die Web-Seite verlassen hat. Wenn die Anforderung zu lange dauert, kann der Browser die Anforderung abbrechen. Einige Browser haben eine Web-Standard-API namens sendBeacon
implementiert, mit der Daten in dieser Zeit leichter erfasst werden können. Bei der Verwendung von sendBeacon
stellt der Browser die Web-Anforderung im globalen Browser-Kontext dar. Das bedeutet, dass der Browser die Beacon-Anforderung im Hintergrund vornimmt und die Seitennavigation nicht beeinträchtigt. Informationen zu Adobe Experience Platform Web SDK zur Verwendung sendBeacon
, die Option "documentUnloading": true
zum Ereignisbefehl.
Beispiel
alloy("sendEvent", {
"documentUnloading": true,
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
Browser haben Beschränkungen für die Datenmenge, die mit sendBeacon
gleichzeitig gesendet werden kann. In vielen Browsern beträgt die Beschränkung 64 KB. Wenn der Browser das Ereignis ablehnt, weil die Payload zu groß ist, wird Adobe Experience Platform Web SDK zurück zu seiner normalen Transportmethode (z. B. Abruf).
Wenn Sie eine Antwort eines Ereignisses bearbeiten möchten, können Sie wie folgt über einen Erfolg oder Fehler benachrichtigt werden:
alloy("sendEvent", {
"renderDecisions": true,
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
}).then(function(result) {
// Tracking the event succeeded.
})
.catch(function(error) {
// Tracking the event failed.
});
result
ObjektDie sendEvent
gibt einen Promise zurück, der mit einer result
-Objekt. Die result
-Objekt enthält die folgenden Eigenschaften:
Eigenschaft | Beschreibung |
---|---|
propositions |
Die Personalisierung bietet an, für die sich der Besucher qualifiziert hat. Erfahren Sie mehr über Vorschläge. |
decisions |
Diese Eigenschaft wird nicht mehr unterstützt. Verwenden Sie stattdessen propositions . |
destinations |
Zielgruppen aus Adobe Experience Platform, die für externe Personalisierungsplattformen, Content-Management-Systeme, Anzeigen-Server und andere Anwendungen freigegeben werden können, die auf Kunden-Websites ausgeführt werden. Erfahren Sie mehr über Ziele. |
Die destinations
-Eigenschaft in der Beta-Phase. Dokumentation und Funktionalitäten können sich ändern.
Wenn Sie Felder global aus dem Ereignis hinzufügen, entfernen oder ändern möchten, können Sie eine onBeforeEventSend
Callback. Dieser Rückruf wird jedes Mal aufgerufen, wenn ein Ereignis gesendet wird. Dieser Rückruf wird an ein Ereignisobjekt mit einer xdm
-Feld. Um die mit dem Ereignis gesendeten Daten zu ändern, ändern Sie content.xdm
.
alloy("configure", {
"edgeConfigId": "ebebf826-a01f-4458-8cec-ef61de241c93",
"orgId": "ADB3LETTERSANDNUMBERS@AdobeOrg",
"onBeforeEventSend": function(content) {
// Change existing values
content.xdm.web.webPageDetails.URL = xdm.web.webPageDetails.URL.toLowerCase();
// Remove existing values
delete content.xdm.web.webReferrer.URL;
// Or add new values
content.xdm._adb3lettersandnumbers.mycustomkey = "value";
}
});
Die xdm
-Felder werden in der folgenden Reihenfolge festgelegt:
alloy("sendEvent", { xdm: ... });
.onBeforeEventSend
-Rückruf vorgenommen wurden.Einige Hinweise zu onBeforeEventSend
callback:
Ereignis-XDM kann während des Rückrufs geändert werden. Nachdem der Rückruf zurückgegeben wurde, werden alle geänderten Felder und Werte der Objekte content.xdm und content.data mit dem Ereignis gesendet.
onBeforeEventSend: function(content){
//sets a query parameter in XDM
const queryString = window.location.search;
const urlParams = new URLSearchParams(queryString);
content.xdm.marketing.trackingCode = urlParams.get('cid')
}
Wenn der Rückruf eine Ausnahme auslöst, wird die Verarbeitung für das Ereignis beendet und das Ereignis wird nicht gesendet.
Wenn der Rückruf den booleschen Wert von false
, wird die Ereignisverarbeitung ohne Fehler beendet und das Ereignis wird nicht gesendet. Dieser Mechanismus ermöglicht es, bestimmte Ereignisse einfach zu ignorieren, indem die Ereignisdaten geprüft und false
, wenn das Ereignis nicht gesendet werden soll.
Es sollte darauf geachtet werden, dass beim ersten Ereignis auf einer Seite nicht "false"zurückgegeben wird. Die Rückgabe von "false"beim ersten Ereignis kann sich negativ auf die Personalisierung auswirken.
onBeforeEventSend: function(content) {
// ignores events from bots
if (MyBotDetector.isABot()) {
return false;
}
}
Beliebiger Rückgabewert außer dem booleschen Wert false
ermöglicht die Verarbeitung und den Versand des Ereignisses nach dem Rückruf.
onBeforeEventSend: function(content) {
// augments XDM if link click event is to a partner website
if (
content.xdm.eventType === "web.webinteraction.linkClicks" &&
content.xdm.web.webInteraction.URL ===
"http://example.com/partner-page.html"
) {
content.xdm.partnerWebsiteClick = true;
}
}
Beim Senden eines Ereignisses wird möglicherweise ein Fehler ausgegeben, wenn die gesendeten Daten zu groß sind (mehr als 32 KB für eine vollständige Anforderung). In diesem Fall müssen Sie die Menge der gesendeten Daten reduzieren.