Aller au contenu principal

Création de campagne

Les campagnes dans mindbaz

Dans Mindbaz, vous pouvez créer 2 types de campagne:

  • Les campagnes simple
  • Les campagnes dynamiques

Il est important de bien comprendre ce concept avant d’aller plus loin dans la création des campagnes.

Une campagne simple n’est pas modifiable après le premier envoi. Elle n’est généralement programmée qu’une seule fois. Ce type de campagne est souvent utilisé pour envoyer du contenu publicitaire.

A l'opposé, une campagne dynamique est modifiable après le premier envoi. Elle peut être programmée à plusieurs reprises facilement avec un contenu différent. Concrètement, dès qu’un envoi d’une campagne dynamique est fait, une “photo” de la campagne est faite sous forme de campagne simple. Et c’est cette photo qui est envoyée. De cette manière, la campagne reste modifiable pour le prochain envoi.

Pour en savoir plus sur la création de campagne depuis l’interface, cliquez ici.

Les étapes à suivre avant de créer sa campagne

1. Importer ses abonnés

Votre base dans Mindbaz doit être à jour à la fois pour shooter les nouveaux inscrits et ne pas solliciter des désabonnés. Pour cela vous pouvez connecter votre formulaire d’abonnement à l’api Subscribers ou utiliser l’api Imports.

Vous trouverez des articles de notre Faq sur ce sujet ici.

2. Choisir ou créer une configuration d’envoi

Une configuration d'envoi contient tous les paramètres généraux réutilisables d'une campagne à l'autre, à savoir: l'email expéditeur, l'email de réponse, les alias et les entêtes HTML/TXT et pied de page HTML/TXT.
Vous n'aurez besoin que de son id pour la création de la campagne (idConfiguration).

Pour créer une nouvelle configuration d’envoi, cliquez ici.

3. Avoir à disposition une cible BAT

Une cible BAT est utilisée pour envoyer vos tests avant l’envoi définitif de la campagne. L’id de cible BAT est un paramètre obligatoire à la création de campagne (idTestTarget) et vous devez en créer une si vous n’en avez pas à disposition. Le plus simple est d'utiliser l’interface mais vous pouvez le faire également par api.

La création d’une cible est expliquée ici.

Il faut juste bien veiller à mettre le paramètre isTestTarget à true (sinon vos envois tests ne partiront pas). Le filtre à utiliser est un "filtre par champ" avec comme entrée :

"filters": [ 
{
"idField": 1,
"operator": 3,
"value": "emailBat1@domain.com;emailBat2@domain.com"
}]

Ce qui correspond à : email (id_field=1) equals (operator = 3) emailBat1@domain.com OU emailBat2@domain.com

4.Créer le ciblage de la campagne à l’avance

Votre campagne a besoin d’une ou plusieurs cibles pour être programmée. C’est ce ciblage qui va définir la liste des emails qui recevront la campagne. Les cibles utilisées dans une campagne sont exécutées au moment de l’envoi mais vous pouvez faire des comptages à tout moment pour estimer leur volume.

Mindbaz offre un système complet de ciblage qui répond aux cas d’usage les plus fréquents. Vous pouvez créer vos cibles dans l’interface ou avec api Targets. Cliquez ici pour plus d’informations sur l’api targets.

Vous pouvez aussi faire votre ciblage en dehors de Mindbaz et donner votre résultat de cible sous forme d’un fichier contenant la liste des id ou emails à utiliser. Pour cela, il faut utiliser une cible avec un filtre par fichier.

Les étapes pour créer sa campagne

1. Créer l’objet Campaign

Pour créer votre campagne, vous devez faire un appel POST /api/{idsite}/campaigns.

Les paramètres importants à utiliser pour créer votre campagne sont :

  • objet “parameters” : objet de type CampaignParameters qui contient tous les paramètres pour configurer votre campagne.
  • htmlContent : contenu HTML du message
  • textContent : contenu TEXT du message

Le type CampaignParameters est détaillé ci-dessous :

