El SDK web de Adobe Experience Platform le permite recopilar Adobe Analytics for Target (A4T) datos en el lado del cliente de la aplicación web.
El registro en el lado del cliente significa que Target Los datos se devuelven en el lado del cliente, lo que le permite recopilarlos y compartirlos con Analytics. Esta opción debe habilitarse si desea enviar manualmente datos a Analytics mediante API de inserción de datos.
Un método para realizar esto usando AppMeasurement.js está actualmente en desarrollo y estará disponible en un futuro próximo.
Este documento describe los pasos para configurar el registro de A4T en el lado del cliente para el SDK web y proporciona algunos ejemplos de implementación para casos de uso comunes.
En este tutorial se da por hecho que está familiarizado con los conceptos y procesos fundamentales relacionados con el uso del SDK web para fines de personalización. Consulte la siguiente documentación si necesita una introducción:
Las siguientes subsecciones describen cómo habilitar el registro en el lado del cliente de Analytics para la implementación del SDK web.
Para tener en cuenta el registro del lado del cliente de Analytics habilitado para la implementación, debe deshabilitar la configuración de Adobe Analytics en su secuencia de datos.
Para que este método de creación de informes funcione correctamente, debe enviar el A4T datos relacionados recuperados del sendEvent
en la visita de Analytics.
Cuando Target Edge calcula una respuesta de propuestas, comprueba si el registro del lado del cliente de Analytics está habilitado (es decir, si Analytics está deshabilitado en la secuencia de datos). Si el registro en el lado del cliente está habilitado, el sistema agrega un token de Analytics a cada propuesta en la respuesta.
El flujo tiene un aspecto similar al siguiente:
El siguiente es un ejemplo de un interact
Respuesta cuando el registro del lado del cliente de Analytics está habilitado. Si la propuesta es para una actividad que tiene informes de Analytics, tendrá un scopeDetails.characteristics.analyticsToken
propiedad.
{
"requestId": "1234",
"handle": [
{
"payload": [
{
"id": "AT:eyJhY3Rpdml0eUlkIjoiNDM0Njg5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
"scope": "a4t-test",
"scopeDetails": {
"decisionProvider": "TGT",
"activity": {
"id": "434689"
},
"experience": {
"id": "0"
},
"strategies": [
{
"algorithmID": "0",
"trafficType": "0"
}
],
"characteristics": {
"eventToken": "2lTS5KA6gj4JuSjOdhqUhGqipfsIHvVzTQxHolz2IpTMromRrB5ztP5VMxjHbs7c6qPG9UF4rvQTJZniWgqbOw==",
"analyticsToken": "434689:0:0|2,434689:0:0|1"
}
},
"items": [
{
"id": "1184844",
"schema": "https://ns.adobe.com/personalization/html-content-item",
"meta": {
"geo.state": "bucuresti",
"activity.id": "434689",
"experience.id": "0",
"activity.name": "a4t test form based activity",
"offer.id": "1184844",
"profile.tntId": "04608610399599289452943468926942466370-pybgfJ"
},
"data": {
"id": "1184844",
"format": "text/html",
"content": "<div> analytics impressions </div>"
}
}
]
},
{
"id": "AT:eyJhY3Rpdml0eUlkIjoiNDM0Njg5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
"scope": "a4t-test",
"scopeDetails": {
"decisionProvider": "TGT",
"activity": {
"id": "434689"
},
"characteristics": {
"eventToken": "E0gb6q1+WyFW3FMbbQJmrg==",
"analyticsToken": "434689:0:0|32767"
}
},
"items": [
{
"id": "434689",
"schema": "https://ns.adobe.com/personalization/measurement",
"data": {
"type": "click",
"format": "application/vnd.adobe.target.metric"
}
}
]
}
],
"type": "personalization:decisions",
"eventIndex": 0
}
]
}
Las propuestas para actividades del Compositor de experiencias basadas en formularios pueden contener contenido y elementos de métricas de clic en la misma propuesta. Por lo tanto, en lugar de tener un solo token de análisis para la visualización de contenido en scopeDetails.characteristics.analyticsToken
, pueden tener un token de análisis de clics y una visualización especificados en scopeDetails.characteristics.analyticsDisplayToken
y scopeDetails.characteristics.analyticsClickToken
propiedades, en consecuencia.
{
"requestId": "1234",
"handle": [
{
"payload": [
{
"id": "AT:eyJhY3Rpdml0eUlkIjoiNDM0Njg5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
"scope": "a4t-test",
"scopeDetails": {
"decisionProvider": "TGT",
"activity": {
"id": "434689"
},
"experience": {
"id": "0"
},
"strategies": [
{
"algorithmID": "0",
"trafficType": "0"
}
],
"characteristics": {
"displayToken": "2lTS5KA6gj4JuSjOdhqUhGqipfsIHvVzTQxHolz2IpTMromRrB5ztP5VMxjHbs7c6qPG9UF4rvQTJZniWgqbOw==",
"clickToken": "E0gb6q1+WyFW3FMbbQJmrg==",
"analyticsDisplayToken": "434689:0:0|2,434689:0:0|1",
"analyticsClickToken": "434689:0:0|32767"
}
},
"items": [
{
"id": "1184844",
"schema": "https://ns.adobe.com/personalization/html-content-item",
"meta": {
"geo.state": "bucuresti",
"activity.id": "434689",
"experience.id": "0",
"activity.name": "a4t test form based activity",
"offer.id": "1184844",
"profile.tntId": "04608610399599289452943468926942466370-pybgfJ"
},
"data": {
"id": "1184844",
"format": "text/html",
"content": "<div> analytics impressions </div>"
}
},
{
"id": "434689",
"schema": "https://ns.adobe.com/personalization/measurement",
"data": {
"type": "click",
"format": "application/vnd.adobe.target.metric"
}
}
]
}
],
"type": "personalization:decisions",
"eventIndex": 0
}
]
}
Todos los valores de scopeDetails.characteristics.analyticsToken
, así como scopeDetails.characteristics.analyticsDisplayToken
(para el contenido mostrado) y scopeDetails.characteristics.analyticsClickToken
(para métricas de clics) son las cargas útiles de A4T que deben recopilarse e incluirse como tnta
etiqueta en el API de inserción de datos llamada.
El analyticsToken
, analyticsDisplayToken
, analyticsClickToken
Las propiedades de pueden contener varios tokens, concatenados como una sola cadena delimitada por comas.
En los ejemplos de implementación que se proporcionan en la siguiente sección, se recopilan varios tokens de Analytics de forma iterativa. Para concatenar una matriz de tokens de Analytics, utilice una función similar a esta:
var concatenateAnalyticsPayloads = function concatenateAnalyticsPayloads(analyticsPayloads) {
if (analyticsPayloads.size > 1) {
return [].concat(analyticsPayloads).join(',');
}
return [].concat(analyticsPayloads).join();
};
Las siguientes subsecciones muestran cómo implementar el registro del lado del cliente de Analytics para casos de uso comunes.
Puede utilizar el SDK web para controlar la ejecución de propuestas desde Compositor de experiencias basadas en formularios de Adobe Target actividades.
Cuando se solicitan propuestas para un ámbito de decisión específico, la propuesta devuelta contiene el token de Analytics correspondiente. Una práctica recomendada es encadenar el SDK web de Platform sendEvent
y recorrer en iteración las propuestas devueltas para ejecutarlas mientras se recopilan los tokens de Analytics al mismo tiempo.
Puede almacenar en déclencheur una sendEvent
para un ámbito de actividad del Compositor de experiencias basadas en formularios como este:
alloy("sendEvent", {
"decisionScopes": ["a4t-test"],
"xdm": {
"web": {
"webPageDetails": {
"name": "Home Page"
}
}
}
}
).then(function(results) {
for (var i = 0; i < results.propositions.length; i++) {
//Execute the propositions and collect the Analytics payload
}
});
Desde aquí, debe implementar código para ejecutar las propuestas y construir una carga útil que finalmente se enviará a Analytics. Este es un ejemplo de lo que results.propositions
puede contener:
[
{
"id": "AT:eyJhY3Rpdml0eUlkIjoiNDM0Njg5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
"scope": "a4t-test",
"scopeDetails": {
"decisionProvider": "TGT",
"activity": {
"id": "434689"
},
"experience": {
"id": "0"
},
"strategies": [
{
"algorithmID": "0",
"trafficType": "0"
}
],
"characteristics": {
"eventToken": "2lTS5KA6gj4JuSjOdhqUhGqipfsIHvVzTQxHolz2IpTMromRrB5ztP5VMxjHbs7c6qPG9UF4rvQTJZniWgqbOw==",
"analyticsToken": "434689:0:0|2,434689:0:0|1"
}
},
"items": [
{
"id": "1184844",
"schema": "https://ns.adobe.com/personalization/html-content-item",
"meta": {
"geo.state": "bucuresti",
"activity.id": "434689",
"experience.id": "0",
"activity.name": "a4t test form based activity",
"offer.id": "1184844",
"profile.tntId": "04608610399599289452943468926942466370-pybgfJ"
},
"data": {
"id": "1184844",
"format": "text/html",
"content": "<div> analytics impressions </div>"
}
}
]
},
{
"id": "AT:eyJhY3Rpdml0eUlkIjoiNDM0Njg5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
"scope": "a4t-test",
"scopeDetails": {
"decisionProvider": "TGT",
"activity": {
"id": "434689"
},
"characteristics": {
"eventToken": "E0gb6q1+WyFW3FMbbQJmrg==",
"analyticsToken": "434689:0:0|32767"
}
},
"items": [
{
"id": "434689",
"schema": "https://ns.adobe.com/personalization/measurement",
"data": {
"type": "click",
"format": "application/vnd.adobe.target.metric"
}
}
]
},
{
"id": "AT:eyJhY3Rpdml0eUlkIjoiNDM0Njg5IiwiZXhwZXJpZW5jZUlkIjoiMCJ9",
"scope": "a4t-test",
"scopeDetails": {
"decisionProvider": "TGT",
"activity": {
"id": "434688"
},
"experience": {
"id": "0"
},
"strategies": [
{
"algorithmID": "0",
"trafficType": "0"
}
],
"characteristics": {
"displayToken": "91TS5KA6gj4JuSjOdhqUhGqipfsIHvVzTQxHolz2IpTMromRrB5ztP5VMxjHbs7c6qPG9UF4rvQTJZniWgqgEt==",
"clickToken": "Tagb6q1+WyFW3FMbbQJrtg==",
"analyticsDisplayTokens": "434688:0:0|2,434688:0:0|1",
"analyticsClickTokens": "434688:0:0|32767"
}
}
},
"items": [
{
"id": "1184845",
"schema": "https://ns.adobe.com/personalization/html-content-item",
"meta": {
"geo.state": "bucuresti",
"activity.id": "434688",
"experience.id": "0",
"activity.name": "a4t test form based activity 1",
"offer.id": "1184845"
},
"data": {
"id": "1184845",
"format": "text/html",
"content": "<div> analytics impressions 1</div>"
}
},
{
"id": "434688",
"schema": "https://ns.adobe.com/personalization/measurement",
"data": {
"type": "click",
"format": "application/vnd.adobe.target.metric"
}
}
]
}
]
Para extraer el token de Analytics de una propuesta con elementos de contenido, puede implementar una función similar a la siguiente:
function getDisplayAnalyticsPayload(proposition) {
if (!proposition || !proposition.scopeDetails || !proposition.scopeDetails.characteristics) {
return;
}
var characteristics = proposition.scopeDetails.characteristics;
if (characteristics.analyticsDisplayToken) {
return characteristics.analyticsDisplayToken;
}
return characteristics.analyticsToken;
}
Una propuesta puede tener diferentes tipos de elementos, como indica la variable schema
propiedad del elemento en cuestión. Hay cuatro esquemas de elementos de propuesta compatibles con las actividades del Compositor de experiencias basadas en formularios:
var HTML_SCHEMA = "https://ns.adobe.com/personalization/html-content-item";
var MEASUREMENT_SCHEMA = "https://ns.adobe.com/personalization/measurement";
var JSON_SCHEMA = "https://ns.adobe.com/personalization/json-content-item";
var REDIRECT_SCHEMA = "https://ns.adobe.com/personalization/redirect-item";
HTML_SCHEMA
y JSON_SCHEMA
son los esquemas que reflejan el tipo de oferta, mientras que MEASUREMENT_SCHEMA
refleja las métricas que deben adjuntarse a un elemento DOM.
Las cargas útiles de Analytics para métricas de clics deben recopilarse y enviarse a Analytics por separado de los elementos de contenido en el momento en que el visitante hace clic en el contenido mostrado anteriormente.
La siguiente función de ayuda para obtener la métrica de clics de cargas útiles de A4T será útil en este caso:
function getClickAnalyticsPayload(proposition) {
if (!proposition || !proposition.scopeDetails || !proposition.scopeDetails.characteristics) {
return;
}
var characteristics = proposition.scopeDetails.characteristics;
if (characteristics.analyticsClickToken) {
return characteristics.analyticsClickToken;
}
return characteristics.analyticsToken;
}
En resumen, los siguientes pasos deben ejecutarse al aplicar actividades del Compositor de experiencias basadas en formularios con el SDK web de Platform:
decisioning.propositionDisplay
evento de notificación;decisioning.propositionInteract
evento de notificación. El onBeforeEventSend
debe configurarse para que al interceptar decisioning.propositionInteract
eventos, se producen las siguientes acciones:
xdm._experience.decisioning.propositions
alloy("sendEvent", {
"decisionScopes": ["a4t-test"],
"xdm": {
"web": {
"webPageDetails": {
"name": "Home Page"
}
}
}
}
).then(function(results) {
var analyticsPayload = new Set();
results.propositions.forEach(function (proposition) {
proposition.items.forEach(function (item) {
if (item.schema === HTML_SCHEMA) {
// 1. Apply offer
// 2. Collect executed propositions and send the decisioning.propositionDisplay notification event
// 3. Collect the display Analytics tokens
}
if (item.schema === MEASUREMENT_SCHEMA) {
// Setup click listener, so that when clicked:
// 1. Collect clicked propositions and send the decisioning.propositionInteract notification event
// Note: onBeforeEventSend handler should be configured, so that when intercepting decisioning.propositionInteract events:
// 1. Collect the click Analytics tokens from xdm._experience.decisioning.propositions
// 2. Send the click Analytics hit with the collected Analytics payload via Data Insertion API
}
});
});
// Send the page view Analytics hit with the collected display Analytics payload via Data Insertion API
});
El SDK web permite gestionar ofertas creadas con Compositor de experiencias visuales (VEC).
Los pasos para implementar este caso de uso son muy similares a los pasos para Actividades del Compositor de experiencias basadas en formularios. Consulte la sección anterior para obtener más información.
Cuando se habilita el procesamiento automático, puede recopilar los tokens de Analytics de las propuestas que se ejecutaron en la página. Una práctica recomendada es encadenar el SDK web de Platform sendEvent
y recorrer en iteración las propuestas devueltas para filtrar las que el SDK web ha intentado procesar.
Ejemplo
alloy("sendEvent", {
"renderDecisions": true,
"xdm": {
"web": {
"webPageDetails": {
"name": "Home Page"
}
}
}
}
).then(function (results) {
var analyticsPayloads = new Set();
for (var i = 0; i < results.propositions.length; i++) {
var proposition = propositions[i];
var renderAttempted = proposition.renderAttempted;
if (renderAttempted === true) {
var analyticsPayload = getDisplayAnalyticsPayload(proposition);
if (analyticsPayload !== undefined) {
analyticsPayloads.add(analyticsPayload);
}
}
}
var analyticsPayloadsToken = concatenateAnalyticsPayloads(analyticsPayloads);
// Send the page view Analytics hit with collected Analytics payload via Data Insertion API
});
onBeforeEventSend
para gestionar métricas de páginaCon las actividades de Adobe Target, puede configurar diferentes métricas en la página, ya sea manualmente adjuntas al DOM o automáticamente adjuntas al DOM (actividades creadas por VEC). Ambos tipos son una interacción retrasada del usuario final en la página web.
Para tener en cuenta esto, la práctica recomendada es recopilar cargas útiles de Analytics mediante onBeforeEventSend
Vínculo del SDK web de Adobe Experience Platform. El onBeforeEventSend
El vínculo debe configurarse con la variable configure
y se reflejarán en todos los eventos enviados a través del conjunto de datos.
A continuación se muestra un ejemplo de cómo onBeforeEventSent
se puede configurar para almacenar en déclencheur las visitas de Analytics:
alloy("configure", {
edgeConfigId: "datastream configuration ID",
orgId: "adobe ORG ID",
onBeforeEventSend: function(options) {
const xdm = options.xdm;
const eventType = xdm.eventType;
if (eventType === "decisioning.propositionInteract") {
const analyticsPayloads = new Set();
const propositions = xdm._experience.decisioning.propositions;
for (var i = 0; i < propositions.length; i++) {
var proposition = propositions[i];
analyticsPayloads.add(getClickAnalyticsPayload(proposition));
}
// Trigger the Analytics hit
}
}
});
En esta guía se describe el registro en el lado del cliente de datos de A4T en el SDK web. Consulte la guía de registro en el lado del servidor para obtener más información sobre cómo gestionar datos de A4T en la red perimetral.