Aller au contenu

Rebonds, plaintes et suppressions

Type Signification Événement Résultat
Définitif (permanent) L’adresse n’existe pas ou le domaine rejette définitivement les e-mails. email.bounced last_event devient bounced ; l’adresse est ajoutée à votre liste de suppression.
Temporaire (transitoire) Un problème passager, comme une boîte pleine ou une panne de serveur. SES continue de réessayer. email.delivery_delayed Rien n’est supprimé au début. Après 3 rebonds temporaires sur des e-mails différents en 30 jours, l’adresse est ajoutée à votre liste de suppression.

Les rebonds définitifs incluent bounce.type: "Permanent" et un bounce.subType dans le payload du webhook.

Une adresse qui rebondit sans cesse temporairement est généralement abandonnée, et les fournisseurs de messagerie comptent les tentatives répétées contre vous. Les rebonds temporaires causés par le message plutôt que par l’adresse (message trop volumineux, contenu ou pièce jointe rejeté) ne comptent pas dans la limite ; corrigez plutôt le message.

Une plainte survient lorsqu’un destinataire signale votre e-mail comme spam et que son fournisseur de messagerie vous le remonte (boucle de rétroaction). SpacePost déclenche email.complained, définit last_event à complained et ajoute le destinataire à votre liste de suppression. Les plaintes sont le signal négatif le plus fort qui existe : gardez-les sous 0,1 %.

La liste de suppression est une liste d’interdiction d’envoi propre à chaque équipe. Avant chaque envoi, SpacePost y compare tous les destinataires (to, cc, bcc) :

  • Les destinataires supprimés sont retirés du message et un événement email.suppressed est déclenché.
  • S’il ne reste aucun destinataire, rien n’est envoyé et le last_event de l’e-mail est suppressed.
  • Le quota est décompté à l’acceptation de l’e-mail, avant la vérification de suppression : les destinataires supprimés comptent donc toujours dans votre quota mensuel.

Des entrées sont ajoutées automatiquement pour les rebonds définitifs, les rebonds temporaires répétés et les plaintes, ou manuellement via l’API. Chaque entrée a une reason (bounce, complaint, unsubscribe ou manual) et un detail lisible, comme Hard bounce (NoEmail) ou 3 soft bounces in 30 days (MailboxFull). La première raison enregistrée pour une adresse est conservée : ajouter une adresse manuellement n’écrase jamais un rebond ou une plainte.

suppressions.ts
import { SpacePost } from "@spacepost/node";
const spacepost = new SpacePost();
await spacepost.suppressions.create({ email: "do-not-mail@example.com" });
const { data } = await spacepost.suppressions.list({ limit: 100 });
for (const s of data?.data ?? []) console.log(s.email, s.reason);
await spacepost.suppressions.remove("do-not-mail@example.com"); // by email or id
Suppression
{
"object": "suppression",
"id": "0192e1c4-0000-7000-8000-0000000000d1",
"email": "nobody@example.com",
"reason": "bounce",
"detail": "Hard bounce (NoEmail)",
"created_at": "2026-10-23T14:02:12.000Z"
}

Si le domaine d’un destinataire n’accepte aucun e-mail (pas d’enregistrements MX ni A), SpacePost ignore ce destinataire au lieu de tenter la distribution, et déclenche email.suppressed. Cela protège votre taux de rebonds. Voir Vérification du compte et limites d’envoi.

bounced@test.spacepost.dev, complained@test.spacepost.dev et (après trois envois) softbounced@test.spacepost.dev créent de vraies entrées de suppression et comptent dans vos taux. Retirez-les après vos tests. Voir Tests.