NameDescriptionTypeMandatory parameter
nameNom de la campagne (255 caractères maximum)String of charactersObligatory
subjectObjet du message par défaut s'il n'est pas défini dans les segmentsString of charactersObligatory
typeType de messageECampaignTypeObligatory
hasTextMessageIndique si le message contient du contenu texte en plus du contenu HTMLBooleanfalse par défaut
idConfigurationIdentifiant de la configuration d'envoiIntegerObligatory
idTestTargetIdentifiant de la cible utilisée pour les tests BATIntegerObligatory
sendingSpeed ​​Vitesse d'envoi entre 1 et 10000 emails par minuteIntegerObligatory
idThematicIdentifiant de la thématique associée à la campagnenIntegerNone
isAbTestIndique s'il s'agit de tests ABBooleanfalse par défaut
isOneshotIndique s'il s'agit d'une campagne oneshotBooleanfalse par défaut
isAutomationIndique s'il s'agit d'une campagne d'automatisationBooleanDeprecated
isArchiveIndique si la campagne a été suppriméeBooleanfalse par défaut
modeMode de la campagne. Note : ne peut être modifié après le premier envoi en mode simpleECampaignModeObligatory
notifyHighDelivrabilityIndique s'il faut cibler en premier lieu les utilisateurs les plus réactifs afin d'optimiser les taux d'ouvertureBooleantrue par défaut
responseAlias ​​Alias de réponse (remplace celui de la configuration d'envoi)String of charactersNone
senderAlias ​​Alias d'expéditeur (remplace celui de la configuration d'envoi)String of charactersNone
useListUnsubscribeHeaderIndique si la campagne utilise l'en-tête list-unsubscribe (voir rfc2369 pour plus d'informations) pour permettre le désabonnement au lieu de la déclaration de spamBooleantrue par défaut
idCommonAffiliatePlatform Identifiant de la plateforme d'affiliation
Cf. api CommonAffiliatePlatform pour avoir la liste des ids.
IntegerNone
idCommonAdvertiser Identifiant de l'annonceur
Cf. api CommonAdvertisers pour avoir la liste des id.
IntegerNone
attention

Afin de pouvoir créer la campagne, certains paramètres sont obligatoires, notamment le nom de la campagne, son mode (paramètre décrit-ci dessous), son type (ci-dessous également), l'objet du message par défaut, la vitesse d'envoi et enfin le configuration d'envoi et la cible test.

ECampaignMode représente le mode d'une campagne.

NomValeurDescription
Unknown-1Mode inconnu.
Simple0Mode simple
Dynamic1Mode dynamique
External2Mode externe (obsolete)

Pour la création d'une campagne simple via l'API, il faut bien renseigner le mode simple (valeur 0).
Pour la création d'une campagne dynamique via l'API, il faut bien renseigner le mode dynamique (valeur 1). Une campagne dynamique est plutot utilisé pour les campagnes de fidélisation alors qu'une campagne simple est plus faite pour les campagnes d'acquisition.

ECampaignType représente le type d'une campagne.

NomValeurDescription
Unknown0Type inconnu
Newsletter1La campagne est de type newsletter (interne)
Dedicated2La campagne est de type dédié (offre partenaire externe)
Other3Le type de la campagne n'est pas spécifié (interne)
ExternalGame4La campagne est de type jeu partenaire (externe)
InternalGame5La campagne est de type jeu partenaire (interne)
Topic6La campagne est de type dossier (interne)
Rent7La campagne est de type location (externe)
Transac8La campagne est de type transactionnelle

Les autres paramètres peuvent être renseignés mais ne sont pas obligatoires et peuvent être précisés par la suite via une méthode de modification de la campagne.

La valeur de retour de la requête est la suivante :

NomDescriptionType
dataRésultat de l'appel au webserviceCampaign
errorMessage d'erreur en cas d'échecChaine de caractères
successIndique le succès ou non de l'appel au webserviceBooléen
typeNameType de données contenues dans le champ DataChaine de caractères

Data est un objet contenant les informations de la campagne créée.

Exemple

Exemple d'une création de campagne sur la base d'id 102: https://api.mindbaz.com/api/102/campaigns

Body :

{
"parameters": {
"idConfiguration": 1,
"idTestTarget": 7037,
"mode": 0,
"name": "test API",
"sendingSpeed": 100,
"subject": "Ceci est un test",
"type": 2
},
"htmlContent": "<html><body>Hello [[FIELD.15]] [[FIELD.14]]</body></html>"
}

