Événements Email
Les événements suivent chaque email de la soumission à l'engagement. Livrés via webhooks ou Pub/Sub en temps réel.
Configuration
Pour recevoir des événements, configurez un abonné dans le portail sous la section Abonnés aux événements de l'organisation que vous souhaitez suivre. Chaque organisation peut avoir ses propres abonnés avec des endpoints et identifiants indépendants.
Vous pouvez aussi configurer un abonné par défaut au niveau du compte (dans les Paramètres du compte). Les nouvelles organisations créées sous ce compte hériteront automatiquement de cette configuration.
Enveloppe
{
"topic": "email.events",
"eventTime": "2026-03-24T10:45:30Z",
"payload": {
"event_id": "9b1c3f2a-7e4d-4a11-8c2b-2a6f5e1d0c33",
"recipient": "user@example.com",
"event_type": "delivered",
"event_time": "2026-03-24T10:45:30Z",
"custom_id": "order-1234"
}
} Champs du payload
| Champ | Type | Description |
|---|---|---|
event_id | string (UUID) | Identifiant unique de l'événement. Sert à dédupliquer les renvois de webhook et à rapprocher les événements |
recipient | string | Adresse email du destinataire |
event_type | string | Type d'événement (voir ci-dessous) |
event_time | ISO 8601 | Moment de l'événement |
custom_id | string? | Votre identifiant, transmis à l'envoi |
metadata | object? | Détails de l'événement |
Metadata
| Champ | Type | Présent sur |
|---|---|---|
reason | string | Rebond, rejet, écarté, plainte |
smtp_code | integer | bounced, rejected, deferred |
smtp_message | string | bounced, rejected, deferred |
user_agent | string | opened, clicked |
url | string | clicked |
ip | string | opened, clicked |
Types d'événements
Cliquez sur un type d'événement pour voir sa description, ses champs metadata et un exemple JSON.
delivered Accepté par le serveur destinataire
Metadata : Aucune
Pas d'reason.
{
"event_id": "01990a3b-1a01-7c11-9e00-4a1b2c3d0001",
"recipient": "user@example.com",
"event_type": "delivered",
"event_time": "2026-03-24T10:45:30Z",
"custom_id": "order-1234"
} deferred Problème temporaire, retry prévu (greylisting, serveur occupé, IP temporairement bloquée, problèmes de connexion)
Metadata : reason, smtp_code, smtp_message
| reason | signification |
|---|---|
greylisted | Le serveur destinataire nous a demandé de réessayer bientôt |
server_busy | Le serveur destinataire était temporairement surchargé |
ip_blocked | L'IP d'envoi a été temporairement bloquée par le destinataire |
connection_issue | Impossible de joindre le serveur destinataire (timeout, reset, refus) |
{
"event_id": "01990a3b-1a02-7c11-9e00-4a1b2c3d0002",
"recipient": "user@example.com",
"event_type": "deferred",
"event_time": "2026-03-24T10:45:30Z",
"custom_id": "order-1234",
"metadata": {
"reason": "greylisted",
"smtp_code": 421,
"smtp_message": "4.7.0 Try again later"
}
} soft_bounced Rebond temporaire (boîte pleine, destinataire inactif)
Metadata : reason, smtp_code, smtp_message
| reason | signification |
|---|---|
recipient_over_quota | La boîte du destinataire est pleine |
recipient_soft_bounced | Échec temporaire côté destinataire, adresse toujours valide |
recipient_inactive | La boîte du destinataire est inactive |
{
"event_id": "01990a3b-1a03-7c11-9e00-4a1b2c3d0003",
"recipient": "user@example.com",
"event_type": "soft_bounced",
"event_time": "2026-03-24T10:45:31Z",
"custom_id": "order-1234",
"metadata": {
"reason": "recipient_over_quota",
"smtp_code": 452,
"smtp_message": "4.2.2 Mailbox full"
}
} hard_bounced Rebond permanent : l'adresse du destinataire est invalide, ou le serveur destinataire est injoignable
Metadata : reason, smtp_code, smtp_message
| reason | signification |
|---|---|
recipient_unknown | L'adresse du destinataire n'existe pas |
no_mx_records | Le domaine du destinataire n'a pas de serveur de messagerie |
connection_issue | Le serveur destinataire n'a pas pu être joint |
{
"event_id": "01990a3b-1a04-7c11-9e00-4a1b2c3d0004",
"recipient": "unknown@example.com",
"event_type": "hard_bounced",
"event_time": "2026-03-24T10:45:31Z",
"custom_id": "welcome-42",
"metadata": {
"reason": "recipient_unknown",
"smtp_code": 550,
"smtp_message": "5.1.1 User unknown"
}
} dropped N'a pas quitté notre plateforme : écarté avant l'envoi, ou livraison abandonnée (interne/infrastructure)
Metadata : reason
| reason | signification |
|---|---|
domain_invalid | Le domaine du destinataire n'est pas un domaine mail valide |
domain_typo | Le domaine du destinataire ressemble à une faute de frappe (ex. gmial.com) |
domain_disposable | Le destinataire utilise un domaine email jetable |
recipient_is_blocked | Destinataire bloqué après des échecs répétés |
recipient_is_opted_out | Le destinataire s'est désabonné de vos emails |
tenant_domain_spf_not_verified | Votre domaine d'envoi n'a pas de SPF vérifié |
tenant_domain_dkim_not_verified | Votre domaine d'envoi n'a pas de DKIM vérifié |
tenant_domain_not_allowed | L'envoi depuis ce domaine n'est pas autorisé |
abandoned | Abandonné après épuisement des tentatives de livraison |
{
"event_id": "01990a3b-1a05-7c11-9e00-4a1b2c3d0005",
"recipient": "user@gmial.com",
"event_type": "dropped",
"event_time": "2026-03-24T10:45:29Z",
"custom_id": "reset-pwd-99",
"metadata": {
"reason": "domain_typo"
}
} rejected Le serveur distant a refusé le message ou l'expéditeur (spam, politique, relais)
Metadata : reason, smtp_code, smtp_message
| reason | signification |
|---|---|
spam_detected | Le serveur destinataire a rejeté le message comme spam |
policy_violation | Le serveur destinataire l'a rejeté pour une raison de politique |
relay_access_denied | Le serveur destinataire a refusé de relayer le message |
{
"event_id": "01990a3b-1a09-7c11-9e00-4a1b2c3d0009",
"recipient": "user@example.com",
"event_type": "rejected",
"event_time": "2026-03-24T10:45:29Z",
"custom_id": "receipt-8842",
"metadata": {
"reason": "spam_detected",
"smtp_code": 550,
"smtp_message": "5.7.1 Message rejected due to content restrictions"
}
} opened Email ouvert
Metadata : user_agent, ip
Pas d'reason.
{
"event_id": "01990a3b-1a06-7c11-9e00-4a1b2c3d0006",
"recipient": "user@example.com",
"event_type": "opened",
"event_time": "2026-03-24T11:00:05Z",
"custom_id": "order-1234",
"metadata": {
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
"ip": "203.0.113.42"
}
} clicked Lien cliqué
Metadata : url, user_agent, ip
Pas d'reason.
{
"event_id": "01990a3b-1a07-7c11-9e00-4a1b2c3d0007",
"recipient": "user@example.com",
"event_type": "clicked",
"event_time": "2026-03-24T11:02:15Z",
"custom_id": "order-1234",
"metadata": {
"url": "https://yourdomain.com/orders/1234",
"user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)",
"ip": "203.0.113.42"
}
} unsubscribed Désabonnement one-click
Metadata : Aucune
Pas d'reason.
{
"event_id": "01990a3b-1a08-7c11-9e00-4a1b2c3d0008",
"recipient": "user@example.com",
"event_type": "unsubscribed",
"event_time": "2026-03-24T11:05:00Z",
"custom_id": "order-1234"
} spam_reported Le destinataire a signalé votre email comme spam (plainte feedback loop)
Metadata : Aucune
Pas d'reason.
{
"event_id": "01990a3b-1a0a-7c11-9e00-4a1b2c3d000a",
"recipient": "user@example.com",
"event_type": "spam_reported",
"event_time": "2026-03-24T12:30:00Z",
"custom_id": "order-1234"
} Suivi d'engagement (opened, clicked)
Le suivi des ouvertures et des clics doit être activé dans le portail (paramètres de l'organisation) pour recevoir les événements opened et clicked. Une fois activé, les liens dans vos emails sont réécrits pour passer par le serveur de redirection Mailverick (https://links.mailverick.com). Pour afficher votre propre domaine (ex. links.votredomaine.com), configurez un enregistrement CNAME de tracking pour votre domaine d'envoi dans la section domaines du portail.
Pour la vérification des signatures webhook, voir Sécurité webhook.