Suivi des événements
Créé pour :
- Développeur
Utilisez les fonctionnalités de suivi d’événement de Adobe Target pour mesurer efficacement les mesures qui comptent le plus pour votre entreprise et vos cas d’utilisation. Le suivi des événements est essentiel pour mesurer le succès de vos activités d’expérimentation ou de personnalisation, puisqu’il vous indique la variation ou l’expérience qui gagne ou perd. Comprendre cela vous aidera à comprendre comment vos utilisateurs interagissent avec votre produit ou évoluent dans un paysage en constante évolution.
Pour effectuer le suivi des événements par le biais des SDK de Adobe Target, procédez comme suit en 2 étapes :
-
Installez le SDK et déployez le code qui envoie des événements à Adobe Target.
-
Créez et activez une activité Adobe Target avec une mesure d’objectif dans l’interface utilisateur.
Mesures et événements d’objectif
Le tableau suivant définit la combinaison d’objectifs et d’événements que vous pouvez définir et mesurer avec une activité Target à l’aide des fonctionnalités de création de rapports de Target :
Déclenchement des impressions
Les SDK Target appellent l’ API de diffusion sous-jacent. Lorsqu’un objet d’exécution avec les paramètres requis se trouve dans la requête elle-même, l’impression est incrémentée automatiquement pour les activités admissibles. Les méthodes du SDK qui incrémentent automatiquement une impression sont les suivantes :
- getOffers()
- getAttributes()
La méthode sendNotifications
peut être utilisée pour envoyer manuellement des événements à Adobe Target et déclencher une impression.
TargetClient.sendNotifications(options: Object): Promise
ResponseStatus TargetClient.sendNotifications(TargetDeliveryRequest request)
Exemple de code
Les exemples de code suivants fonctionnent pour tous les types de mesures d’objectif, qu’il s’agisse de conversion, de recettes ou d’engagement.
A affiché une page ou une mbox
Cet exemple obtient d’abord une offre mbox cible à l’aide de getOffers
. Il crée ensuite une requête avec une notification basée sur cette offre de mbox.
La propriété de notification type
est définie sur display
.
Pour indiquer qu’une page a été consultée, il est important de spécifier l’objet address dans la payload de notification. Veillez à définir l’URL en conséquence.
Pour les mbox, vous devez définir la propriété mbox sur l’objet de notification et fournir un tableau de jetons basé sur le tableau d’options dans le 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 sur une mbox
Cet exemple obtient d’abord une offre mbox cible à l’aide de getOffers
. Il crée ensuite une requête avec une notification basée sur cette offre de mbox.
La propriété de notification type
est définie sur click
.
Vous devez définir la propriété mbox
sur l’objet de notification et fournir un tableau de jetons basé sur le tableau de mesures dans 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);
Affichage d’une vue
Cet exemple obtient d’abord les vues cibles à l’aide de getOffers
. Il crée ensuite une requête avec une notification basée sur ces vues.
La propriété de notification type
est définie sur display
.
Pour les vues, vous devez définir la propriété view
sur l’objet de notification et fournir un tableau de jetons basé sur le tableau options de 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 sur une vue
Cet exemple obtient d’abord les vues cibles à l’aide de getOffers
. Il crée ensuite une requête avec des notifications en fonction de ces vues.
La propriété de notification type
est définie sur click
.
Vous devez définir la propriété view
sur l’objet de notification et fournir un tableau de jetons en fonction du tableau de mesures dans le 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);