Valeur de retour

{
"success": true,
"data": {
"id": 11018,
"parameters": {
"idCommonAffiliatePlatform": null,
"idCommonAdvertiser": null,
"hasTextMessage": false,
"idConfiguration": 1,
"idTestTarget": 7037,
"idThematic": null,
"isAbTest": false,
"isOneshot": false,
"isAutomation": false,
"isArchive": false,
"mode": 0,
"name": "test API",
"notifyHighDelivrability": true,
"responseAlias": null,
"senderAlias": null,
"sendingSpeed": 100,
"subject": "ceci est un test",
"type": 2,
"useListUnsubscribeHeader": true
},
"htmlContent": "<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<body>Hello [[FIELD.15]] [[FIELD.14]]</body>
</html>
",
"textContent": "",
"creationDate": "2021-08-19T17:15:01.1710765+02:00",
"lastUpdateDate": "2021-08-19T17:15:01.1710765+02:00",
"schedulingInfos": {
"calendarDates": "",
"type": null,
"state": null
},
"authorId": null,
"authorName": null,
"idCampDynamic": -2147483648
},
"error": null,
"typeName": "Campaign"
}

Vous devez bien récupérer l’id de la campagne créée (data->id) pour le réutiliser dans les autres appels.

Vous remarquerez des tags [[FIELD]] dans le code HTML de l’exemple. Ils sont utilisés pour rendre dynamique le contenu du message et seront remplacés par la valeur des champs de l’abonné (ici le prénom et le nom). Pour plus d’informations, cliquez ici.

2. Configurer la population ciblée par la campagne

Vous avez créé un objet campaign, mais vous n’avez pas encore défini à qui sera envoyé votre campagne. Pour cela vous devez créer un ou plusieurs segments dans votre campagne.

