Le opzioni di integrazione in questo articolo sono state create e convalidate in collaborazione con DMPG, uno dei partner Adobe specializzati in Adobe Analytics e Adobe Target.
La nostra integrazione analitica personalizzata ti consentirà di analizzare le campagne Dynamic Yield nella tua piattaforma di analisi. Questo articolo spiega in dettaglio come configurarle per Adobe Analytics.
Il caso d'uso più comune per l'integrazione con una piattaforma di analisi di terze parti è la raccolta di informazioni su quali visitatori di Dynamic Yield Experiences sono stati coinvolti (incluse campagne, varianti e consigli sui prodotti).
L'integrazione è composta da tre parti mobili:
- una campagna Dynamic Yield live con le Execute Custom Integrations (integrazioni personalizzate) attivate. Ciò permetterà alla campagna di introdurre i suoi metadati (ad esempio, campagna, esperienza e nomi delle varianti) ogni volta che viene proposta a un utente;
- una funzione di integrazione personalizzata, che funga da sistema di traduzione tra Dynamic Yield e lo stack di analisi, definendo il modo in cui i dati proposti verranno trasformati e archiviati. Useremo queste funzioni per creare un oggetto nel livello dati;
- una chiamata a Adobe Analytics. A seconda dell'implementazione, questa operazione può essere eseguita direttamente da Dynamic Yield o dal gestore di tag.
Impostazione dell'integrazione
La configurazione dell'integrazione prevede 3 passaggi:
- configurazione di Adobe Analytics per ricevere i dati da integrare, utilizzando una variabile elenco;
- impostazione di un oggetto nel livello dati globale con le funzioni di integrazione di Dynamic Yield Custom Analytics;
- compilazione della variabile dell'elenco Adobe con il contenuto del livello dati e chiamata ad Adobe. Si può eseguire questa operazione tramite Dynamic Yield o la tua soluzione di gestione dei tag.
Passaggio 1: configurazione di una variabile elenco in Adobe Analytics
Le variabili elenco di Adobe Analytics consentono di utilizzare una singola stringa delimitata da separatore per memorizzare più valori, che, quindi, si possono suddividere e analizzare in modo indipendente. Ogni valore rappresenta una diversa combinazione di campagna, esperienza e variante.
Per impostare una variabile elenco, passa alla relativa pagina di configurazione seguendo questa procedura dalla documentazione Adobe e configura una delle variabili come segue:
- Nome: Dynamic Yield
-
Scadenza: è l'equivalente della finestra di attribuzione su Dynamic Yield. Se il QI di attribuzione fa parte del pacchetto Adobe, è possibile modificare la scadenza su richiesta mentre stai analizzando i risultati. Se non lo dovessi fare, dovrai fare una scelta in anticipo. In questo caso, ti consigliamo di selezionare la finestra di attribuzione più comune che usi in Dynamic Yield. Se le esperienze Dynamic Yield dovessero prevedere:
- un'attribuzione di 7 giorni: imposta la scadenza su attribuzione personalizzata = 7 giorni
- Attribuzione sessione: imposta la scadenza su Visita
Attenzione: le sessioni/visite sono definite in modo diverso in Dynamic Yield e Adobe. Quando si opta per questa scadenza, è possibile notare discrepanze più elevate tra le piattaforme rispetto a quando si utilizza una scadenza a tempo. Scopri di più sulla Definizione della sessione in Dynamic Yield. - Attribuzione post-evento o post-clic: per replicarla in Adobe Analytics, è necessario creare dei segmenti sequenziali, che includano le visite o i visitatori che hanno anche attivato l'analogo di Adobe Analytics dell'evento condizionale utilizzato per l'attribuzione post-evento in Dynamic Yield.
- Delimitatore di valore: impostalo su | (pipe). Cambiarlo in un altro delimitatore richiederebbe delle modifiche allo script nel passaggio 2 dell'integrazione.
- Allocazione: impostala su Intero per imitare la logica di attribuzione di Dynamic Yield, in modo che ogni singolo test riceva una credito di conversione completa.
- Valori massimi: 250
Passaggio 2: configurazione di un oggetto di livello dati globale
Se Adobe Analytics è pronto per ricevere dati da Dynamic Yield, creeremo un oggetto di livello dati, utilizzando l'integrazione Dynamic Yield Custom Analytics.
L'oggetto di livello dati riceverà una chiamata dyGlobalObject, che contiene tre elementi:
- events: una matrice di oggetti contenenti diversi tipi di eventi, innescati da differenti tipologie di interazioni. Questi eventi si possono usare per attivare singole chiamate ad Adobe Analytics. In questa configurazione, tuttavia, combineremo il contenuto di più eventi utilizzando la variabile "List", riducendo il numero di chiamate ad Adobe Analytics a una volta per pagina, per raggiungere un buon compromesso tra precisione di tracciamento e costi.
- listVar: una singola stringa contenente un elenco concatenato tramite pipe distinto per campagna-esperimento-variante caricati nella pagina. Ad ogni nuovo evento di impressione, le informazioni pertinenti verranno integrate al valore esistente. La variabile elenco Adobe può essere popolata direttamente con questo valore.
- uniqueImp: un array utilizzato per creare il campo listVar.
L'array dyGlobalObject degli eventi può essere popolato da diversi eventi, ognuno di essi contenente informazioni specifiche che potresti voler registrare in Adobe:
- Variation impression (impressione per variante): questo evento eseguirà la funzione ogni volta che un test o una variante della campagna viene mostrata a un visitatore sul tuo sito;
- Recommendation impression (impressione per raccomandazione): questo evento lancerà la funzione ogni volta che si esegue il rendering di un set di elementi nella pagina. Trasferisce informazioni all'algoritmo e agli elementi consigliati.
Per inviare le informazioni sulle impressioni variante al livello dati:
Se usi già l'estensione integrazioni Analytics per la piattaforma installata, vai a Web Personalization › Extensions e inizia dal passaggio 3.
- Vai su App Store Experience OS › › Analytics Platform Integration e clicca su Install.
- Clicca su Configure extension.
- Attiva l'estensione e poi clicca su Edit.
- Seleziona Variation Impressions, sostituisci il codice di esempio con il seguente e poi salva.
function afterVariationSelected(tagId, tagName, experienceName, experience, variations, isNoAction) { window.dyGlobalObject = window.dyGlobalObject || {}; window.dyGlobalObject.events = window.dyGlobalObject.events || []; window.dyGlobalObject.listVar = window.dyGlobalObject.listVar || []; window.dyGlobalObject.uniqueImp = window.dyGlobalObject.uniqueImp || []; const timestamp = Math.round((new Date()).getTime() / 1000); let expName = decodeURI(experience.name); const experienceId = experience.id; if (isNoAction) { addExperienceToGlobalObject(tagId, tagName, experienceId, expName, isNoAction, variations[0].id, 'Control', timestamp); } else { variations.forEach(function(variation) { addExperienceToGlobalObject(tagId, tagName, experienceId, expName, isNoAction, variation.id, decodeURI(variation.name), timestamp); }); } if (DYO.userAgent.isSafari(navigator.userAgent)) { DY.CS = DY.CS || {}; DY.CS.reportToAdobeReady = DY.CS.reportToAdobeReady || DYO.CoreUtils.waitForVariable('DY.CS.reportToAdobe'); DY.CS.reportToAdobeReady.then(function() { DY.CS.reportToAdobe.report(); }); } function addExperienceToGlobalObject(tagId, tagName, experienceId, expName, isNoAction, variationId, variationName, timestamp) { window.dyGlobalObject.events.push({ 'event': 'impression', 'cmpId': parseInt(tagId), 'cmpName': tagName, 'expId': experienceId, 'expName': expName, 'varId': variationId, 'varName': variationName, 'isCG': isNoAction, 'eventTs': timestamp }); const listItem = [tagName, expName, variationName].join('.'); if (window.dyGlobalObject.uniqueImp.indexOf(listItem) === -1) { window.dyGlobalObject.uniqueImp.push(listItem); } window.dyGlobalObject.listVar = window.dyGlobalObject.uniqueImp.join('|'); } }
- Dopo alcuni minuti, prova ad aprire la console del browser sul tuo sito web, dove è in esecuzione almeno una campagna Dynamic Yield, e digita dyGlobalObject. Dovresti vedere che l'array eventi si popola con un evento di tipo impressioni per ogni campagna corrente, mentre l'elemento listVar si completa con l'elenco concatenato tramite pipe [campaign_name].[experience_name].[variation_name], come nel seguente esempio:
{
"events": [{
"cmpId":524122,
"cmpName":"Custom Action: Set Cookie 1",
"event":"impression",
"eventTs":1605468964,
"expId":994350,
"expName":"Experience 1",
"isCG":false,
"varId":"13487153",
"varName":"Variation 1"
}, {
"cmpId":525193,
"cmpName":"Recommendation",
"event":"impression",
"eventTs":1605468964,
"expId":997366,
"expName":"Experience 1",
"isCG":false,
"varId":"13629597",
"varName":"Variation 1"
}],
"listVar": "Custom Action: Set Cookie 1.Experience 1.Variation 1|Recommendation.Experience 1.Variation 1",
"uniqueImp": [
"Custom Action: Set Cookie 1.Experience 1.Variation 1",
"Recommendation.Experience 1.Variation 1"
]
}
Fai attenzione a questa riga nel codice della funzione di integrazione precedente:
const listItem = [tagName, expName, variationName].join('.');
È chiaro che ogni valore della variabile elenco deve essere costruito come: [campaign_name].[experience_name].[variation_name]
È possibile modificare questa definizione, ad esempio:
- scegliendo un separatore diverso (tipo, se alcuni dei nomi delle entità dovessero contenere punti),
- optando per valori di entità diversi (ad esempio, se si desidera utilizzare gli ID di nomi per risparmiare spazio nella variabile elenco - ricorda che ogni valore elenco ha una lunghezza massima di 250 caratteri).
Ad esempio, se si desidera registrare gli ID entità, separati da punti e virgola, si può modificare la funzione come segue:
const listItem = [tagName, expName, variationName].join(';');
Se dovesssi decidere di utilizzare gli ID anziché i nomi delle entità, è meglio utilizzare la Classificazione Adobe SAINT per mapparli rispetto ai rispettivi nomi di entità. Nota che, al momento, Dynamic Yield non è in grado di fornire un accesso comodo e sistematico ai metadati di questi ID entità da utilizzare con l'importatore della classificazione Adobe. Tuttavia, gli ID e i rispettivi metadati si possono individuare, per ogni variante, nell'array globale dell'oggetto per classificarli manualmente in Adobe.
Per inviare a livello di dati informazioni sui prodotti consigliati (facoltativo):
Per le campagne di raccomandazione, puoi anche visualizzare informazioni sull'algoritmo utilizzato e sui prodotti consigliati.
- Vai all'integrazione della piattaforma di analisi personalizzata e seleziona le Recommendation Impressions.
- Sostituisci il codice di esempio con il seguente e salva.
function afterRcomResponse(strategy, fallback, widgetId, slots) { window.dyGlobalObject = window.dyGlobalObject || {}; window.dyGlobalObject.events = window.dyGlobalObject.events || []; window.dyGlobalObject.events.push({ 'event': 'recommendation_impression', 'strId': strategy.widgetId, 'strType': strategy.strategy, 'slots': strategy.slots, 'isFallback': strategy.fallback, 'eventTs': Math.round((new Date()).getTime() / 1000), }); }
-
Dopo alcuni minuti, prova ad aprire la console del browser sul tuo sito web, dove è in esecuzione almeno una campagna di raccomandazione, e digita dyGlobalObject. Dovresti notare che l'array eventi contiene un nuovo tipo di evento, recommendation_impression:
{ "events": [ { "event": "recommendation_impression", "eventTs": 1605468966, "isFallback": true, "slots": [ { "fallback": true, "item": { "categories": [ "Cats", "Toys" ], "description": "A Scratch-tastic product.", "dy_display_price": "0", "group_id": "119", "image_url": "http://cdn.dynamicyield.com/petshop/images/Group 119.png", "in_stock": true, "keywords": [ ], "name": "Cat Scratch Tower (Midi)", "price": 0, "publish_time": "2020-11-15T16:15:50", "sku": "119", "url": "/product/119" } } ], "strId": 89828, "strType": "TOP_N_RANDOM" } ] }
Nota: il passaggio successivo di questa guida si concentra solo sull'integrazione delle impressioni per variante.
Passaggio 3: inviare una chiamata ad Adobe Analytics
Dopo aver proposto le giuste informazioni, invia una chiamata ad Adobe Analytics in una delle seguenti modalità:
- tramite Dynamic Yield, una per pagina,
- personalizzata, tramite la tua soluzione di gestione dei tag.
Opzione | Chiamate una volta per impressione | Chiamate una volta per pagina | Su chiamata esistente |
---|---|---|---|
Chiamata via Dynamic Yield | - | Quando l'utente scarica la pagina o in modo equivalente tramite il codice personalizzato di Dynamic Yield come ulteriore chiamata s.tl() | - |
Chiamata personalizzata, tramite tag manager | Al tipo di evento = impression | Tramite tag manager come chiamata aggiuntiva s.tl() | Tramite il gestore di tag insieme al sistema esistente |
Opzione 1: puoi inviare una chiamata tramite Dynamic Yield, una volta per pagina
Usa il codice personalizzato Dynamic Yield della campagna per popolare la variabile elenco dal livello dati e, quindi, attiva una chiamata Adobe Analytics s.tl().
- Vai su Web Personalization › New Campaign e clicca su Custom Code.
- Seleziona l'opzione per attivare la campagna al momento del Caricamento della pagina. Questo comando si limiterà a impostare un listener di eventi al caricamento della pagina. La funzione inclusa verrà eseguita prima di scaricare la pagina per i siti statici e tramite spa_start per applicazioni a pagina singola.
-
Importante: dato che questa è una campagna ausiliaria, che non vuoi tracciare in Adobe, prova a disabilitare l'opzione Track campaign performance in your analytics platform (Monitora il rendimento delle campagne nella tua piattaforma di analisi) e l'opzione Serve On every SPA event (Proponi a ogni evento SPA), poi clicca su avanti.
- Clicca sulla scheda Variations (lasciando la scheda del targeting vuota, per rivolgerti a tutti gli utenti)
- Clicca su New Variation e seleziona il modello Custom Code.
- Vai su Design e incolla il seguente codice nelle Integrazioni JS. Attenzione: con questo frammento di codice si intende popolare in modo esplicito la variabile elenco numero 3. Sostituisci 3 con l'identificatore della variabile elenco come definito in Adobe Analytics, poi clicca su Save Variation.
const variableName = 'list3'; const INTERVAL = 5000; const dyAdobeTimeCookie = DYO.StorageUtils.get('dy-adobe', ['sessionStorage']); let newPosition = 0; let dyAdobeInterval; // For disabling interval logic, put a zero (0) DY.CS = DY.CS || {}; const adobeSender = () => { const currentTime = new Date().getTime(); const newTime = new Date(currentTime + INTERVAL).getTime(); window.addEventListener('beforeunload', sendDataToAdobeAnalytics); document.addEventListener('mouseout', (evt) => { if (evt.toElement === null && evt.relatedTarget === null) { sendDataToAdobeAnalytics(); } }); document.addEventListener("scroll", scrollSpeed); if (dyAdobeInterval !== 0) { dyAdobeInterval = setInterval(() => { if (dyAdobeTimeCookie === null) { DYO.StorageUtils.set('dy-adobe', newTime, ['sessionStorage']); sendDataToAdobeAnalytics(); } else { if (currentTime > dyAdobeTimeCookie) { sendDataToAdobeAnalytics(); DYO.StorageUtils.set('dy-adobe', newTime, ['sessionStorage']); } } }, INTERVAL); } } function scrollSpeed() { let lastPosition = window.scrollY; setTimeout(() => { newPosition = window.scrollY; }, 100); currentSpeed = newPosition - lastPosition; if (currentSpeed > 220) { sendDataToAdobeAnalytics(); } } function sendDataToAdobeAnalytics() { const data = window.dyGlobalObject && window.dyGlobalObject.listVar; if (!data) { return; } const reportingSettings = { linkTrackVars: variableName }; reportingSettings[variableName] = data; s.useBeacon = true; s.tl(true, "o", "Dynamic Yield", reportingSettings); delete window.dyGlobalObject; } DY.CS.reportToAdobe = (function() { const TIMEOUT = 400; let timeoutId = null; function sendData() { sendDataToAdobeAnalytics(); timeoutId = null; } function report() { if (timeoutId !== null) { clearTimeout(timeoutId); timeoutId = null; } timeoutId = setTimeout(sendData, TIMEOUT); } return { report: report }; })(); adobeSender();
- Seleziona un obiettivo come metrica principale, tenendo presente che non stai impostando un test vero e proprio, ma solo una campagna ausiliaria per creare una chiamata API, quindi qualsiasi obiettivo andrà bene.
- Assicurati che l'allocazione sia impostata per inviare il 100% del traffico alla tua variante.
- Clicca su Salva esperienza e Salva e pubblica la campagna.
Opzione 2: invio di una chiamata tramite la soluzione di gestione dei tag
Questa opzione offre la massima flessibilità per utilizzare l'oggetto di livello dati nel modo che meglio si adatta alla tua implementazione.
Puoi utilizzare il contenuto dell'elemento di dyGlobalObject listVar così com'è, o costruire qualcosa di analogo con il contenuto di ogni oggetto nell'array eventi .
Puoi anche decidere con quale frequenza e in che modo effettuare la chiamata, che sia come s.tl() separata o insieme alla visualizzazione di pagina esistente s.t().
Alcuni esempi di configurazione:
Opzione | Impostazione | Pro | Contro |
---|---|---|---|
Per attivare una chiamata su ogni impressione della campagna | Compilare la variabile elenco e associare la chiamata a dyGlobalObject.event.event_type = impression | Massima precisione | Costo delle chiamate |
Per raggruppare le chiamate come chiamata s.tl() aggiuntiva | Usa il contenuto di dyGlobalObject.event.listVar o costruisci la tua soluzione analoga e attiva una chiamata s.tl() quando l'utente scarica la pagina. | Buon compromesso | Costo della chiamata s.t() aggiuntiva |
Per raggruppare le chiamate in una chiamata esistente | Usa il contenuto di dyGlobalObject.event.listVar o costruisci la tua soluzione analoga | Nessuna chiamata e nessun costo aggiuntivo | Imprecisione dovuta alle condizioni di race, se le campagne vengono proposte dopo aver effettuato la chiamata. |
Convalida dell'integrazione
Se hai scelto di eseguire l'integrazione tramite Dynamic Yield o tramite Tag Manager usando la variabile elenco, puoie verificare che l'integrazione funzioni come previsto utilizzando Adobe Experience Cloud Debugger, assicurandosi che la variabile elenco si popoli correttamente. Ad esempio:
Analizzare campagne Dynamic Yield in Adobe Analytics
Una volta completata la configurazione, dovresti vedere che la tua variabile elenco si è popolata in Adobe Analytics. Ne potrai effettuare l'analisi utilizzando la variabile elenco così com'è, o tramite classificazione per suddividere ulteriormente ogni valore in elenco.
Utilizzare la variabile elenco così com'è
Supponiamo che tu abbia una campagna di consigli con due esperienze e due varianti per esperienza.
In Adobe Analytics, puoi creare una nuova tabella a forma libera e trascinare la dimensione DY Integration nella vista, accanto a visite, visitatori unici o qualsiasi altra metrica di conversione.
In questo esempio, poiché le due esperienze includono due varianti ciascuna, dovresti vedere quattro righe. Se il numero di combinazioni fosse elevato, potresti voler suddividere ogni combinazione nella rispettiva gerarchia in fatto di campagna › esperienza › variante per un'analisi più completa.
Usare la classificazione per creare dimensioni separate per campagne, esperienze e varianti
Oltre a utilizzare la variabile elenco così com'è, puoi sfruttare la classificazione per suddividere ulteriormente ogni valore in elenco, separandolo in base al separatore scelto.
Ad esempio, se ogni valore della variabile elenco fosse impostato come:
[campaign_name][experience_name][variation_name]
Puoi creare tre dimensioni, dividendolo in corrispondenza del punto (.), in questo modo:
- DY Campaign
- DY Experience
- DY Variation
A tale scopo:
- Passa a Admin › Generatore di regole di classificazione
- Aggiungi una nuova regola del tipo Espressione regolare
- Seleziona la variabile elenco come input
- Seleziona una condizione corrispondente in base al separatore. Ad esempio, se dovessi utilizzare un punto (.), potrai impostare i criteri di corrispondenza ssu: ^(.*)\.(.*)\.(.*)
- Poiché stai dividendo i valori in tre dimensioni, assicurati di classificare i risultati in base alla loro posizione ordinale: DY Campaign = $1, DY Experience = $2, DY Variation = $3
Quando le nuove dimensioni saranno pronte, torna a un workspace e analizzale:
Disattivare l'integrazione per una campagna specifica
Per impostazione predefinita, l'integrazione della piattaforma di analisi personalizzata è abilitata per tutte le campagne. Tuttavia, l'integrazione può essere disattivata per campagna, basterà aprire le Impostazioni avanzate di ogni campagna.
- Quando modifichi o crei una campagna, vai su Impostazioni avanzate.
- Attiva (o disattiva) l'opzione Esegui integrazioni personalizzate.
DMPG è un'agenzia indipendente di coinvolgimento nelle esperienze digitale, certificata per le piattaforme Google e Adobe Martech, che propone strategie e servizi di lancio, che includono le piattaforme di dati dei clienti, l'automazione del marketing, la personalizzazione cross-channel, l'ottimizzazione del tasso di conversione, le analisi digitali e la gestione dei tag.