Show Menu
SUJETS×

A/B testing

Vous disposez de plusieurs contenus pour une diffusion par email et vous souhaitez vérifier quelle version aura le plus d'impact sur la population visée. Vous allez donc envoyer les différentes versions à une partie de vos destinataires, choisir celle qui aura eu le plus de succès et l'envoyer au reste de vos destinataires.
Dans ce cas pratique, vous allez comparer deux contenus de diffusion par email via un workflow de ciblage. Le message et le texte sont identiques dans les deux diffusions. Seules les présentations diffèrent.
La population ciblée est divisée en trois : deux groupes test et la population restante. Une version différente de la diffusion est envoyée à chaque groupe test. Après l'envoi, un délai d'attente de cinq jours est observé afin de récolter les résultats des meilleurs taux d'ouverture. Puis le contenu de la diffusion qui a obtenu le meilleur taux est récupéré par un script et envoyé à la population qui n'a pas servi de groupe test.
Il est à noter que le critère qui doit déterminer la diffusion à retenir peut varier selon vos besoins. Il peut s'agir du taux d'ouverture, du taux de clics, du taux d'inscription, de la réactivité etc.
D'autre part, le test décrit dans ce cas pratique se limite à deux diffusions, mais vous pouvez tester autant de versions que nécessaire. Il suffit d'ajouter des activités supplémentaires dans votre workflow.
Pour créer votre test A/B, vous allez suivre les étapes suivantes :

Etape 1 : créer un workflow de ciblage

Vous devez créer votre workflow dans l'onglet Ciblages et Workflows d'une opération. Il est composé d'une activité Requête , d'une activité Partage à laquelle sont reliées deux activités Diffusions e-mail , une activité Attente , d'une activité Code JavaScript et une activité Diffusion .
  1. Créez une opération si elle n'existe pas déjà, (voir à ce sujet cette section ).
  2. Positionnez-vous dans l'onglet Ciblages et Workflows .
  3. Modifiez le libellé du workflow déjà existant ou cliquez sur Ajouter pour en créer un (voir à ce sujet cette section ).
  4. A l'aide de la souris, faites glisser les différentes activités dans la fenêtre du workflow, soit une activité Requête (onglet Ciblage ), une activité Partage (onglet Ciblage ), deux activités Diffusion e-mail (onglet Diffusions ), une activité Attente (onglet Ordonnancement ), une activité Code JavaScript (onglet Action ) et une activité Diffusion (onglet Actions ).

Etape 2 : paramétrer les échantillons de population

Paramétrage de l'activité Requête

  • Double-cliquez sur l'activité Requête .
  • Cliquez sur le lien Editer la requête et sélectionnez les destinataires que vous souhaitez cibler.
  • Reliez l'activité Requête à l'activité Partage .

Paramétrage de l'activité Partage

Cette activité permet de créer plusieurs populations : celle qui reçoit la diffusion A, celle qui reçoit la diffusion B et la population restante. D'autre part, l'utilisation du tirage aléatoire permet de ne cibler qu'une partie de la population de chacune des diffusions.
  1. Création de la population A :
    • Double-cliquez sur l'activité Partage .
    • Dans l'onglet existant, modifiez le libellé pour désigner la population A.
    • Sélectionnez l'option Limiter les enregistrements sélectionnés .
    • Cliquez sur le lien Editer , sélectionnez Activer le tirage aléatoire , puis cliquez sur Suivant .
    • Configurez la limite à 10%, puis cliquez sur Terminer .
  2. Création de la population B :
    • Cliquez sur Ajouter pour créer un nouvel onglet destiné à la population B.
    • Limitez la population à 10% comme fait précédemment.
  3. Création de la population restante :
    • Positionnez-vous dans l'onglet Général .
    • Sélectionnez Générer le complémentaire .
    • Modifiez le libellé pour désigner la population qui ne comprend ni la population A, ni la B et cliquez sur OK pour fermer l'activité.

Etape 3 : créer deux modèles de diffusions

