Tracciamento degli eventi
Creato per:
- Sviluppatore
Utilizza le funzionalità di tracciamento degli eventi di Adobe Target per misurare in modo efficace le metriche più importanti per la tua azienda e i casi d'uso. Il tracciamento degli eventi è fondamentale per misurare il successo delle attività di sperimentazione o personalizzazione, in quanto ti dicono quale variante o esperienza vince o perde. Comprendere questo ti aiuterà a capire in che modo gli utenti interagiscono con il tuo prodotto o si evolvono in un panorama in continua evoluzione.
Per tenere traccia degli eventi tramite gli SDK di Adobe Target, segui questo processo in due fasi:
-
Installa l'SDK e distribuisci il codice che invia gli eventi a Adobe Target.
-
Crea e attiva un'attività Adobe Target con una metrica di obiettivo nell'interfaccia utente.
Metriche ed eventi per obiettivo
La tabella seguente definisce la combinazione di obiettivi ed eventi che è possibile definire e misurare con un'attività Target utilizzando le funzionalità di reporting di Target:
Come vengono attivate le impression
Gli SDK di Target chiamano l'API di consegna sottostante. Quando un oggetto di esecuzione con i parametri richiesti si trova all’interno della richiesta stessa, l’impression viene incrementata automaticamente per le attività qualificate. I metodi SDK che incrementano automaticamente un’impression sono:
- getOffers()
- getAttributes()
Il metodo sendNotifications
può essere utilizzato per inviare manualmente eventi a Adobe Target e attivare un'impression.
TargetClient.sendNotifications(options: Object): Promise
ResponseStatus TargetClient.sendNotifications(TargetDeliveryRequest request)
Codice di esempio
I seguenti esempi di codice funzionano per tutti i tipi di metriche obiettivo, che si tratti di Conversione, Entrate o Coinvolgimento.
Visualizzazione di una pagina o di una mbox
Questo esempio ottiene prima un'offerta mbox di destinazione utilizzando getOffers
. Quindi crea una richiesta con una notifica basata su tale offerta mbox.
La proprietà type
della notifica è impostata su display
.
Per indicare che una pagina è stata visualizzata, è importante specificare l’oggetto indirizzo nel payload di notifica. Assicurati di impostare l’URL di conseguenza.
Per le mbox, è necessario impostare la proprietà mbox sull'oggetto di notifica e fornire una matrice di token basata sulla matrice delle opzioni in targetResult
.
const TargetClient = require("@adobe/target-nodejs-sdk");
const { v4: uuidv4 } = require("uuid");
const client = TargetClient.create({
client: "acmeclient",
organizationId: "1234567890@AdobeOrg",
events: { clientReady: onTargetReady },
});
async function onTargetReady() {
const targetResult = await client.getOffers({
request: {
targetRequest,
prefetch: {
mboxes: [
{
name: "homepage",
index: 1
}
]
},
sessionId: uuidv4()
}
});
const { mboxes = [] } = targetResult.response.prefetch;
const request = {
context: { channel: "web" },
notifications: mboxes.map(mbox => {
const { options = [] } = mbox;
return {
id: targetResult.response.id,
impressionId: uuidv4(),
address: {
url: "http://www.target-demo-site.com"
},
timestamp: new Date().getTime(),
type: "display",
mbox: {
name: mbox.name
},
tokens: options.map(option => option.eventToken)
};
})
};
// send the notification event
await client.sendNotifications({ request });
}
ClientConfig clientConfig = ClientConfig.builder()
.client("acmeclient")
.organizationId("1234567890@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(clientConfig);
Context context = new Context()
.channel(ChannelType.WEB)
.address(new Address().url("http://www.target-demo-site.com"));
TargetDeliveryResponse targetResult = targetJavaClient.getOffers(TargetDeliveryRequest.builder()
.context(context
)
.prefetch(new PrefetchRequest()
.mboxes(new ArrayList() {{
add(new MboxRequest().name("homepage").index(1));
}})
)
.build());
List<Notification> notifications = new ArrayList<>();
List<PrefetchMboxResponse> mboxes = targetResult.getResponse().getPrefetch().getMboxes();
for (PrefetchMboxResponse mbox : mboxes) {
List<Option> options = mbox.getOptions();
notifications.add((Notification) new Notification()
.id(targetResult.getResponse().getRequestId())
.impressionId(UUID.randomUUID().toString())
.timestamp(System.currentTimeMillis())
.type(MetricType.DISPLAY)
.mbox(new NotificationMbox().name(mbox.getName()))
.tokens(options.stream().map(Option::getEventToken).collect(Collectors.toList()))
.address(new Address().url("http://www.target-demo-site.com"))
);
}
TargetDeliveryRequest notificationRequest = TargetDeliveryRequest.builder()
.context(context)
.notifications(notifications).build();
targetJavaClient.sendNotifications(notificationRequest);
Clic su una Mbox
Questo esempio ottiene prima un'offerta mbox di destinazione utilizzando getOffers
. Quindi crea una richiesta con una notifica basata su tale offerta mbox.
La proprietà type
della notifica è impostata su click
.
È necessario impostare la proprietà mbox
sull'oggetto di notifica e fornire un array di token basato sull'array delle metriche in targetResult
.
const TargetClient = require("@adobe/target-nodejs-sdk");
const { v4: uuidv4 } = require("uuid");
const client = TargetClient.create({
client: "acmeclient",
organizationId: "1234567890@AdobeOrg",
events: { clientReady: onTargetReady },
});
async function onTargetReady() {
const targetResult = await client.getOffers({
request: {
targetRequest,
prefetch: {
mboxes: [
{
name: "homepage",
index: 1
}
]
},
sessionId: uuidv4()
}
});
const { mboxes = [] } = targetResult.response.prefetch;
const request = {
context: { channel: "web" },
notifications: mboxes.map(mbox => {
const { options = [], metrics = [] } = mbox;
return {
id: targetResult.response.id,
impressionId: uuidv4(),
address: {
url: "http://www.target-demo-site.com"
},
timestamp: new Date().getTime(),
type: "click",
mbox: {
name: mbox.name
},
tokens: metrics
.filter(metric => metric.type === "click")
.map(metric => metric.eventToken)
};
})
};
// send the notification event
await client.sendNotifications({ request });
}
ClientConfig clientConfig = ClientConfig.builder()
.client("acmeclient")
.organizationId("1234567890@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(clientConfig);
Context context = new Context()
.channel(ChannelType.WEB)
.address(new Address().url("http://www.target-demo-site.com"));
TargetDeliveryResponse targetResult = targetJavaClient.getOffers(TargetDeliveryRequest.builder()
.context(context
)
.prefetch(new PrefetchRequest()
.mboxes(new ArrayList() {{
add(new MboxRequest().name("homepage").index(1));
}})
)
.build());
List<Notification> notifications = new ArrayList<>();
List<PrefetchMboxResponse> mboxes = targetResult.getResponse().getPrefetch().getMboxes();
for (PrefetchMboxResponse mbox : mboxes) {
List<Metric> metrics = mbox.getMetrics();
notifications.add((Notification) new Notification()
.id(targetResult.getResponse().getRequestId())
.impressionId(UUID.randomUUID().toString())
.timestamp(System.currentTimeMillis())
.type(MetricType.CLICK)
.mbox(new NotificationMbox().name(mbox.getName()))
.tokens(metrics.stream()
.filter(metric -> MetricType.CLICK.equals(metric.getType()))
.map(Metric::getEventToken)
.collect(Collectors.toList()))
.address(new Address().url("http://www.target-demo-site.com"))
);
}
TargetDeliveryRequest notificationRequest = TargetDeliveryRequest.builder()
.context(context)
.notifications(notifications).build();
targetJavaClient.sendNotifications(notificationRequest);
Visualizzazione visualizzata
In questo esempio vengono prima ottenute le visualizzazioni di destinazione utilizzando getOffers
. Quindi, crea una richiesta con una notifica basata su tali visualizzazioni.
La proprietà type
della notifica è impostata su display
.
Per le visualizzazioni, è necessario impostare la proprietà view
sull'oggetto di notifica e fornire una matrice di token basata sulla matrice delle opzioni in targetResult.
const TargetClient = require("@adobe/target-nodejs-sdk");
const { v4: uuidv4 } = require("uuid");
const client = TargetClient.create({
client: "acmeclient",
organizationId: "1234567890@AdobeOrg",
events: { clientReady: onTargetReady },
});
async function onTargetReady() {
const targetResult = await client.getOffers({
request: {
targetRequest,
prefetch: {
views: [{}]
},
sessionId: uuidv4()
}
});
const { views = [] } = targetResult.response.prefetch;
const request = {
context: { channel: "web" },
notifications: views.map(view => {
const { options = [], metrics = [] } = view;
return {
id: targetResult.response.id,
impressionId: uuidv4(),
address: {
url: "http://www.target-demo-site.com"
},
timestamp: new Date().getTime(),
type: "display",
view: {
name: view.name
},
tokens: options.map(option => option.eventToken)
};
})
};
// send the notification event
await client.sendNotifications({ request });
}
ClientConfig clientConfig = ClientConfig.builder()
.client("acmeclient")
.organizationId("1234567890@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(clientConfig);
Context context = new Context()
.channel(ChannelType.WEB)
.address(new Address().url("http://www.target-demo-site.com"));
TargetDeliveryResponse targetResult = targetJavaClient.getOffers(TargetDeliveryRequest.builder()
.context(context)
.prefetch(new PrefetchRequest()
.views(new ArrayList() {{
add(new ViewRequest());
}})
)
.build());
List<Notification> notifications = new ArrayList<>();
List<View> views = targetResult.getResponse().getPrefetch().getViews();
for (View view : views) {
List<Option> options = view.getOptions();
List<Metric> metrics = view.getMetrics();
notifications.add((Notification) new Notification()
.id(targetResult.getResponse().getRequestId())
.impressionId(UUID.randomUUID().toString())
.timestamp(System.currentTimeMillis())
.type(MetricType.DISPLAY)
.view(new NotificationView().name(view.getName()))
.tokens(options.stream().map(Option::getEventToken).collect(Collectors.toList()))
.address(new Address().url("http://www.target-demo-site.com"))
);
}
TargetDeliveryRequest notificationRequest = TargetDeliveryRequest.builder()
.context(context)
.notifications(notifications).build();
targetJavaClient.sendNotifications(notificationRequest);
Clic su una visualizzazione
In questo esempio vengono prima ottenute le visualizzazioni di destinazione utilizzando getOffers
. Quindi crea una richiesta con le notifiche basate su tali visualizzazioni.
La proprietà type
della notifica è impostata su click
.
È necessario impostare la proprietà view
sull'oggetto di notifica e fornire una matrice di token basata sulla matrice delle metriche in targetResult.
const TargetClient = require("@adobe/target-nodejs-sdk");
const { v4: uuidv4 } = require("uuid");
const client = TargetClient.create({
client: "acmeclient",
organizationId: "1234567890@AdobeOrg",
events: { clientReady: onTargetReady },
});
async function onTargetReady() {
const targetResult = await client.getOffers({
request: {
targetRequest,
prefetch: {
views: [{}]
},
sessionId: uuidv4()
}
});
const { views = [] } = targetResult.response.prefetch;
const request = {
context: { channel: "web" },
notifications: views.map(view => {
const { options = [], metrics = [] } = view;
return {
id: targetResult.response.id,
impressionId: uuidv4(),
address: {
url: "http://www.target-demo-site.com"
},
timestamp: new Date().getTime(),
type: "click",
view: {
name: view.name
},
tokens: metrics
.filter(metric => metric.type === "click")
.map(metric => metric.eventToken)
};
})
};
// send the notification event
await client.sendNotifications({ request });
}
ClientConfig clientConfig = ClientConfig.builder()
.client("acmeclient")
.organizationId("1234567890@AdobeOrg")
.build();
TargetClient targetClient = TargetClient.create(clientConfig);
Context context = new Context()
.channel(ChannelType.WEB)
.address(new Address().url("http://www.target-demo-site.com"));
TargetDeliveryResponse targetResult = targetJavaClient.getOffers(TargetDeliveryRequest.builder()
.context(context)
.prefetch(new PrefetchRequest()
.views(new ArrayList() {{
add(new ViewRequest());
}})
)
.build());
List<Notification> notifications = new ArrayList<>();
List<View> views = targetResult.getResponse().getPrefetch().getViews();
for (View view : views) {
List<Option> options = view.getOptions();
List<Metric> metrics = view.getMetrics();
notifications.add((Notification) new Notification()
.id(targetResult.getResponse().getRequestId())
.impressionId(UUID.randomUUID().toString())
.timestamp(System.currentTimeMillis())
.type(MetricType.CLICK)
.view(new NotificationView().name(view.getName()))
.tokens(metrics.stream()
.filter(metric -> MetricType.CLICK.equals(metric.getType()))
.map(Metric::getEventToken)
.collect(Collectors.toList()))
.address(new Address().url("http://www.target-demo-site.com"))
);
}
TargetDeliveryRequest notificationRequest = TargetDeliveryRequest.builder()
.context(context)
.notifications(notifications).build();
targetJavaClient.sendNotifications(notificationRequest);