Un segment est défini par :

  • un numéro (l'ordre des segments est important)
  • un id de cible
  • volume (nombre ou pourcentage - 100% par défaut)
  • un mode aléatoire (oui/non)
  • un objet (optionnel)
  • une liste de pubs = une pub par encart publicitaire [[ENCART.X]] (optionnel)
  • exclure le segment de l’envoi (oui/non)

Si une adresse email existe dans plusieurs segments, une déduplication automatique est faite en priorisant le premier segment. Prenons l’exemple d’une campagne avec 2 segments: un premier segment avec une cible sur les actifs 6 mois et un 2e segment avec tous mes abonnés. Si je suis un “actif 6 mois”, mon email sera présent dans les 2 cibles. Or je ne dois recevoir qu’une fois la campagne. La déduplication me sélectionnera automatiquement dans le premier segment et je serai retiré du 2e. C’est pourquoi le volume d’un segment n’est pas forcément égal au volume de sa cible.

Cette segmentation peut être utilisée pour différentes raisons:

  • comparer les stats de chaque segment
  • exclure un segment (ex : exclure les @ qui ont déjà reçu un envoi)
  • test A/B en changeant l'objet
  • afficher des publicités différentes entre 2 segments dans le même encart. Ex : afficher une pub pour un segment homme et une autre pour un 2e segment femme

Si vous n'utilisez pas la segmentation, vous n'aurez besoin que d'un seul segment et donc que d'une cible.

Campagne avec un seul segment

Si vous ne faites pas de segmentation, votre campagne n'aura qu'un segment. Par défaut, à la création de la campagne, un segment N°1 est créé automatiquement avec comme cible votre cible bat.
Il ne vous reste plus qu'à modifier l'id de la cible dans le segment n°1. Pour cela, faire un PUT sur /api/{idsite}/segments/{idCampaign}/{segmentPosition} en spécifiant bien le bon idCampaign et idTarget dans le body.

Exemple php:

//def segment 1
$fields = array(
"name" => "tous les abonnés",
"idTarget" => $targetId,
"isExcluded" => false,
"isRandom" => false,
"percent" => 100,
"mailobject" => null
);
$response = api_call($service_url.'/api/'.$dbId.'/segments/'.$campaignId.'/1', $access_token, HttpMethod::PUT,$fields);
echo var_dump($response);

Campagne avec plusieurs segments

Si vous voulez créer plusieurs segments, il vous faut faire l'étape précédente pour le 1er segment et en créer d'autres en faisant un POST sur /api/{idsite}/segments/{idCampaign}.

Voici un exemple en php qui définit 2 segments sur la même cible. Le premier segment prend 500@ en aléatoire de la cible pour tester un objet différent de celui de la campagne. Le 2e segment prend 100% de la même cible pour inclure le reste des adresses dans la campagne. Le 2e segment n’a pas de mailObject défini et utilisera donc l’objet de la campagne.

Exemple php :

//def segment 1 sur 500@ pour tester un objet different de la campagne
$fields = array(
"name" => "segment1",
"idTarget" => $targetId,
"isExcluded" => false,
"isRandom" => true,
"fixedValues" => 500,
"mailobject" => "mon objet à tester"
);
$response = api_call($service_url . '/api/'.$dbId.'/segments/'.$campaignId.'/1',$access_token, HttpMethod::PUT,$fields);

//ajout 2e segment pour ajouter le reste de la cible
$fields = array(
"name" => "segment2 (le reste)",
"idTarget" => $targetId,
"isExcluded" => false,
"isRandom" => false,
"percent" => 100,
"mailobject" => null
);

$response = api_call($service_url . '/api/'.$dbId.'/segments/'.$campaignId,$access_token, HttpMethod::POST,$fields);

3.Tracker les liens

La dernière étape du setup de votre campagne consiste à tracker les liens. Tous les clics sur les liens trackés seront enregistrés pour vos envois et seront accessibles dans les stats. Pour tracker facilement tous les liens, vous pouvez faire un POST sur /api/{idsite}/trackedUrls/trackAll. Cette méthode parse le html de la campagne et track automatiquement toutes les urls trouvées.

Les liens contenus dans des pubs sont trackés en fonction des paramètres de tracking de la publicité. Les liens des tags [[URL]] sont trackés automatiquement en fonction du paramètre de tracking automatique (ex url de désabo).

Si vous souhaitez tracker manuellement les urls, il faut faire un GET sur /api/{idsite}/trackedUrls/{idCampaign}/all qui vous donne la liste des urls et ensuite faire un POST sur /api/{idsite}/trackedUrls/{idCampaign} pour chacune.

Remarque

si vous modifiez le contenu HTML de votre campagne, il faudra refaire le tracking des liens.

4. Vérifier sa campagne

Maintenant votre campagne prête, certaines vérifications s'imposent.

Compter les segments

Vous pouvez compter vos segments afin de vérifier si certains ne sont pas vides suite à la déduplication des emails en commun entre les segments :
Pour compter les abonnés dans votre campagne, faire un GET sur /api/{idsite}/segments/{idCampaign}/count

Tester le spamscore

Faire un POST sur /api/{idsite}/spamScores sur chaque segment pour calculer le score antispam SpamAssassin et le score VadeRetro.

Remarque

Afin de générer les tags de perso dans le message, un id d’abonné vous est demandé.

Envoyer des bat

Si vous voulez contrôler visuellement votre message avant son envoi, vous pouvez envoyer un BAT. Pour cela, faire un POST sur /api/{idsite}/sendings/sendBAT. Un BAT sera envoyé pour chaque segment (si vous en avez plusieurs).
Si vous voulez choisir le segment à tester, utilisez plutot /api/{idsite}/sendings/{idCampaign}/sendSegmentBAT

5.Programmer l’envoi de la campagne

Vous pouvez programmer votre campagne pour :

Suivre l'avancement de sa campagne

Pour connaître l'état de programmation de votre campagne, il faut faire un GET sur votre campagne : /api/{idsite}/campaigns/{idCampaign}.
Cette api retourne en plus des informations de campagne, un paramètre data->schedulingInfos->state qui vous indique l'état de la programmation : "Programmed", "ProgrammedPaused", "ProgrammedCanceled", "Sending", "SendingPaused", "SendingStopped", "SendingFinished", "SendingFinishedWithErrors", "Error", "None", "WaitingSending".

Vous pouvez également agir sur votre programmation (state=”Programmed”) en la mettant en pause ou en la stoppant. Si l’envoi a déjà démarré (state = “Sending”), vous pouvez aussi effectuer un Pause ou un Stop.