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 :
Name | Description | Type | Mandatory parameter |
---|---|---|---|
name | Nom de la campagne (255 caractères maximum) | String of characters | Obligatory |
subject | Objet du message par défaut s'il n'est pas défini dans les segments | String of characters | Obligatory |
type | Type de message | ECampaignType | Obligatory |
hasTextMessage | Indique si le message contient du contenu texte en plus du contenu HTML | Boolean | false par défaut |
idConfiguration | Identifiant de la configuration d'envoi | Integer | Obligatory |
idTestTarget | Identifiant de la cible utilisée pour les tests BAT | Integer | Obligatory |
sendingSpeed | Vitesse d'envoi entre 1 et 10000 emails par minute | Integer | Obligatory |
idThematic | Identifiant de la thématique associée à la campagnen | Integer | None |
isAbTest | Indique s'il s'agit de tests AB | Boolean | false par défaut |
isOneshot | Indique s'il s'agit d'une campagne oneshot | Boolean | false par défaut |
isAutomation | Indique s'il s'agit d'une campagne d'automatisation | Boolean | Deprecated |
isArchive | Indique si la campagne a été supprimée | Boolean | false par défaut |
mode | Mode de la campagne. Note : ne peut être modifié après le premier envoi en mode simple | ECampaignMode | Obligatory |
notifyHighDelivrability | Indique s'il faut cibler en premier lieu les utilisateurs les plus réactifs afin d'optimiser les taux d'ouverture | Boolean | true par défaut |
responseAlias | Alias de réponse (remplace celui de la configuration d'envoi) | String of characters | None |
senderAlias | Alias d'expéditeur (remplace celui de la configuration d'envoi) | String of characters | None |
useListUnsubscribeHeader | Indique 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 spam | Boolean | true par défaut |
idCommonAffiliatePlatform | Identifiant de la plateforme d'affiliation Cf. api CommonAffiliatePlatform pour avoir la liste des ids. | Integer | None |
idCommonAdvertiser | Identifiant de l'annonceur Cf. api CommonAdvertisers pour avoir la liste des id. | Integer | None |
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.
Nom | Valeur | Description |
---|---|---|
Unknown | -1 | Mode inconnu. |
Simple | 0 | Mode simple |
Dynamic | 1 | Mode dynamique |
External | 2 | Mode 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.
Nom | Valeur | Description |
---|---|---|
Unknown | 0 | Type inconnu |
Newsletter | 1 | La campagne est de type newsletter (interne) |
Dedicated | 2 | La campagne est de type dédié (offre partenaire externe) |
Other | 3 | Le type de la campagne n'est pas spécifié (interne) |
ExternalGame | 4 | La campagne est de type jeu partenaire (externe) |
InternalGame | 5 | La campagne est de type jeu partenaire (interne) |
Topic | 6 | La campagne est de type dossier (interne) |
Rent | 7 | La campagne est de type location (externe) |
Transac | 8 | La 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 :
Nom | Description | Type |
---|---|---|
data | Résultat de l'appel au webservice | Campaign |
error | Message d'erreur en cas d'échec | Chaine de caractères |
success | Indique le succès ou non de l'appel au webservice | Booléen |
typeName | Type de données contenues dans le champ Data | Chaine 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.
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.
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 :
- un envoi instantané avec un POST sur /api/{idsite}/sendings/play
- un ou plusieurs envois futurs avec un POST sur /api/{idsite}/sendings/{idCampaign}/Schedule
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.