Para enviar dados do evento para o Adobe Experience Cloud, use a variável sendEvent
comando. O sendEvent
é a principal maneira de enviar dados para o Experience Cloude para recuperar conteúdo personalizado, identidades e destinos de público-alvo.
Os dados enviados para o Adobe Experience Cloud são divididos em duas categorias:
Os dados XDM são um objeto cujo conteúdo e estrutura correspondem a um esquema criado no Adobe Experience Platform. Saiba mais sobre como criar um schema.
Quaisquer dados XDM que você deseja que façam parte de sua análise, personalização, públicos-alvo ou destinos devem ser enviados usando a variável xdm
opção.
alloy("sendEvent", {
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
Algum tempo pode passar entre quando a função sendEvent
é executado e quando os dados são enviados para o servidor (por exemplo, se a biblioteca do SDK da Web não tiver sido totalmente carregada ou o consentimento ainda não tiver sido recebido). Se você pretende modificar qualquer parte da variável xdm
após executar o sendEvent
é altamente recomendável clonar o xdm
objeto before executar o sendEvent
comando. Por exemplo:
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;
Neste exemplo, a camada de dados é clonada serializando-a para JSON e depois desserializando-a. Em seguida, o resultado clonado é passado para o sendEvent
comando. Isso garante que a variável sendEvent
tem um instantâneo da camada de dados como existia quando a sendEvent
foi executado para que modificações posteriores no objeto da camada de dados original não sejam refletidas nos dados enviados para o servidor. Se você estiver usando uma camada de dados orientada por eventos, a clonagem de seus dados provavelmente já será manipulada automaticamente. Por exemplo, se você estiver usando a variável Camada de dados do cliente Adobe, o getState()
O método oferece um instantâneo computado e clonado de todas as alterações anteriores. Isso também é feito para você automaticamente se estiver usando a extensão de tag Adobe Experience Platform Web SDK.
Há um limite de 32 KB nos dados que podem ser enviados em cada evento no campo XDM.
Os dados que não correspondem a um esquema XDM devem ser enviados usando o data
da sendEvent
comando. Esse recurso é compatível com versões 2.5.0 e posteriores do SDK da Web.
Isso é útil se você precisar atualizar um perfil do Adobe Target ou enviar atributos do Recommendations do Target. Leia mais sobre esses recursos do Target.
No futuro, você poderá enviar a camada de dados completa sob a data
e mapeie-a para o lado do servidor XDM.
Como enviar atributos do Perfil e do Recommendations para o Adobe Target:
alloy("sendEvent", {
data: {
__adobe: {
target: {
"profile.gender": "female",
"profile.age": 30,
"entity.id": "123",
"entity.genre": "Drama"
}
}
}
});
eventType
Nos esquemas XDM ExperienceEvent, há uma opção opcional eventType
campo. Isso mantém o tipo de evento principal para o registro. Definir um tipo de evento pode ajudar você a diferenciar os diferentes eventos que serão enviados. O XDM fornece vários tipos de evento predefinidos que podem ser usados ou você sempre cria seus próprios tipos de evento personalizados para seus casos de uso. Consulte a documentação do XDM para obter uma lista de todos os tipos de evento predefinidos.
Esses tipos de evento serão mostrados em uma lista suspensa se você estiver usando a extensão de tag ou sempre puder transmiti-los sem tags. Eles podem ser transmitidos como parte do xdm
opção.
alloy("sendEvent", {
"xdm": {
"eventType": "commerce.purchases",
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
Como alternativa, a variável eventType
pode ser transmitido para o comando event usando o type
opção. Em segundo plano, isso é adicionado aos dados XDM. Tendo em conta type
como uma opção, permite definir com mais facilidade a variável eventType
sem precisar modificar a carga do XDM.
var myXDMData = { ... };
alloy("sendEvent", {
"xdm": myXDMData,
"type": "commerce.purchases"
});
Em alguns casos de uso, você pode enviar um evento para um conjunto de dados diferente daquele configurado na interface do usuário de configuração. Para isso, é necessário definir a variável datasetId
na sendEvent
comando:
var myXDMData = { ... };
alloy("sendEvent", {
"xdm": myXDMData,
"type": "commerce.checkout",
"datasetId": "YOUR_DATASET_ID"
});
As informações de identidade personalizadas também podem ser adicionadas ao evento. Consulte Recuperar Experience Cloud ID.
Pode ser complicado enviar dados de evento antes que o usuário da página da Web tenha saído. Se a solicitação demorar muito, o navegador pode cancelar a solicitação. Alguns navegadores implementaram uma API padrão da Web chamada sendBeacon
para permitir que os dados sejam coletados com mais facilidade durante esse período. Ao usar sendBeacon
, o navegador faz a solicitação da Web no contexto de navegação global. Isso significa que o navegador faz a solicitação de beacon em segundo plano e não segura a navegação da página. Para dizer à Adobe Experience Platform Web SDK para usar sendBeacon
, adicione a opção "documentUnloading": true
para o comando event. Exemplo:
alloy("sendEvent", {
"documentUnloading": true,
"xdm": {
"commerce": {
"order": {
"purchaseID": "a8g784hjq1mnp3",
"purchaseOrderNumber": "VAU3123",
"currencyCode": "USD",
"priceTotal": 999.98
}
}
}
});
Os navegadores impuseram limites para a quantidade de dados que pode ser enviada com sendBeacon
de uma vez. Em muitos navegadores, o limite é de 64 K. Se o navegador rejeitar o evento porque a carga é muito grande, o Adobe Experience Platform Web SDK volta ao uso de seu método de transporte normal (por exemplo, busca).
Se quiser lidar com uma resposta de um evento, você poderá ser notificado de um sucesso ou falha da seguinte maneira:
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
objetoO sendEvent
retorna uma promessa resolvida com um result
objeto. O result
O objeto contém as seguintes propriedades:
propositions: A Personalização oferece as ofertas para as quais o visitante se qualificou. Saiba mais sobre propostas.
decisões: Essa propriedade está obsoleta. Em vez disso, use propositions
.
destinos: Segmentos do Adobe Experience Platform que podem ser compartilhados com plataformas de personalização externas, sistemas de gerenciamento de conteúdo, servidores de anúncios e outros aplicativos que estão sendo executados em sites do cliente. Saiba mais sobre destinos.
destinations
está atualmente em Beta. A documentação e a funcionalidade estão sujeitas a alterações.
Se quiser adicionar, remover ou modificar campos do evento globalmente, você pode configurar um onBeforeEventSend
retorno de chamada. Esse retorno de chamada é chamado sempre que um evento é enviado. Esse retorno de chamada é passado em um objeto de evento com um xdm
campo. Modificar content.xdm
para alterar os dados enviados com o 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
são definidos nesta ordem:
alloy("sendEvent", { xdm: ... });
onBeforeEventSend
retorno de chamada.Algumas observações sobre o onBeforeEventSend
retorno de chamada:
O XDM do evento pode ser modificado durante o retorno de chamada. Depois que a chamada de retorno for retornada, todos os campos e valores modificados dos objetos content.xdm e content.data serão enviados com o 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')
}
Se o retorno de chamada gerar uma exceção, o processamento do evento será interrompido e o evento não será enviado.
Se o retorno de chamada retornar o valor booleano de false
, o processamento de eventos é interrompido, sem um erro, e o evento não é enviado. Esse mecanismo permite que determinados eventos sejam facilmente ignorados ao examinar os dados do evento e retornar false
se o evento não deve ser enviado.
Deve-se tomar cuidado para evitar retornar "false" no primeiro evento em uma página. Retornar false no primeiro evento pode afetar negativamente a personalização.
onBeforeEventSend: function(content) {
// ignores events from bots
if (MyBotDetector.isABot()) {
return false;
}
}
Qualquer valor de retorno diferente de booleano false
permitirá que o evento processe e envie após o retorno de chamada.
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;
}
}
Ao enviar um evento, um erro pode ser lançado se os dados que estão sendo enviados forem muito grandes (mais de 32 KB para a solicitação completa). Nesse caso, é necessário reduzir a quantidade de dados que estão sendo enviados.