Liste email saine : double opt-in + désinscription 1-clic (RFC 8058)
Une liste email "propre" ne se mesure pas au nombre d'abonnés, mais à ce qui arrive quand tu cliques sur Envoyer. Si 2 % de tes envois bouncent et que Gmail t'envoie en spam au bout de trois campagnes, le problème n'est presque jamais ton contenu : c'est ta collecte et ta gestion de désinscription. Voici les deux briques qui changent tout, et comment les poser concrètement.
Double opt-in : confirmer avant d'ajouter
Le single opt-in ajoute l'adresse dès que le formulaire est soumis. Problème : tu hérites des fautes de frappe (`gmial.com`), des adresses jetables, des bots qui remplissent tes formulaires, et des inscriptions malveillantes (quelqu'un inscrit l'adresse d'un tiers). Toutes ces adresses pourrissent ta réputation : bounces, spam traps, plaintes. Le double opt-in ajoute une étape : tu envoies un email de confirmation avec un lien unique, et tu n'inscris l'abonné que s'il clique.
- Soumission du formulaire → tu crées un enregistrement en statut `pending` (pas `confirmed`).
- Tu génères un token signé à durée de vie courte (24-48 h) et tu l'envoies dans le lien de confirmation.
- Au clic, tu vérifies le token, tu passes le statut à `confirmed` et tu horodates le consentement (date, IP, user-agent).
- Pas de clic dans le délai → l'enregistrement `pending` est purgé. Il n'a jamais reçu une seule newsletter.
Bénéfice mesurable : un email de confirmation envoyé à `gmial.com` bounce avant d'entrer dans ta liste. Une adresse bidon ne clique jamais. Tu transformes ta passerelle d'inscription en filtre de qualité gratuit. Le coût : tu "perds" 10 à 30 % d'inscrits qui ne confirment pas — mais ce sont précisément ceux qui auraient plombé ton taux d'ouverture et tes plaintes.
Désinscription 1-clic : List-Unsubscribe + RFC 8058
Depuis février 2024, Gmail et Yahoo l'exigent pour tout expéditeur de masse (~5000 messages/jour) : un mécanisme de désinscription en un seul clic, sans page intermédiaire, sans login. Ce n'est plus une politesse, c'est une condition de délivrabilité. Le `List-Unsubscribe` (RFC 2369) liste les méthodes ; le `List-Unsubscribe-Post` (RFC 8058) déclare que le client peut envoyer un POST automatique — c'est ça le vrai "1-clic" : le bouton natif de Gmail/Apple Mail déclenche un POST sans ouvrir ton site.
List-Unsubscribe: <https://zylior.com/u/unsub?t=SIGNED_TOKEN>, <mailto:unsub@zylior.com?subject=unsub-SIGNED_TOKEN>
List-Unsubscribe-Post: List-Unsubscribe=One-Click
- Mets l'URL HTTPS en premier, le `mailto:` en second (fallback). Les deux ciblent l'abonné via un token signé — jamais l'email en clair dans l'URL.
- Ton endpoint doit accepter un POST avec le corps `List-Unsubscribe=One-Click` et désinscrire sans confirmation ni connexion. Un GET peut afficher une page "c'est fait", mais le POST agit immédiatement.
- Réponds `200` rapidement et traite la désinscription de façon idempotente : le client peut renvoyer le POST.
- Garde aussi un lien de désinscription visible dans le corps de l'email — la RFC ne remplace pas l'obligation légale d'un lien cliquable.
Adresse postale et suppression scopée
D'abord, l'adresse postale physique : CAN-SPAM l'impose pour les envois commerciaux, et son absence est un signal négatif pour les filtres anti-spam. Mets-la dans le pied de page, à côté du lien de désinscription — une boîte postale ou l'adresse de la société suffit. Ensuite, la suppression scopée : en multi-tenant, un abonné peut exister dans plusieurs contextes (newsletter, notifications produit, onboarding d'un tenant). Une désinscription doit retirer l'abonné du bon périmètre, pas le supprimer globalement ni le laisser sur les autres listes par erreur.
- Modélise le consentement par couple `(subscriber, list_id)` ou `(subscriber, tenant_id, purpose)`, pas par un simple booléen sur l'abonné.
- Le token de désinscription doit encoder quelle liste il vise. Un clic depuis la newsletter ne doit pas couper les emails transactionnels (factures, resets de mot de passe).
- Distingue désinscription marketing et suppression de compte : le `mailto:` one-click ne doit jamais supprimer le compte.
- Conserve l'historique de désinscription (qui, quand, quelle liste) pour ne jamais réinscrire quelqu'un par un import maladroit.
Pourquoi ça protège ta délivrabilité
Les fournisseurs (Gmail, Microsoft, Yahoo) notent les expéditeurs sur des signaux concrets : taux de plaintes (vise < 0,1 %, alerte rouge au-delà de 0,3 %), taux de bounce, présence de spam traps, et facilité de désinscription. Le double opt-in écrase les bounces et les traps à la source ; le 1-clic transforme les "je marque en spam" (qui te coûtent cher) en désinscriptions propres (qui ne te coûtent rien). Tu protèges la réputation de ton domaine d'envoi, donc l'inbox de tous tes futurs emails — y compris les transactionnels.
En pratique : pose le double opt-in dès aujourd'hui sur ton formulaire (statut `pending` + token + purge), ajoute les deux en-têtes `List-Unsubscribe` avec un endpoint POST one-click testé au curl, colle ton adresse postale au pied de page, et modélise le consentement par liste plutôt que par abonné. Ces quatre changements ne demandent pas une refonte — quelques heures de dev — et ce sont eux qui décident si tu finis dans l'inbox ou dans l'onglet Promotions. Commence par celui qui te manque le plus.
La newsletter
En t’inscrivant, tu acceptes de recevoir la newsletter Zylior. Désinscription en 1 clic dans chaque email.