Bonnes pratiques emailing
Les webhooks sont un moyen puissant de recevoir des notifications en temps réel lorsque des événements se produisent dans vos campagnes d’emailing. Ce guide complet vous apprendra ce que sont les webhooks, comment ils fonctionnent avec les systèmes de messagerie, et comment mettre en œuvre la fonctionnalité webhook de Mailjet pour suivre en temps réel les événements de messagerie tels que les ouvertures, les clics, les rebonds et plus encore.
À la fin de ce guide, vous saurez comment configurer et optimiser les points de terminaison des webhooks, gérer les différents types d’événements et mettre en œuvre les bonnes pratiques pour un traitement fiable et évolutif des événements de messagerie.
Un webhook est un moyen simple pour un système de notifier à un autre que « quelque chose vient de se produire ». Il s’agit d’une requête HTTP POST envoyée à une URL que vous fournissez (votre point de terminaison « webhook ») et qui contient une charge utile JSON décrivant l’événement. Contrairement aux API que vous interrogez selon un calendrier, les webhooks sont pilotés par des événements et ne transmettent des données que lorsqu’il y a quelque chose de nouveau à signaler.
Les webhooks sont la version Internet d’un appel téléphonique : au lieu de vérifier à plusieurs reprises si quelque chose s’est produit, le système vous appelle immédiatement lorsque c’est le cas.
Les webhooks offrent plusieurs avantages pour l’email marketing et les flux de travail des emails transactionnels :
Comprendre la différence entre les webhooks et l’interrogation traditionnelle de l’API de messagerie permet d’illustrer pourquoi les webhooks sont souvent le meilleur choix :
Interrogation d’API | Webhooks |
---|---|
Extrayez des données avec un minuteur, même si rien n’a changé | Notifications push basées sur des événements |
Plus de demandes et d’utilisation de la bande passante | Moins de demandes, plus d’efficacité |
Informations stratégiques retardées en raison des intervalles d’interrogation | Mises à jour instantanées en cas d’événements |
Programmation complexe et gestion des états | Des flux d’automatisation plus simples |
Mailjet peut envoyer des notifications webhook pour les événements de messagerie suivants :
Chaque webhook contient une charge utile JSON avec des informations spécifiques à l’événement. Voici des exemples de types d’événements courants :
{
"event": "open",
"time": 1433103519,
"MessageID": 19421777396190490,
"email": "api@mailjet.com",
"mj_campaign_id": 7173,
"mj_contact_id": 320,
"customcampaign": "",
"CustomID": "helloworld",
"Payload": "",
"ip": "127.0.0.1",
"geo": "US",
"agent": "Mozilla/5.0 ..."
}
{
"event": "bounce",
"time": 1430812195,
"MessageID": 13792286917004336,
"email": "bounce@mailjet.com",
"blocked": true,
"hard_bounce": true,
"error_related_to": "recipient",
"error": "user unknown"
}
Chaque type d’événement nécessite des stratégies de gestion différentes :
Le respect de ces bonnes pratiques garantit un traitement fiable des webhooks et des performances optimales :
Mailjet relance automatiquement les livraisons de webhook qui ont échoué pendant une durée maximale de 24 heures si votre point de terminaison ne renvoie pas une réponse 200 OK. Si des erreurs répétées persistent, l’URL du webhook peut être suspendue. Vous pouvez configurer une URL de sauvegarde pour assurer la livraison continue des événements.
Vous pouvez configurer les webhooks Mailjet à l’aide de l’API ou de l’interface web. Voici les deux approches :
Cette méthode offre plus de contrôle et est idéale pour les déploiements automatisés.
Déterminez les événements que vous souhaitez suivre : envoi, ouverture, clic, rebond, blocage, spam ou désabonnement.
Utilisez la ressource eventcallbackurl pour configurer votre webhook :
curl -X POST \
https://api.mailjet.com/v3/REST/eventcallbackurl \
-H 'Authorization: Basic <base64_encoded_api_key:secret>' \
-H 'Content-Type: application/json' \
-d '{
"EventType": "open",
"Url": "https://example.com/webhooks/mailjet/open",
"Version": 2
}'
Notes de configuration :
Envoyez un email de test et effectuez l’action suivie (ouverture, clic, etc.) pour vérifier que vous recevez des événements webhook.
Pour les équipes qui préfèrent une interface visuelle :
Voici des implémentations minimales de récepteurs webhook dans les langages de programmation les plus courants :
const express = require('express');
const app = express();
app.use(express.json());
app.post('/webhooks/mailjet/open', (req, res) => {
// 1. Faites persister rapidement les données de l'événement
console.log('Webhook reçu :', req.body);
// À faire : Sauvegarder dans la file d'attente ou la base de données
// await saveToQueue(req.body);
// 2. Accuser réception immédiatement
res.status(200).send('ok');
});
app.listen(3000, () => {
console.log('Serveur de webhook exécuté sur le port 3000');
});
from flask import Flask, request, jsonify
app = Flask(__name__)
@app.route('/webhooks/mailjet/open', methods=['POST'])
def handle_open_event():
data = request.get_json()
# Traiter les données du webhook
print(f"Webhook reçu : {data}")
# À faire : Sauvegarder dans la file d'attente ou la base de données
# save_to_queue(data)
return jsonify({"status": "ok"}), 200
if __name__ == '__main__':
app.run(port=3000)
Voici quelques conseils pour vous aider à tirer le meilleur parti des webhooks.
Utilisez Version=2 dans votre configuration de webhook pour réduire la surcharge HTTP en recevant plusieurs événements dans des requêtes groupées :
{
"EventType": "open",
"Url": "https://example.com/webhooks/mailjet/batch",
"Version": 2
}
Utilisez les paramètres CustomID et EventPayload dans vos appels Send API pour faciliter la corrélation des événements webhook avec vos systèmes internes :
{
"Messages": [{
"To": [{"Email": "user@example.com"}],
"Subject": "Welcome!",
"TextPart": "Welcome to our service!",
"CustomID": "user-123-welcome",
"EventPayload": "campaign=onboarding&segment=new_users"
}]
}
Pour les applications à fort volume, envisagez de diffuser les événements en continu vers des services de file d’attente tiers :
Mailjet envoie les événements d’envoi, d’ouverture, de clic, de rebond, de blocage, de spam et de désabonnement. Chacun contient le MessageID, les identifiants du contact et de la campagne, ainsi que des détails spécifiques à l’événement (tels que l’url pour les événements de clic).
Les événements sont transmis peu de temps après leur survenance, généralement en quelques secondes. Si votre point de terminaison ne répond pas par HTTP 200 OK, Mailjet retente la livraison pendant une période pouvant aller jusqu’à 24 heures.
Oui. Configurez la livraison groupée en définissant Version=2 sur votre eventcallbackurl afin que Mailjet regroupe plusieurs événements en une seule requête POST.
Utilisez HTTPS, protégez le point de terminaison avec une authentification de base et limitez l’accès au moyen d’un filtrage IP ou de passerelles API. Traitez toujours les données utiles côté serveur et n’exposez jamais les points de terminaison des webhooks aux applications clientes.
Suivez cette liste de contrôle pour mettre en œuvre les webhooks de Mailjet avec succès :
Maintenant que vous comprenez les principes fondamentaux et la mise en œuvre des webhooks, envisagez d’explorer ces fonctionnalités Mailjet connexes :
Les webhooks constituent un moyen puissant et efficace de recevoir des notifications en temps réel sur les événements liés aux emails. En mettant en œuvre les webhooks Mailjet avec une gestion appropriée des erreurs, des mesures de sécurité et un traitement asynchrone, vous pouvez créer des flux d’emails réactifs et pilotés par les données qui améliorent l’expérience client et l’efficacité opérationnelle.
N’oubliez pas de commencer simplement, de suivre de près votre mise en œuvre et d’adapter le traitement des webhooks à l’augmentation du volume de vos emails. Avec les bases fournies dans ce guide, vous êtes prêt à exploiter toute la puissance du suivi des événements de messagerie en temps réel.
Comment sécuriser le point de terminaison de mon webhook ?