S’applique également à la v8.
AB Testing : créer le script
- Rubriques :
- Tests AB
Créé pour :
- Utilisateur ou utilisatrice
Le choix du contenu de la diffusion destinée à la population restante est calculé par un script. Ce script récupère l'information quant à la diffusion qui a obtenu le plus fort taux d'ouverture et copie le contenu dans la diffusion finale.
Exemple de script
Le script suivant peut être utilisé tel quel dans le workflow de ciblage. Pour plus d’informations, consultez cette section.
// query the database to find the winner (best open rate)
var winner = xtk.queryDef.create(
<queryDef schema="nms:delivery" operation="get">
<select>
<node expr="@id"/>
<node expr="@label"/>
<node expr="[@operation-id]"/>
<node expr="[@workflow-id]"/>
</select>
<where>
<condition expr={"@FCP=0 and [@workflow-id]= " + instance.id}/>
</where>
<orderBy>
<node expr="[indicators/@estimatedRecipientOpenRatio]" sortDesc="true"/>
</orderBy>
</queryDef>).ExecuteQuery()
// create a new delivery object and initialize it by doing a copy of
// the winner delivery
var delivery = nms.delivery.create()
delivery.Duplicate("nms:delivery|" + winner.@id)
// append 'final' to the delivery label
delivery.label = winner.@label + " final"
// link the delivery to the operation to make sure it will be displayed in
// the campaign dashboard. This attribute needs to be set manually here since
// the Duplicate() method has reset it to its default value => 0
delivery.operation_id = winner.@["operation-id"]
delivery.workflow_id = winner.@["workflow-id"]
// adjust some delivery parameters to make it compatible with the
// "Prepare and start" option selected in the Delivery tab of this activity
delivery.scheduling.validationMode = "manual"
delivery.scheduling.delayed = 0
// save the delivery in database
delivery.save()
// store the new delivery Id in event variables
vars.deliveryId = delivery.id
Pour une explication détaillée du script, reportez-vous à cette section.
Mise en œuvre
-
Ouvrez votre activité Code JavaScript,
-
Copiez le script proposé dans Exemple de script dans la fenêtre Code JavaScript.
-
Dans le champ Libellé, entrez le nom du script, soit
<%= vars.deliveryId %>
-
Fermez l'activité Code JavaScript.
-
Sauvegardez votre workflow.
Détails du script
Cette section détaille les différentes parties du script et leur fonctionnement.
-
La première partie du script est une requête. La commande queryDef vous permet de récupérer à partir de la table NmsDelivery les diffusions créées par l'exécution du workflow de ciblage et de les classer selon l'estimation du taux d'ouverture, puis les informations de la diffusion qui a eu le meilleur taux d'ouverture sont également récupérées.
// query the database to find the winner (best open rate) var winner = xtk.queryDef.create( <queryDef schema="nms:delivery" operation="get"> <select> <node expr="@id"/> <node expr="@label"/> <node expr="[@operation-id]"/> </select> <where> <condition expr={"@FCP=0 and [@workflow-id]= " + instance.id}/> </where> <orderBy> <node expr="[indicators/@estimatedRecipientOpenRatio]" sortDesc="true"/> </orderBy> </queryDef>).ExecuteQuery()
-
La diffusion qui a eu le meilleur taux d'ouverture est dupliquée.
// create a new delivery object and initialize it by doing a copy of // the winner delivery var delivery = nms.delivery.create() delivery.Duplicate("nms:delivery|" + winner.@id)
-
Le libellé de la diffusion dupliquée est modifié en y ajoutant le terme final.
// append 'final' to the delivery label delivery.label = winner.@label + " final"
-
La diffusion est copiée dans le tableau de bord de l'opération.
// link the delivery to the operation to make sure it will be displayed in // the campaign dashboard. This attribute needs to be set manually here since // the Duplicate() method has reset it to its default value => 0 delivery.operation_id = winner.@["operation-id"] delivery.workflow_id = winner.@["workflow-id"]
// adjust some delivery parameters to make it compatible with the // "Prepare and start" option selected in the Delivery tab of this activity delivery.scheduling.validationMode = "manual" delivery.scheduling.delayed = 0
-
La diffusion est enregistrée dans la base.
// save the delivery in database delivery.save()
-
L'identifiant unique de la diffusion dupliquée est stockée dans la variable du workflow.
// store the new delivery Id in event variables vars.deliveryId = delivery.id
Autres critères de sélection
L'exemple présenté ci-dessus permet de sélectionner le contenu d'une diffusion en fonction du taux d'ouverture des emails. Vous pouvez l'adapter pour vous baser sur d'autres indicateurs propres aux diffusions :
- Meilleur taux de clic publicitaire :
[indicators/@recipientClickRatio]
, - Meilleure réactivité (email ouvert et clics dans le message) :
[indicators/@reactivity]
, - Taux de plainte le plus bas :
[indicators/@refusedRatio]
(mettre la valeur « false » pour l’attribut sortDesc), - Meilleur taux de conversion :
[indicators/@transactionRatio]
; - Nombre de pages web visitées suite à la réception d'un message :
[indicators/@totalWebPage]
, - Taux de désinscription le plus bas :
[indicators/@optOutRatio]
, - Montant des transactions :
[indicators/@amount]
.
Vous pouvez maintenant définir la diffusion finale. En savoir plus.