IT & Engineering
Faire le lien entre vos données clients et vos données email
L’une des dernières expressions à la mode dans le monde de la tech est le « big data ». Une fois que vous publiez quelque chose sur Internet, vous aurez (avec un peu de chance) l’embarras du choix en matière de données : le plus difficile est de relier des données provenant de sources disparates pour en tirer des informations exploitables. C’est à cela que le « big data » est censé servir… du moins, je crois.
Dans cet article, nous allons vous présenter un moyen simple de relier vos données email à votre base de données clients, afin d’en tirer des conclusions pertinentes. Je ne sais pas si c’est assez complexe pour entrer dans la catégorie du big data… c’est peut-être du small data. Quoi qu’il en soit, j’espère que cela vous sera utile.

Relier l’email aux données de statistiques web ne suffit pas toujours
L’un des moyens les plus simples de relier vos données email aux données clients est d’utiliser des liens générés par le fournisseur de statistiques de votre site Web. Il est assez simple de générer et d’utiliser dans vos emails des chaînes de requête comme celle ci-dessous, provenant de fournisseurs comme Google Analytics :
http://www.mystartup.com/?utm_source=newsletter&utm_medium=email&utm_campaign=offer1
Ils proposent même de pratiques générateurs d’URL pour faciliter le processus. Lorsqu’un client clique sur cette URL, votre fournisseur de statistiques web peut vous indiquer le nombre d’inscriptions générées par votre email.
Cependant, il y a une multitude d’éléments que vous souhaitez pouvoir suivre concernant vos clients, au-delà de leur simple inscription. Par exemple, si vous proposez un service basé sur une API pour l’équipe de développement, comme Stripe ou Urban Airship, vous voudrez peut-être savoir si votre newsletter a augmenté la moyenne d’appels d’API par jour trois mois après leur inscription. Ces données doivent être reliées à votre base de données clients ou applicative, et non isolées dans un espace de stockage de statistiques web distinct (les statistiques web n’étant pas conçues pour suivre les appels d’API). Les chaînes de requête seules ne sont donc d’aucune utilité.
Il existe des solutions de contournement un peu complexes pour relier les campagnes aux utilisateurs, ainsi que d’excellents services comme Kiss Metrics et Mixpanel pour vous y aider. Nous vous recommandons vivement d’essayer ces services si vous prenez les statistiques web au sérieux.
Un autre moyen simple d’associer votre activité email à une personne dans votre base de données clients consiste à utiliser les webhooks et les variables personnalisées de Mailgun.
Utiliser des variables d’email personnalisées pour relier des données comportementales granulaires
Chaque fois qu’un utilisateur ouvre un email, clique sur un lien ou s’en désinscrit, Mailgun peut vous en informer via des webhooks. Un webhook est tout simplement une requête HTTP POST envoyée à votre application à la suite d’une action donnée. Ces actions peuvent être configurées dans le panneau de contrôle Mailgun.
Imaginons que vous souhaitiez suivre quels clients ont cliqué sur une offre spécifique dans votre newsletter mensuelle, afin de mesurer si cette newsletter a entraîné une augmentation du nombre moyen d’appels d’API, par client, après trois mois.
Avec la prolifération des services basés sur une API et payés à l’usage, relier l’email marketing directement à l’utilisation réelle est un vrai problème, et les personnes capables de le résoudre pourraient gagner beaucoup d’argent.
Pour mesurer cela, vous devez savoir quels utilisateurs ont cliqué sur quelle offre (Mailgun peut vous l’indiquer) ET relier ces informations à la base de données où vous stockez les données relatives à l’utilisation de l’API de chaque client. Voici comment procéder.
Mise en place de webhooks
Vous devez d’abord configurer Mailgun pour qu’il vous transmette des informations lorsqu’un utilisateur clique sur un lien dans l’un de vos emails. Vous pouvez le faire dans le panneau de contrôle Mailgun, sous l’onglet Suivi :
Lorsque Mailgun envoie le webhook via POST, vous recevez des données sur l’événement de clic, notamment le destinataire de l’email, l’URL cliquée et un horodatage (consultez la documentation pour obtenir la liste complète des paramètres du webhook de clic). Dans certains cas, il suffit d’utiliser le « destinataire » (recipient) comme valeur unique pour associer cette activité email à votre base de données clients et enregistrer quel client a cliqué sur votre email. Mais ce n’est pas toujours le cas. Pour les modèles de données complexes, par exemple lorsqu’un client possède plusieurs comptes ou que plusieurs clients partagent le même compte, vous devrez spécifier un identifiant unique plus détaillé.
Les variables personnalisées à la rescousse !
Configurer des variables personnalisées
Mailgun vous donne la possibilité de spécifier des variables personnalisées pour chaque email que vous envoyez. Considérez ces variables comme des métadonnées uniques, au niveau du message. Lorsqu’un utilisateur clique sur votre email, ces variables personnalisées vous sont transmises dans le webhook, avec les autres paramètres.
Dans cet exemple, nous voulons associer un destinataire d’email à son compte en utilisant le numéro de compte. De plus, nous souhaitons transmettre l’ ID de la campagne d’emailing, afin de pouvoir tester quelle campagne a été la plus efficace pour augmenter l’utilisation moyenne de l’API.
Custom-Variables: {"name": "Awesome Customer", "account_number": "12345", "email_campaign_id": "30 Day Follow-up"}rn
Déployer votre email
Avec un peu de chance, votre entreprise est florissante et vous avez une vaste clientèle. Si votre entreprise connaît un tel succès, c’est probablement parce que vous vous appuyez sur les données et que vous effectuez en permanence des tests A/B sur différentes campagnes. Cela peut générer un grand nombre de permutations.
Aucun problème : voici comment déployer votre email à l’aide d’un petit script très simple qui regroupe en lots le destinataire et ses données personnalisées :
def postBatchToMailgun(customers):rn batchJson = {} # Create empty Dictionaryrn toField = [] # Create empty Listrnrn for customer in customers:rn temp = {} # Create temporary Dictionaryrn temp['accountNumber'] = customer["id"]rn temp['name'] = customer["name"]rn temp['emailCampaignId'] = "30 Day Follow-up"rnrn # Assign dictionary of attributes to email address dictionary itemrn batchJson[customer["email"]] = temprnrn # Populate list with email addresses for To fieldrn toField.append(customer["email"])rnrn # Convert Dictionary of attributes to JSONrn batchJson = json.dumps(batchJson)rnrn return requests.post(rn "https://api.mailgun.net/v2/samples.mailgun.org/messages",rn auth=("api", "key-3ax6xnjp29jd6fds4gc373sgvjxteol0"),rn data={rn "from": "Pro User <me@samples.mailgun.org>",rn "to": toField,rn "subject": "Hi %recipient.name%, Check This Out!",rn "html": "Promo HTML Here",rn "v:Customer-Account-Number": "%recipient.accountNumber%", # In production, hash this to avoid exposing sensitive datarn "v:Email-Campaign-Id": "%recipient.emailCampaignId%",rn "recipient-variables": batchJsonrn }rn )rn
Dans l’exemple de code ci-dessus, la méthode postBatchToMailgun() n’attend pas plus de 1 000 lignes de votre base de données. Vous devrez déterminer le nombre de boucles nécessaires pour itérer dans votre base de données clients, puis transmettre le tuple « customers » à la méthode postBatchToMailgun().
Vous trouverez ci-dessous un exemple d’itération dans votre base de données clients.
import mathrnimport MySQLdbrnrn# Connect to MySQLrndb = MySQLdb.connect(rn host="localhost",rn user="myusername", # your usernamern passwd="topsecret", # your passwordrn db="campaign" # name of the databasern)rnrncursor = db.cursor(MySQLdb.cursors.DictCursor)rnrn# Get total number of recordsrncursor.execute("""SELECT count(*) as total FROM campaign""")rncount = cursor.fetchone()rntotal = count['total']rnrn# Calculate iterations (1000 records per batch)rnif total < 1000:rn iterations = 1rnelse:rn iterations = int(math.ceil(total / 1000))rnrni = 0rnwhile i < iterations:rn cursor.execute("""SELECT id, name, email FROM campaign LIMIT 1000""")rn customers = cursor.fetchall()rnrn # Send batch to Mailgunrn postBatchToMailgun(customers)rnrn # Note: Here you need to update your LIMIT with OFFSET or use WHERE to fetch the next batchrn # Otherwise, you’ll keep sending the same 1000 records each iteration.rn rn i += 1rn
Configurer votre application pour recevoir les webhooks
Une fois que vous avez envoyé des emails à votre clientèle et que celle-ci commence à ouvrir vos superbes messages et à cliquer dessus, vous devrez récupérer les paramètres envoyés avec les webhooks. Voici une petite application Flask qui vous montre les bases :
from flask import Flask, requestrnrnapp = Flask(__name__)rnrn@app.route('/mailgun-tracking', methods=['GET', 'POST'])rndef tracking():rn # Access some of the email parsed valuesrn request.form['Email-Campaign-Id']rn request.form['Customer-Account-Number']rn request.form['recipient']rn request.form['event']rnrn # Extended parametersrn request.form['city']rn request.form['region']rn request.form['country']rn request.form['ip']rn request.form['device-type']rn request.form['user-agent']rn request.form['client-os']rn request.form['client-type']rnrn return "Ok"rnrnif __name__ == '__main__':rn app.run(host='50.56.174.200', port=100, debug=True)rn
Cet exemple dresse la liste de quelques paramètres susceptibles de vous intéresser. Vous trouverez une liste complète des paramètres de webhooks dans notre documentation. Il suffit d’ajouter ceux que vous souhaitez.
Associer les données email aux données clients
Une fois les données du webhook transmises à l’application, il s’agit simplement d’associer l’email au client en fonction de la variable account_number, et d’ajouter l’ID de la campagne au profil du client.
Vous avez désormais la possibilité de mesurer l’effet à long terme de vos campagnes d’emailing sans avoir à vous fier aux cookies persistants et à d’autres méthodes de suivi web moins sophistiquées.
Bons envois !
L’équipe Mailgun