Événements Webhook
Référence complète de tous les types d'événements webhook et de leurs données
Le catalogue d'événements de MailLand définit 21 types d'événements répartis en 6 catégories (2 des 21 sont des notices de plateforme auxquelles vous ne pouvez pas vous abonner). Chaque événement est transmis sous forme de requête HTTP POST signée vers votre point de terminaison webhook.
Tous les événements du catalogue ne se déclenchent pas encore. Neuf événements sont actifs et
abonnables aujourd'hui : message.delivered, message.deferred, message.bounced,
message.failed, message.complained, message.outcome_unknown, message.retried, message.unsubscribed et inbound.received. Les autres sont documentés, réservés et non
acceptés dans un abonnement aujourd'hui : l'API renvoie 400 si vous en incluez un. Le catalogue
signale cet état par événement via availableNow et customerSelectable : lisez ces indicateurs
plutôt que de coder une liste en dur.
Catalogue d'événements
Récupérez le catalogue complet des événements de manière programmatique :
GET https://api.mail.land/v1/webhooks/catalogcurl -X GET https://api.mail.land/v1/webhooks/catalog{
"version": 1,
"products": [
{ "id": "transactional", "name": "Transactional Email", "isActive": true, "comingSoon": false },
{ "id": "marketing", "name": "Marketing Email", "isActive": true, "comingSoon": false },
{ "id": "inbound", "name": "Inbound Email", "isActive": true, "comingSoon": false },
{ "id": "system", "name": "System Events", "isActive": true, "comingSoon": false },
{ "id": "validation", "name": "Email Validation", "isActive": false, "comingSoon": true }
],
"categories": [
{
"id": "message",
"name": "Message Events",
"events": [
{ "id": "message.sent", "name": "Message Sent", "products": ["transactional", "marketing"] },
{ "id": "message.delivered", "name": "Message Delivered", "products": ["transactional", "marketing"] }
]
}
]
}Ce point de terminaison est public (aucune authentification requise) et renvoie toujours la dernière version du catalogue.
Structure standard des données
Chaque livraison webhook inclut une structure externe cohérente :
{
"event": "message.delivered",
"event_id": "evt_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5",
"timestamp": "2026-02-17T12:34:56.789Z",
"occurred_at": "2026-02-17T12:34:56.120Z",
"schema_version": 1,
"data": {
// Event-specific fields
}
}| Champ | Type | Description |
|---|---|---|
event | string | Identifiant du type d'événement |
event_id | string | Identifiant unique de l'événement pour la déduplication (format : evt_{32chars}) |
timestamp | datetime | Moment où le webhook a été mis en file d'attente (UTC) : pas celui où l'événement sous-jacent s'est produit. Voir data.timestamp pour cela. |
occurred_at | datetime | Moment où l'événement sous-jacent s'est produit (UTC) ; pour les événements de message, le même instant que data.timestamp |
schema_version | integer | Version de schéma de ce type d'événement (1 aujourd'hui) ; reprise dans X-MLND-Event-Version. Voir Versionnage |
data | object | Données spécifiques à l'événement |
Le data de chaque événement de message contient aussi status_version, status,
previous_status, complaint_status et reason, voir Versions de statut.
Versions de statut
Chaque événement de message contient data.status_version, data.status, data.previous_status,
data.complaint_status et data.reason. status_version augmente de un chaque fois que MailLand envoie
un événement pour un changement du statut du message, de son motif ou de son statut de plainte.
Deux exceptions :
- Un message commence à
status_version0 tant qu'il estqueuedousent. Le passage dequeuedàsentn'envoie aucun événement et ne change pas la version. - Plusieurs événements
message.deferredpeuvent partager la mêmestatus_version: un report répété ne change pas le statut.
Les webhooks peuvent arriver dans le désordre et être renvoyés : appliquez-les selon
status_version, jamais selon l'ordre d'arrivée.
Un statut peut changer après avoir été final. MailLand signale ce qu'il sait au moment où il le
sait. S'il en apprend davantage plus tard, il envoie le nouveau statut avec une status_version plus
élevée :
- un message distribué peut rebondir plus tard, lorsque le serveur du destinataire le rejette après coup (un rebond hors bande) ;
- après une panne interne, ou après le rétablissement du serveur de messagerie de MailLand, une
distribution ou un refus peut être signalé en retard. Un message
failedpeut alors devenirbouncedoudelivered, un messagebouncedpeut devenirdelivered, et un messageunknownpeut prendre n'importe quel statut final.
Un message ne passe jamais de delivered à failed. MailLand comptabilise ces corrections.
| Champ | Type | Description |
|---|---|---|
status_version | integer | La version du statut du message que décrit cet événement. |
status | string | Le statut du message à cette version : queued, sent, deferred, unknown, delivered, bounced ou failed. |
previous_status | string ou null | Le statut avant ce changement ; null avant le premier changement. |
complaint_status | string | none ou complained. |
reason | string ou null | Le motif du rebond ou de l'échec pour bounced, failed et unknown ; sinon null. |
Délais de nouvelle tentative
MailLand réessaie un message reporté jusqu'à son délai de nouvelle tentative : environ 5 heures
après sa première remise à la file de distribution pour le courrier transactionnel, et environ
25 heures pour le courrier marketing. Après ce délai, MailLand ne met plus le message en file pour une
nouvelle tentative. Une copie qui attendait déjà une connexion à l'échéance peut encore être tentée
ensuite. Ce sont des délais de nouvelle tentative, pas des promesses sur le moment où vous recevez
l'événement final. Vous recevez chaque événement dès que le résultat parvient à MailLand ; ce délai
n'est pas encore mesuré et peut être plus long lors d'une panne interne. Un message que MailLand n'a
pas pu remettre à sa file de distribution dans les 24 heures est terminé comme expired.
Si vous tenez le statut courant d'un message à partir des webhooks (action requise)
C'est un changement de comportement pour les intégrations existantes. Une intégration qui considère
message.failed ou message.delivered comme définitifs, et ignore les événements suivants, peut
conserver un statut erroné après une correction. Des noms d'événements existants ont désormais de
nouvelles séquences possibles.
- Abonnez-vous à tous les événements de message :
message.delivered,message.deferred,message.bounced,message.failed,message.complained,message.outcome_unknownetmessage.retried. Ce n'est qu'ainsi que les événements reçus contiennent chaque changement de statut. - Enregistrez
status_versionavec le statut. N'appliquez un événement que si sastatus_versionest supérieure à celle enregistrée ; unmessage.deferredde même version ne change rien. - Continuez à traiter les événements après
message.failed,message.bouncedoumessage.delivered: un événement ultérieur avec unestatus_versionplus élevée remplace le statut précédent. - Une fois reçus tous les événements jusqu'à la
status_versionde l'API, votre statut est égal à celui de l'API. L'API peut être en avance sur les webhooks reçus jusque-là et, àstatus_version0, elle peut affichersentsans événement.
Si vous ne vous abonnez qu'à certains événements de message, la status_version la plus élevée
reçue n'est pas forcément le statut courant : un type d'événement auquel vous n'êtes pas abonné a
pu le changer. Lisez le statut courant via l'API, par exemple pour chaque message dont le dernier
événement reçu est message.failed, message.bounced ou message.outcome_unknown, et réconciliez.
Si vous ne pouvez pas modifier votre intégration, interrogez l'API pour le statut des messages qui vous importent. Les intégrations qui se contentent de compter les événements ou d'afficher un historique n'ont rien à changer.
Événements de message
message.sent
Illustratif : pas encore émis. Cet événement est catalogué mais n'a aucun producteur aujourd'hui.
{
"event": "message.sent",
"event_id": "evt_a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5",
"timestamp": "2026-02-17T12:34:56.789Z",
"data": {
"message_id": "t_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-02-17T12:34:56.789Z"
}
}message.delivered
Déclenché lorsque l'e-mail est livré avec succès au serveur de messagerie du destinataire.
Cet événement peut aussi arriver comme correction après un statut final antérieur pour le même message. Voir Versions de statut.
{
"event": "message.delivered",
"event_id": "evt_b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6",
"timestamp": "2026-02-17T12:34:58.123Z",
"data": {
"message_id": "t_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-02-17T12:34:58.123Z",
"smtp_response": "OK",
"status_version": 1,
"status": "delivered",
"previous_status": "sent",
"complaint_status": "none",
"reason": null
}
}message.deferred
Déclenché lorsque la livraison est temporairement retardée. MailLand réessaiera automatiquement.
Un message peut être reporté plusieurs fois. Le premier report augmente status_version ; les
reports suivants portent la même status_version.
{
"event": "message.deferred",
"event_id": "evt_c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7",
"timestamp": "2026-02-17T12:35:00.000Z",
"data": {
"message_id": "t_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-02-17T12:35:00.000Z",
"smtp_response": "Try again later",
"bounce_reason": "TransientFailure"
}
}message.bounced
Déclenché lorsqu'un e-mail est rejeté (rebond permanent ou temporaire).
Cet événement peut aussi arriver comme correction après un statut final antérieur pour le même message. Voir Versions de statut.
{
"event": "message.bounced",
"event_id": "evt_d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8",
"timestamp": "2026-02-17T12:35:01.000Z",
"data": {
"message_id": "t_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-02-17T12:35:01.000Z",
"bounce_type": "hard",
"bounce_reason": "InvalidRecipient",
"smtp_response": "The email account that you tried to reach does not exist.",
"status_version": 1,
"status": "bounced",
"previous_status": "sent",
"complaint_status": "none",
"reason": "InvalidRecipient"
}
}bounce_reason est le jeton de classification que MailLand attribue au rebond (par exemple
InvalidRecipient, QuotaIssues, SpamBlock), pas le texte SMTP brut, utilisez smtp_response
pour cela. bounce_type vaut hard, soft, blocked ou unknown.
smtp_response est le texte de réponse du serveur destinataire, sans son code de réponse numérique
ni son code de statut étendu. bounce_type indique ce que MailLand a fait de l'adresse : hard, mise
en suppression pour tous les e-mails ; soft, mise en suppression pour les e-mails marketing pendant
30 jours ; blocked, le refus concernait l'envoi, pas l'adresse (par exemple filtrage anti-spam,
authentification de l'expéditeur, réputation ou politique du destinataire), donc rien n'est mis en
suppression ; unknown, aucune classification, traité comme soft.
message.failed
Déclenché lorsque MailLand met fin à un message sur la base d'éléments concluants indiquant qu'il n'a
pas été distribué, pour une raison du côté de MailLand et non du destinataire. Dans les cas décrits
sous Versions de statut, un message.delivered ou un message.bounced peut
suivre avec une status_version plus élevée. Le statut du message devient Failed, et non Bounced,
et reason indique le cas :
| Motif | Ce qui s'est passé |
|---|---|
dkim_revoked | Le message attendait dans la file de distribution de MailLand, signé avec une clé DKIM que MailLand a ensuite révoquée en urgence pour le domaine expéditeur (par exemple après une compromission présumée de la clé). MailLand ne distribue ni ne re-signe jamais un tel message : il expire à sa prochaine tentative, en 30 minutes environ pour les e-mails transactionnels et en 4 heures pour les e-mails marketing. |
admin_bounce | Un opérateur de MailLand a retiré le message de la file de distribution de MailLand. |
dkim_key_revoked | Le domaine expéditeur fait l'objet d'un blocage DKIM d'urgence ; MailLand a donc refusé le message avant son entrée dans la file de distribution. |
inject_failed | La file de distribution de MailLand a refusé le message de façon définitive ; il n'a jamais été mis en file pour distribution. |
expired | MailLand a accepté le message mais ne l'a pas remis à sa file de distribution dans les 24 heures ; il y a donc mis fin sans l'envoyer. |
template_variable_missing | Le message contenait un espace réservé {{name}} sans valeur pour ce destinataire ; MailLand ne l'a donc pas envoyé avec l'espace réservé tel quel. |
- Le destinataire n'est pas mis en suppression et l'échec n'est pas compté dans votre taux de rebond.
- Un message produit au plus un
message.failed. C'est le dernier événement de ce message, sauf si MailLand reçoit plus tard une distribution ou un refus ; unmessage.deliveredou unmessage.bouncedsuit alors avec unestatus_versionplus élevée.
Un refus du serveur de messagerie destinataire est signalé comme message.bounced, jamais comme message.failed.
{
"event": "message.failed",
"event_id": "evt_e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0",
"timestamp": "2026-09-28T02:00:19.1047332Z",
"data": {
"message_id": "t_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-09-28T02:00:18.2522997Z",
"reason": "dkim_revoked",
"smtp_response": "Next delivery time PT3.028008S > PT1S",
"status_version": 1,
"status": "failed",
"previous_status": "sent",
"complaint_status": "none"
}
}| Champ | Description |
|---|---|
reason | Pourquoi MailLand a mis fin au message : l'une des valeurs ci-dessus. Traitez toute autre valeur comme un nouveau motif côté MailLand. |
smtp_response | Texte de la file de distribution de MailLand lorsqu'il existe (dkim_revoked, admin_bounce, inject_failed), sinon null. À titre informatif uniquement : ce n'est jamais une réponse du serveur destinataire. |
message.outcome_unknown
Déclenché lorsque MailLand ne peut pas déterminer si un message a atteint sa file de distribution, par
exemple parce que la remise a été interrompue et n'a pas pu être établie ensuite. Il est envoyé quelque
temps après le délai de nouvelle tentative du message, actuellement 7 jours, si aucun élément n'est
arrivé d'ici là. Ce n'est pas un statut final. Le statut devient unknown. Si MailLand apprend le
résultat plus tard, vous recevez message.delivered, message.bounced ou message.failed avec une
status_version plus élevée.
{
"event": "message.outcome_unknown",
"event_id": "evt_0a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d",
"timestamp": "2026-10-08T17:05:00.000Z",
"data": {
"message_id": "t_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-10-08T17:05:00.000Z",
"status_version": 1,
"status": "unknown",
"previous_status": "queued",
"complaint_status": "none",
"reason": "handoff_undetermined"
}
}message.retried
Déclenché lorsque vous réessayez un message rebondi ou en échec et que MailLand le remet en file. Le
statut devient queued et status_version augmente ; les événements de la copie renvoyée suivent avec
des versions plus élevées. Ce n'est pas un statut final.
{
"event": "message.retried",
"event_id": "evt_1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e",
"timestamp": "2026-10-01T18:00:00.000Z",
"data": {
"message_id": "t_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-10-01T18:00:00.000Z",
"attempt": 1,
"status_version": 2,
"status": "queued",
"previous_status": "bounced",
"complaint_status": "none",
"reason": null
}
}Événements d'engagement
message.opened et message.clicked sont catalogués mais ne sont ni
sélectionnables par le client ni émis aujourd'hui. Vous ne pouvez pas vous y abonner :
toute tentative de les sélectionner à la création ou la mise à jour est rejetée avec
400 "One or more invalid events selected". Les exemples ci-dessous sont uniquement illustratifs.
message.opened
Illustratif : non disponible.
{
"event": "message.opened",
"event_id": "evt_f6g7h8i9j0k1l2m3n4o5p6q7r8s9t0",
"timestamp": "2026-02-17T13:15:00.000Z",
"data": {
"message_id": "t_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-02-17T13:15:00.000Z"
}
}message.clicked
Illustratif : non disponible.
{
"event": "message.clicked",
"event_id": "evt_g7h8i9j0k1l2m3n4o5p6q7r8s9t0u1",
"timestamp": "2026-02-17T13:16:00.000Z",
"data": {
"message_id": "t_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-02-17T13:16:00.000Z"
}
}message.unsubscribed
Émis lorsqu'un destinataire se désinscrit d'un message que vous avez envoyé : via son en-tête List-Unsubscribe ou
son adresse mailto:, le POST en un clic, son lien de désinscription ou la page de préférences. Il n'est pas émis
pour les désinscriptions que vous effectuez vous-même via l'API ou le tableau de bord, ni pour les plaintes pour spam
(message.complained). Il est envoyé une fois par message, au moment même où le destinataire est désinscrit, à chaque
endpoint qui y est abonné. Comme tout événement de message, data porte aussi les champs d'état courants du message
(voir Versions de statut).
{
"event": "message.unsubscribed",
"event_id": "evt_h8i9j0k1l2m3n4o5p6q7r8s9t0u1v2",
"timestamp": "2026-02-17T14:00:00.000Z",
"data": {
"message_id": "m_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-02-17T14:00:00.000Z",
"status_version": 3,
"status": "delivered",
"previous_status": "queued",
"complaint_status": "none",
"reason": null
}
}Événements de suppression
message.complained
Déclenché lorsqu'un destinataire marque l'e-mail comme spam (boucle de rétroaction ISP).
{
"event": "message.complained",
"event_id": "evt_i9j0k1l2m3n4o5p6q7r8s9t0u1v2w3",
"timestamp": "2026-02-17T15:00:00.000Z",
"data": {
"message_id": "m_a1b2c3d4e5f6",
"recipient": "[email protected]",
"timestamp": "2026-02-17T15:00:00.000Z",
"feedback_type": "abuse"
}
}Un taux de plaintes supérieur à 0,1 % peut nuire à votre réputation d'expéditeur. Surveillez
attentivement les événements message.complained et assurez-vous d'envoyer uniquement à des
destinataires ayant donné leur consentement.
suppression.added
Illustratif : pas encore émis. Cet événement est catalogué mais n'a aucun producteur aujourd'hui.
{
"event": "suppression.added",
"event_id": "evt_j0k1l2m3n4o5p6q7r8s9t0u1v2w3x4",
"timestamp": "2026-02-17T15:00:01.000Z",
"data": {
"email": "[email protected]",
"type": "complaint",
"scope": "global",
"reason": "Spam complaint via ISP feedback loop"
}
}suppression.removed
Illustratif : pas encore émis. Cet événement est catalogué mais n'a aucun producteur aujourd'hui.
{
"event": "suppression.removed",
"event_id": "evt_k1l2m3n4o5p6q7r8s9t0u1v2w3x4y5",
"timestamp": "2026-02-17T16:00:00.000Z",
"data": {
"email": "[email protected]",
"type": "manual",
"scope": "global"
}
}Événements entrants
inbound.received
Déclenché lorsqu'un e-mail entrant est reçu sur l'un de vos domaines.
Cet événement utilise l'enveloppe standard, comme tous les autres événements de cette page :
event_id est égal à X-MLND-Event-Id et reste stable d'une tentative à l'autre, occurred_at est le
moment de réception de l'e-mail, et les champs entrants se trouvent sous data. L'id de chaque pièce
jointe est stable d'une tentative à l'autre ; sa download_url est nouvelle à chaque tentative.
Référence des champs : Webhooks entrants.
{
"event": "inbound.received",
"event_id": "evt_a1b2c3d4e5f6a1b2c3d4e5f6a1b2c3d4",
"timestamp": "2026-02-17T12:00:00.000Z",
"occurred_at": "2026-02-17T12:00:00.000Z",
"schema_version": 1,
"data": {
"idempotency_key": "r7n2k5x9m1p4w6_s5m3x8k1p7n4w2",
"email": {
"id": "r7n2k5x9m1p4w6",
"received_at": "2026-02-17T12:00:00.000Z",
"size_bytes": 4521,
"envelope": {
"from": "[email protected]",
"to": ["[email protected]"]
},
"headers": {
"from": { "address": "[email protected]", "name": "Jane Doe" },
"to": [{ "address": "[email protected]" }],
"subject": "Help with my order",
"message_id": "<[email protected]>",
"date": "2026-02-17T11:59:50.000Z"
},
"body": {
"text_preview": "Hi, I need help with...",
"has_text": true,
"has_html": true
},
"attachments": [],
"authentication": {
"spf": { "result": "pass" },
"dkim": { "result": "pass" },
"dmarc": { "result": "pass" }
},
"spam": {
"score": 0.1,
"is_spam": false,
"reason": null
},
"source": {
"ip": "203.0.113.10",
"hostname": "mail.external.com"
}
},
"matched_route": {
"id": "s5m3x8k1p7n4w2",
"name": "Support inbox"
}
}
}Événements de compte
account.webhook_paused
Non émis. La mise en pause automatique est réelle et se produit comme décrit dans
Logique de nouvelles tentatives, mais elle est communiquée via les champs
pausedAt / pausedReason du webhook lui-même et une notification in-app, pas comme un événement
webhook. Envoyer « votre point de terminaison ne fonctionne plus » à un point de terminaison webhook
n'est par construction pas fiable, et aucun abonnement ne peut de toute façon contenir cet
événement aujourd'hui.
Déclenché lorsqu'un webhook est automatiquement mis en pause en raison d'échecs consécutifs.
{
"event": "account.webhook_paused",
"event_id": "evt_m3n4o5p6q7r8s9t0u1v2w3x4y5z6a7",
"timestamp": "2026-02-17T18:00:00.000Z",
"data": {
"webhook_id": "z8m3p1k6x4w2n7",
"webhook_name": "Production Events",
"consecutive_failures": 10,
"last_error": "Connection refused"
}
}account.domain_verified
Illustratif : pas encore émis. Cet événement est catalogué mais n'a aucun producteur aujourd'hui.
{
"event": "account.domain_verified",
"event_id": "evt_n4o5p6q7r8s9t0u1v2w3x4y5z6a7b8",
"timestamp": "2026-02-17T10:15:00.000Z",
"data": {
"domain_id": "q3z8v1k6m9p2x5",
"domain": "yourdomain.com"
}
}account.domain_failed
Illustratif : pas encore émis. Cet événement est catalogué mais n'a aucun producteur aujourd'hui.
{
"event": "account.domain_failed",
"event_id": "evt_o5p6q7r8s9t0u1v2w3x4y5z6a7b8c9",
"timestamp": "2026-02-17T10:15:00.000Z",
"data": {
"domain_id": "q3z8v1k6m9p2x5",
"domain": "yourdomain.com",
"reason": "DKIM record not found for selector mlnd"
}
}account.quota_warning
Illustratif : pas encore émis. Cet événement est catalogué mais n'a aucun producteur aujourd'hui.
{
"event": "account.quota_warning",
"event_id": "evt_p6q7r8s9t0u1v2w3x4y5z6a7b8c9d0",
"timestamp": "2026-02-17T20:00:00.000Z",
"data": {
"used": 45000,
"limit": 50000,
"percentage": 90
}
}account.quota_exceeded
Illustratif : pas encore émis. Cet événement est catalogué mais n'a aucun producteur aujourd'hui.
{
"event": "account.quota_exceeded",
"event_id": "evt_q7r8s9t0u1v2w3x4y5z6a7b8c9d0e1",
"timestamp": "2026-02-17T22:00:00.000Z",
"data": {
"used": 50000,
"limit": 50000,
"percentage": 100
}
}Récapitulatif des événements
« Disponible » correspond à l'indicateur availableNow du catalogue : si quelque chose émet
réellement l'événement aujourd'hui. Seuls les événements disponibles peuvent figurer dans un
abonnement.
| Événement | Disponible | Produits | Limité au domaine | Description |
|---|---|---|---|---|
message.delivered | Oui | transactional, marketing | Oui | Livré avec succès |
message.deferred | Oui | transactional, marketing | Oui | Temporairement retardé |
message.bounced | Oui | transactional, marketing | Oui | Rebond permanent ou temporaire |
message.failed | Oui | transactional, marketing | Oui | Terminé par MailLand sur des éléments concluants, cause côté MailLand ; peut être suivi d'une correction (voir Versions de statut) |
message.outcome_unknown | Oui | transactional, marketing | Oui | MailLand n'a pas pu déterminer si le message a atteint sa file de distribution ; non final |
message.retried | Oui | transactional, marketing | Oui | Un message rebondi ou en échec a été réessayé et est de nouveau en file ; non final |
message.complained | Oui | transactional, marketing | Oui | Marqué comme spam |
inbound.received | Oui | inbound | Oui | E-mail entrant reçu |
message.sent | Pas encore | transactional, marketing | Oui | E-mail accepté et mis en file d'attente |
message.opened | Pas encore | transactional, marketing | Oui | Pixel de suivi chargé |
message.clicked | Pas encore | transactional, marketing | Oui | Lien cliqué |
message.unsubscribed | Oui | transactional, marketing | Oui | Destinataire désinscrit |
suppression.added | Pas encore | transactional, marketing | Non | Ajouté à la liste de suppression |
suppression.removed | Pas encore | transactional, marketing | Non | Retiré de la liste de suppression |
account.webhook_paused | Pas encore | system | Non | Webhook mis en pause automatiquement |
account.domain_verified | Pas encore | system | Non | Domaine vérifié |
account.domain_failed | Pas encore | system | Non | Échec de la vérification du domaine |
account.quota_warning | Pas encore | system | Non | Approche de la limite de quota |
account.quota_exceeded | Pas encore | system | Non | Quota épuisé |
Événements futurs
Lorsque includeFutureEvents est true (valeur par défaut), votre webhook reçoit automatiquement
les nouveaux types d'événements au fur et à mesure qu'ils sont ajoutés à vos produits abonnés.
Définissez-le sur false pour verrouiller votre abonnement à l'instantané actuel des événements.
Les événements marqués « Pas encore » ci-dessus deviennent abonnables lorsque leurs producteurs sont livrés : les noms d'événements et les structures de données documentés ici ne changeront pas à ce moment-là.
Prochaines étapes
- Vérification de signature : vérifiez que les événements proviennent de MailLand
- Logique de nouvelles tentatives : comprendre le comportement de réessai
- Présentation des webhooks : créer et gérer des webhooks