Vous allez à présent créer deux modèles de diffusions. Chaque modèle sera référencé dans une activité Diffusion-email rattachée à l'activité Partage . Reportez-vous à cette section pour plus d'informations.
  1. Positionnez-vous dans le dossier Ressources > Modèle de diffusion .
  2. Dupliquez le modèle de diffusion Email .
  3. Créez le contenu destiné à votre diffusion A.
  4. Répétez les mêmes étapes pour créer un modèle destiné à la diffusion B.

Etape 4 : paramétrer les diffusions dans le workflow

L’étape suivante consiste à configurer les diffusions. Elles sont destinées aux trois populations créées au cours de l'étape précédente : Etape 2 : paramétrer les échantillons de population . Les deux premières diffusions vous permettent d'envoyer des contenus différents à la population A et B. La troisième diffusion est destinée à la population qui n'a reçu ni A ni B. Son contenu sera calculé par un script et sera identique à A ou B, selon celle qui a obtenu le taux d’ouverture le plus élevé. Il est nécessaire de configurer une période d'attente pour la troisième diffusion, afin de connaître le résultat des diffusions A et B. C’est pourquoi la troisième diffusion comprend une activité Attente .
  1. Depuis l'activité Partage , rattachez la transition destinée à la population A à l'une des diffusions e-mail déjà présentes dans le workflow.
  2. Double-cliquez sur la diffusion pour l'ouvrir.
  3. A l'aide de la liste déroulante, sélectionnez le modèle de la diffusion A.
  4. Cliquez sur Continuer pour visualiser la diffusion puis enregistrez-la.
  5. Rattachez la transition de l'activité Partage destiné à la population B à la seconde diffusion e-mail.
  6. Ouvrez la diffusion et sélectionnez le modèle de la diffusion B et enregistrez la diffusion.
  7. Reliez la transition destinée à la population restante à l'activité Attente .
  8. Ouvrez l'activité Attente et configurez le délai à 5 jours.
  9. Reliez l'activité Attente à l'activité Code JavaScript .

Etape 5 : créer le script

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. Voir à ce sujet la section Mise en œuvre .
 // 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, voir Détails du script .

Mise en oeuvre

  1. Ouvrez votre activité Code JavaScript ,
  2. Copiez le script proposé dans Exemple de script dans la fenêtre Code JavaScript .
  3. Dans le champ Libellé , entrez le nom du script, soit
    <%= vars.deliveryId %>
    
    
  4. Fermez l'activité Code JavaScript .
  5. 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] .

Etape 6 : définir la diffusion finale

Une fois que le script pour sélectionner le gagnant du test A/B a été créé, vous pouvez définir les paramètres de la diffusion finale.
  1. Reliez l'activité Code JavaScript à l'activité Diffusion restante.
  2. Ouvrez l'activité Diffusion .
  3. Décochez l'option Générer une transition sortante pour terminer le workflow avec cette activité.
  4. Conservez les valeurs par défaut des autres options.
En préparant la diffusion spécifiée dans la transition (définie via l'activité Code Javascript ), vous pourrez alors la valider et démarrer l'envoi, comme décrit à l'étape suivante.

Etape 7 : lancer le workflow

  1. Cliquez sur Démarrer le workflow.
  2. Effectuez la validation de la cible et du contenu des diffusions A et B depuis le tableau de bord de l'opération.
  3. Confirmez l'envoi des diffusions.
  4. Laissez passer le délai d'attente de 5 jours pour savoir quel contenu a été calculé d'après les résultats d'ouverture des diffusions.
    Dans notre exemple, c'est le modèle A qui a été retenu.
  5. Lorsque le contenu de la troisième diffusion est déterminé, procédez à la validation de la cible et du contenu.

Etape 8 : analyser le résultat

Lorsque les diffusions test ont été envoyées, vous avez la possibilité de vérifier à quel(s) destinataire(s) elles ont été envoyées et si elles ont été ouvertes.
  • Pour savoir quel destinataire a été ciblé, ouvrez une des diffusions depuis le tableau de bord de l'opération et cliquez sur l'onglet Diffusion .
  • Pour savoir si la diffusion a été ouverte, positionnez-vous dans l'onglet Tracking .
  • Comparez avec l'autre diffusion.
Dans notre exemple, c'est la diffusion A qui obtient le meilleur taux d'ouverture par rapport à la diffusion B. C'est donc le contenu A qui sera utilisé pour la diffusion finale.