É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

ChampTypeDescription
event_idstring (UUID)Identifiant unique de l'événement. Sert à dédupliquer les renvois de webhook et à rapprocher les événements
recipientstringAdresse email du destinataire
event_typestringType d'événement (voir ci-dessous)
event_timeISO 8601Moment de l'événement
custom_idstring?Votre identifiant, transmis à l'envoi
metadataobject?Détails de l'événement

Metadata

ChampTypePrésent sur
reasonstringRebond, rejet, écarté, plainte
smtp_codeintegerbounced, rejected, deferred
smtp_messagestringbounced, rejected, deferred
user_agentstringopened, clicked
urlstringclicked
ipstringopened, 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

reasonsignification
greylistedLe serveur destinataire nous a demandé de réessayer bientôt
server_busyLe serveur destinataire était temporairement surchargé
ip_blockedL'IP d'envoi a été temporairement bloquée par le destinataire
connection_issueImpossible 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

reasonsignification
recipient_over_quotaLa boîte du destinataire est pleine
recipient_soft_bouncedÉchec temporaire côté destinataire, adresse toujours valide
recipient_inactiveLa 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

reasonsignification
recipient_unknownL'adresse du destinataire n'existe pas
no_mx_recordsLe domaine du destinataire n'a pas de serveur de messagerie
connection_issueLe 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

reasonsignification
domain_invalidLe domaine du destinataire n'est pas un domaine mail valide
domain_typoLe domaine du destinataire ressemble à une faute de frappe (ex. gmial.com)
domain_disposableLe destinataire utilise un domaine email jetable
recipient_is_blockedDestinataire bloqué après des échecs répétés
recipient_is_opted_outLe destinataire s'est désabonné de vos emails
tenant_domain_spf_not_verifiedVotre domaine d'envoi n'a pas de SPF vérifié
tenant_domain_dkim_not_verifiedVotre domaine d'envoi n'a pas de DKIM vérifié
tenant_domain_not_allowedL'envoi depuis ce domaine n'est pas autorisé
abandonedAbandonné 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

reasonsignification
spam_detectedLe serveur destinataire a rejeté le message comme spam
policy_violationLe serveur destinataire l'a rejeté pour une raison de politique
relay_access_deniedLe 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.