Para enviar datos de evento a Adobe Experience Cloud, use el sendEvent
comando. La variable sendEvent
es la forma principal de enviar datos a la variable Experience Cloudy para recuperar contenido personalizado, identidades y destinos de audiencia.
Los datos enviados a Adobe Experience Cloud se dividen en dos categorías:
Los datos XDM son un objeto cuyo contenido y estructura coinciden con un esquema creado en Adobe Experience Platform. Obtenga más información sobre cómo crear un esquema.
Los datos XDM que desee que formen parte de sus análisis, personalización, audiencias o destinos se deben enviar mediante la variable xdm
.
alloy("sendEvent", {
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
Puede que transcurra un tiempo entre el momento en que se define la variable sendEvent
se ejecuta y cuando los datos se envían al servidor (por ejemplo, si la biblioteca del SDK web no se ha cargado completamente o aún no se ha recibido el consentimiento). Si tiene intención de modificar cualquier parte de la variable xdm
después de ejecutar el sendEvent
es muy recomendable que clone el xdm
object before ejecución del sendEvent
comando. Por ejemplo:
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;
En este ejemplo, la capa de datos se clona serializándola en JSON y luego deserializándola. A continuación, el resultado clonado se pasa al sendEvent
comando. Al hacerlo, se garantiza que la variable sendEvent
tiene una instantánea de la capa de datos tal como existía cuando se utilizaba la variable sendEvent
se ejecutó para que las modificaciones posteriores en el objeto de capa de datos original no se reflejen en los datos enviados al servidor. Si utiliza una capa de datos impulsada por eventos, es probable que la clonación de los datos ya se haya gestionado automáticamente. Por ejemplo, si está utilizando la variable Capa de datos del cliente de Adobe, el getState()
proporciona una instantánea calculada y clonada de todos los cambios anteriores. Esto también se gestiona automáticamente si utiliza la extensión de etiqueta del SDK web de Adobe Experience Platform.
Los datos que se pueden enviar en cada evento del campo XDM tienen un límite de 32 kB.
Los datos que no coinciden con un esquema XDM deben enviarse utilizando la variable data
de sendEvent
comando. Esta función es compatible con las versiones 2.5.0 y posteriores del SDK web.
Esto resulta útil si necesita actualizar un perfil de Adobe Target o enviar atributos de Recommendations de Target. Obtenga más información sobre estas funciones de Target.
En el futuro, podrá enviar la capa de datos completa debajo de la data
y asígnelo al servidor XDM.
Envío de atributos de perfil y Recommendations a Adobe Target:
alloy("sendEvent", {
data: {
__adobe: {
target: {
"profile.gender": "female",
"profile.age": 30,
"entity.id": "123",
"entity.genre": "Drama"
}
}
}
});
eventType
En los esquemas XDM ExperienceEvent, hay una eventType
campo . Contiene el tipo de evento principal del registro. La configuración de un tipo de evento puede ayudarle a diferenciar entre los diferentes eventos que va a enviar. XDM proporciona varios tipos de eventos predefinidos que puede usar o crear siempre sus propios tipos de eventos personalizados para sus casos de uso. Consulte la documentación de XDM para obtener una lista de todos los tipos de eventos predefinidos.
Estos tipos de eventos se mostrarán en un menú desplegable si utiliza la extensión de etiqueta o siempre puede pasarlos sin etiquetas. Se pueden pasar como parte del xdm
.
alloy("sendEvent", {
"xdm": {
"eventType": "commerce.purchases",
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
Alternativamente, la variable eventType
se puede pasar al comando event usando la variable type
. En segundo plano, esto se añade a los datos XDM. Tener type
como una opción le permite configurar la variable eventType
sin tener que modificar la carga útil XDM.
var myXDMData = { ... };
alloy("sendEvent", {
"xdm": myXDMData,
"type": "commerce.purchases"
});
En algunos casos de uso, es posible que desee enviar un evento a un conjunto de datos que no sea el configurado en la interfaz de usuario de configuración. Para ello, debe configurar la variable datasetId
en la sendEvent
comando:
var myXDMData = { ... };
alloy("sendEvent", {
"xdm": myXDMData,
"type": "commerce.checkout",
"datasetId": "YOUR_DATASET_ID"
});
La información de identidad personalizada también se puede agregar al evento. Consulte Recuperación del ID de Experience Cloud.
Puede ser complicado enviar datos de evento justo antes de que el usuario de la página web haya navegado fuera. Si la solicitud tarda demasiado, el explorador puede cancelar la solicitud. Algunos exploradores han implementado una API estándar web llamada sendBeacon
para permitir que los datos se recopilen más fácilmente durante este tiempo. Al usar sendBeacon
, el navegador realiza la solicitud web en el contexto de navegación global. Esto significa que el explorador realiza la solicitud de señalización en segundo plano y no mantiene presionada la navegación de la página. Para decirle a Adobe Experience Platform Web SDK para usar sendBeacon
, añada la opción "documentUnloading": true
al comando event. Vea el siguiente ejemplo:
alloy("sendEvent", {
"documentUnloading": true,
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
Los navegadores han impuesto límites a la cantidad de datos que se pueden enviar con sendBeacon
a la vez. En muchos navegadores, el límite es de 64 K. Si el explorador rechaza el evento porque la carga útil es demasiado grande, Adobe Experience Platform Web SDK vuelve a utilizar su método de transporte normal (por ejemplo, fetch).
Si desea gestionar una respuesta de un evento, se le puede notificar un éxito o error de la siguiente manera:
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
objectLa variable sendEvent
devuelve una promesa que se resuelve con un result
objeto. La variable result
contiene las siguientes propiedades:
propuestas: Ofertas de personalización para las que el visitante se ha clasificado. Obtenga más información sobre las propuestas.
decisiones: Esta propiedad está en desuso. Utilice propositions
en su lugar.
destinos: Segmentos de Adobe Experience Platform que se pueden compartir con plataformas de personalización externas, sistemas de administración de contenido, servidores de publicidad y otras aplicaciones que se ejecutan en sitios web de clientes. Obtenga más información sobre los destinos.
destinations
está actualmente en versión beta. La documentación y la funcionalidad están sujetas a cambios.
Si desea agregar, quitar o modificar campos del evento globalmente, puede configurar un onBeforeEventSend
llamada de retorno. Esta llamada de retorno se llama cada vez que se envía un evento. Esta llamada de retorno se pasa en un objeto de evento con un xdm
campo . Modificar content.xdm
para cambiar los datos que se envían con el evento.
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";
}
});
xdm
los campos se definen en este orden:
alloy("sendEvent", { xdm: ... });
onBeforeEventSend
llamada de retorno.Algunas notas sobre la onBeforeEventSend
llamada de retorno:
Event XDM se puede modificar durante la rellamada. Una vez devuelta la llamada de retorno, los campos y valores modificados de los objetos content.xdm y content.data se envían con el evento .
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')
}
Si la rellamada genera una excepción, el procesamiento del evento se interrumpe y no se envía el evento.
Si la llamada de retorno devuelve el valor booleano de false
, el procesamiento de eventos se interrumpe, sin error, y el evento no se envía. Este mecanismo permite ignorar ciertos eventos fácilmente examinando los datos del evento y devolviendo false
si no se debe enviar el evento.
Se debe tener cuidado de evitar devolver false en el primer evento de una página. Devolver el valor false en el primer evento puede afectar negativamente a la personalización.
onBeforeEventSend: function(content) {
// ignores events from bots
if (MyBotDetector.isABot()) {
return false;
}
}
Cualquier valor devuelto que no sea el booleano false
permitirá que el evento se procese y envíe después de la llamada de retorno.
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;
}
}
Al enviar un evento, se puede generar un error si los datos que se envían son demasiado grandes (más de 32 KB para la solicitud completa). En este caso, debe reducir la cantidad de datos que se envían.