Outils d'email pour développeurs : API et séquences
Pour une équipe de développement qui livre un produit SaaS et écrit elle-même ses emails (de un à dix développeurs, un backend capable d'émettre des événements, personne au marketing à plein temps), le meilleur point de départ est Resend : un POST pour les messages du système, un second pour déclencher des automatisations depuis votre code, et des paliers de prix publiés pour 10 000, 50 000 et 100 000 envois. Postmark passe devant si vous n'envoyez que du transactionnel, Amazon SES si vous êtes déjà sur AWS, Loops ou Customer.io quand la séquence compte plus que l'API. Les prix viennent des pages des éditeurs, relevées le 7 octobre 2026.
Une précision de vocabulaire avant de comparer : ici, un email « transactionnel » est celui que votre application déclenche pour une personne précise (réinitialisation du mot de passe, reçu, alerte), et un email « de cycle de vie » est une suite de messages pilotée par ce que fait l'utilisateur (inscription, activation, fin d'essai). Ils n'ont pas les mêmes exigences : le premier doit partir en quelques secondes et ne jamais partir deux fois, le second doit s'arrêter quand l'utilisateur fait ce que vous attendiez de lui. La page email transactionnel ou marketing détaille la frontière, qui dépend de la loi et non du nom de votre outil, et les outils pour l'email transactionnel prennent l'angle purement envoi. Les amateurs de React Email iront aussi voir les outils d'email pour développeurs React.
Quelle situation, quel service
| Votre situation | Commencer par | Pourquoi | À vérifier d'abord |
|---|---|---|---|
| SaaS qui démarre, un seul fournisseur pour tout | Resend | API d'envoi, événements et automatisations dans le même compte ; paliers de prix lisibles | Le plafond gratuit de 100 envois par jour |
| Seulement des messages du système, à isoler du reste | Postmark | Message streams, retries de webhooks documentés avec leur calendrier | Les webhooks ne sont pas signés ; pas de séquences |
| Déjà sur AWS, gros volume, prêt à bâtir le suivi des rebonds | Amazon SES | $0,16 pour 1 000 envois dans Essentials | La sandbox, propre à chaque région |
| Onboarding et fin d'essai avec peu d'événements distincts | Loops | Événement par API, transactionnel inclus dans les plans payants | 4 000 envois par 30 jours en gratuit, avec pied de page |
| Beaucoup d'événements, segments et branches | Customer.io | Track API, éditeur de workflows visuel, 1 million d'emails inclus dans Essentials | Un profil supprimé compte quand même pour le mois |
| Produit B2B où l'on segmente par utilisateur et par entreprise | Userlist | Tarif aux utilisateurs suivis, segments d'utilisateurs et d'entreprises dans Basic | L'enveloppe de messages : 5 fois le nombre d'utilisateurs suivis |
| Envois planifiés et modèles côté API, ou contrat Twilio existant | Mailgun ou SendGrid | Planification à plusieurs jours, modèles enregistrés, lots de destinataires | Rétention des journaux (Mailgun) et palier d'entrée à 50 000 (SendGrid) |
Cinq critères de développeur, dans l'ordre où ils font mal
L'appel d'envoi. Combien de champs obligatoires, quel format (JSON ou formulaire), quelles limites de destinataires. C'est ce que vous écrivez le premier jour. L'idempotence. Votre worker plante après l'appel et rejoue la tâche : le client reçoit-il deux factures ? Les webhooks. Rebonds et plaintes doivent revenir dans votre base, signés ou protégés, avec un calendrier de nouvelles tentatives que vous connaissez. Le prix à votre volume. Un palier publié pour 10 000, 50 000 ou 100 000 envois vaut mieux qu'un tarif par 1 000 qu'il faut extrapoler. La séquence. Savoir si la même plateforme sait enchaîner quatre messages et s'arrêter sur un événement, ou s'il faudra une seconde intégration.
Le classement ci-dessous applique ces cinq critères à des développeurs qui ne veulent pas administrer une infrastructure de courrier. Un service très bien placé ici peut être le mauvais choix pour une grande équipe qui exploite déjà son infrastructure sur AWS ; la section « Quand ces conseils ne s'appliquent pas » en parle.
Le classement : neuf services, du plus polyvalent au plus spécialisé
1. Resend : le point de départ pour un produit qui envoie et déclenche
L'envoi est un POST avec une clé Bearer. D'après la documentation de Send Email, from, to et subject sont obligatoires, auxquels s'ajoute un corps (html, text ou react, ce dernier seulement dans le SDK Node.js) ou un template publié, désigné par son identifiant ou son alias. Un détail qui évite une erreur de validation : un modèle ne se combine pas avec html, text ou react, et chaque variable que le modèle utilise doit être fournie. Le champ to accepte jusqu'à 50 adresses, et scheduled_at reçoit soit une date ISO 8601, soit du langage naturel comme « in 1 min ».
curl -X POST 'https://api.resend.com/emails' \
-H 'Authorization: Bearer re_xxxxxxxxx' \
-H 'Content-Type: application/json' \
-d $'{
"from": "Acme <onboarding@resend.dev>",
"to": ["delivered@resend.dev"],
"subject": "hello world",
"html": "<p>it works!</p>"
}' Exemple cURL de la page Send Email de Resend, repris tel quel.
Pour les séquences, votre backend déclenche un événement. Selon la page Send Event, le champ event doit correspondre au nom configuré dans l'étape de déclenchement d'une automatisation, et il faut fournir exactement l'un des deux champs contact_id ou email. Le payload, facultatif, sert dans les variables des modèles et dans les conditions. Une requête acceptée répond 202, et si aucun contact n'existe pour cette adresse, Resend le crée à l'exécution de l'automatisation.
curl -X POST 'https://api.resend.com/events/send' \
-H 'Authorization: Bearer re_xxxxxxxxx' \
-H 'Content-Type: application/json' \
-d '{
"event": "user.created",
"email": "steve.wozniak@gmail.com",
"payload": {
"plan": "pro"
}
}' Variante « email » de l'exemple cURL de la page Send Event.
Prix. La page de prix de Resend affiche un plan gratuit à $0 (3 000 envois par mois, 100 par jour, 3 domaines), Pro à $20 pour 50 000 envois et $35 pour 100 000, Scale à $90 pour 100 000 et $160 pour 200 000. L'onglet Marketing est gratuit à 1 000 contacts (envois de broadcast illimités, 10 000 exécutions d'automatisation, 3 segments) et passe à $40 pour 5 000 contacts, $80 pour 10 000, $180 pour 25 000, $250 pour 50 000 et $450 pour 100 000. Les automatisations sont affichées à $0,0015 par exécution : vérifiez avant de dimensionner si une « exécution » est une entrée dans le parcours ou chaque étape.
Le piège. Les 100 envois par jour du plan gratuit s'épuisent avant le quota mensuel si une campagne d'inscriptions déclenche d'un coup un mail de bienvenue à chaque nouveau compte. Pour une comparaison directe avec son plus proche concurrent côté API, lisez Resend contre Postmark.
2. Postmark : le transactionnel isolé, avec des webhooks documentés au détail près
La requête POST /email demande l'en-tête X-Postmark-Server-Token et un JSON avec From, To et un corps HtmlBody ou TextBody. L'adresse d'expédition doit correspondre à une Sender Signature enregistrée et confirmée ; To, Cc et Bcc additionnés ne dépassent pas 50 destinataires. Sans MessageStream, le message part dans le flux transactionnel « outbound ». L'envoi par lots accepte 500 messages et 50 Mo par appel, et la documentation prévient qu'un échec individuel renvoie quand même un statut de la famille 200 : il faut lire l'ErrorCode de chaque résultat.
curl "https://api.postmarkapp.com/email" \
-X POST \
-H "Accept: application/json" \
-H "Content-Type: application/json" \
-H "X-Postmark-Server-Token: server token" \
-d '{
"From": "sender@example.com",
"To": "receiver@example.com",
"Subject": "Password Reset",
"TextBody": "Click here to reset your password.",
"MessageStream": "outbound"
}' Exemple de la page Email API de Postmark, sans le champ HtmlBody que l'original contient aussi : TextBody suffit.
Les webhooks demandent une attention particulière. La documentation des webhooks écrit que Postmark ne prend pas en charge la vérification de signature HMAC. Elle recommande l'authentification HTTP Basic dans l'URL du webhook, combinée à une liste d'adresses IP autorisées, ainsi que HTTPS, et conseille de valider la structure de chaque charge avant d'agir. À la création d'un webhook, Postmark teste chaque type d'événement activé et attend un 200 ; si un type échoue durablement, Postmark le marque non vérifié et suspend sa livraison sans toucher aux autres types.
Prix. Sur la page de prix, le curseur affiche pour 10 000 envois Basic $15, Pro $16,50 et Platform $18 ; pour 50 000, $55, $60,50 et $66 ; pour 125 000, $115, $126,50 et $138. Le plan gratuit donne 100 envois par mois sans dépassement possible, donc il sert à tester l'intégration. Basic conserve 45 jours d'historique ; les IP dédiées commencent à $50 par mois et par IP, réservées aux clients à 300 000 emails par mois ou plus sur un plan Pro ou supérieur.
À éviter si vous voulez lancer des séquences depuis des événements produit : il faudra une seconde plateforme. Les équipes qui hésitent entre deux API d'envoi lisent Postmark contre SendGrid.
3. Amazon SES : le coût par envoi le plus bas, au prix de tout construire
SES est de l'infrastructure sans interface de séquences. L'API v2 SendEmail (POST /v2/email/outbound-emails) distingue trois types de message : Simple, où SES assemble le message à partir de l'expéditeur, des destinataires et du corps ; Raw, un message MIME complet que vous fabriquez vous-même, nécessaire avec des pièces jointes ; Templated, avec des balises de personnalisation remplacées par vos valeurs. Un point à noter : la documentation indique que SES peut accepter un message sans l'envoyer, par exemple avec un modèle dont la personnalisation est invalide. Un MessageId en retour ne prouve donc pas la livraison.
La sandbox surprend tout le monde. D'après la documentation sur l'accès à la production, tout compte neuf y entre, région par région : envoi uniquement vers des adresses et domaines vérifiés (ou le simulateur de boîte aux lettres), au plus 200 messages par 24 heures et 1 par seconde. La demande de sortie passe par un formulaire où vous cochez que vous avez un processus pour traiter rebonds et plaintes ; l'équipe AWS promet une première réponse sous 24 heures. Côté notifications, la page dédiée exige d'activer une méthode (email de notification, rubrique SNS ou publication d'événements), configurée par identité et par région ; sans cela, SES renvoie rebonds et plaintes à l'adresse Return-Path du message.
Prix. La page de tarifs de SES indique pour Essentials $0,16 pour 1 000 emails (de 0 à 10 millions par mois), pour Pro $0,22 par 1 000 plus $105 par compte et par région et par mois, et pour Enterprise $0,23 par 1 000 plus $500 par compte, par région et par mois. Son exemple multiplie 250 000 envois par $0,16 pour 1 000 et obtient $40,00. La page liste aussi « Outbound email » à $0,10 pour 1 000 ; regardez dans votre console quelle ligne s'applique à votre compte. Une IP dédiée standard coûte $24,95 par mois.
À éviter si votre équipe attend un tableau de bord avec l'historique de chaque message dès le premier jour : l'économie par envoi se paie en heures de développement. Pour de très gros volumes, la page sur les gros volumes prolonge ce point.
4. Loops : des séquences SaaS légères, avec une API d'événements minimale
La documentation de Send an event décrit un POST https://app.loops.so/api/v1/events/send avec jeton Bearer. Le seul champ obligatoire est eventName, plus email ou userId (l'un des deux suffit, et si vous donnez les deux, Loops cherche un contact correspondant à l'un ou à l'autre et met l'autre à jour). Les eventProperties doivent déjà exister dans Loops avant d'être utilisées dans un appel, ce qui vous oblige à créer les propriétés dans Loops avant le déploiement du code qui les envoie. Les clés racine supplémentaires mettent à jour le contact dans la même requête. Réponses documentées : 200, 400, 405 et 409.
{
"email": "alex@company.com",
"userId": "usr_7f8e9d0c1b2a",
"eventName": "signup",
"eventProperties": {
"plan": "pro"
},
"mailingLists": {
"clm2k8j4h6g0f8d6s4a2b0z8": true
},
"favoriteColor": "blue",
"planName": "Pro"
} Corps de requête de l'exemple OpenAPI de la page Send an event de Loops ; l'URL et l'en-tête d'autorisation sont ceux indiqués ci-dessus.
L'en-tête facultatif Idempotency-Key accepte 100 caractères au plus et doit être unique par requête ; la page recommande des UUID v4 et précise qu'une clé déjà utilisée dans les 24 heures précédentes provoque une réponse 409 Conflict. Le contraste avec Postmark est net sur les webhooks : la spécification OpenAPI de Loops indique que ses webhooks sortants sont signés par les en-têtes webhook-id, webhook-timestamp et webhook-signature, avec un seul endpoint par compte et au plus 10 livraisons par seconde.
Prix. La page de prix de Loops décrit un plan gratuit à contacts illimités mais limité à 4 000 envois sur toute période glissante de 30 jours vers les 1 000 contacts les plus récents, avec un petit pied de page « Powered by Loops ». Le plan payant suit le nombre d'abonnés : $48 à 4 788, $99 à 9 998, $198 à 24 339, $249 à 49 989. Les envois transactionnels sont inclus sans supplément sur les plans payants, et les places d'équipe ne sont pas facturées. Comparé à son rival le plus proche : Loops contre Resend.
5. Customer.io : quand les événements, les segments et les branches décident
Avec Customer.io, votre application déclare des personnes et des événements, et ce sont les campagnes de l'outil qui décident qui reçoit quoi. La Track API utilise l'authentification HTTP Basic. Elle a deux adresses, track.customer.io pour les États-Unis et track-eu.customer.io pour l'Europe, et la page précise qu'un compte européen qui envoie vers les points d'accès américains est redirigé, mais que le trafic transite alors par des serveurs américains où des données peuvent être journalisées. Les événements envoyés sur /v1/track ont leurs limites : 100 octets pour le nom, 100 000 octets pour les données. Le plafond de 1 000 requêtes par seconde n'est pas appliqué strictement, mais un dépassement soutenu peut entraîner une limitation ; pour les objets et les lots, la page recommande la Pipelines API.
Prix. La page de prix de Customer.io donne Essentials à $100 par mois avec paiement mensuel pour 5 000 profils, $145 pour 10 000, $235 pour 20 000, $325 pour 30 000 et $415 pour 40 000 ; chaque profil supplémentaire coûte $0,009, et la page affiche « $505+ » à partir de 50 000. Un million d'emails par mois est inclus et le transactionnel figure dans tous les plans. Premium démarre à $1 000 par mois en facturation annuelle, et les entreprises qui ont levé moins de $10 millions peuvent obtenir un an gratuit via le programme Startup. Le tableau comparatif de la même page place la délivrabilité gérée hors d'Essentials.
Le piège de facturation. La page sur la facturation est explicite : un profil qui existe à un moment de la période compte dans la facture du mois, même supprimé ensuite, et un outil d'intégration qui recrée les profils supprimés les fait compter deux fois. Nettoyer la base en milieu de mois ne réduit pas la facture de ce mois-là. Pour choisir entre ce service et le précédent, Customer.io contre Loops les met côte à côte.
6. SendGrid : l'API d'envoi et l'outil de campagnes sous le même contrat Twilio
SendGrid, du groupe Twilio, envoie via POST /v3/mail/send avec une clé d'API en Bearer. La référence exige personalizations et from ; chaque personnalisation, qui joue le rôle d'une enveloppe avec ses destinataires et ses données, doit contenir to, et le tableau en accepte 1 000 au plus. Un identifiant de modèle commençant par d- désigne un modèle dynamique, qui fonctionne avec dynamic_template_data en syntaxe Handlebars. Le champ send_at planifie un envoi, mais pas plus de 72 heures à l'avance, et l'adresse d'expédition doit être celle d'un expéditeur vérifié.
Prix. La page de prix de l'Email API propose un essai de 100 emails par jour pendant 60 jours, Essentials à partir de $19,95 (le sélecteur affiche $19,95 pour 50 000 et $34,95 pour 100 000) et Pro à partir de $89,95 ($89,95 pour 100 000, $249 pour 300 000, $499 pour 700 000). Marketing Campaigns a sa propre page : plan gratuit jusqu'à 2 000 contacts et 6 000 emails par mois, Basic dès $15, Advanced dès $60. Twilio publie un addendum sur la protection des données.
La limite pratique : le sélecteur d'Essentials commence à 50 000 envois, donc aucun prix de liste n'existe pour 10 000. Et l'essai de 60 jours n'est pas un plan gratuit durable. SendGrid contre Mailgun prolonge la comparaison.
7. Mailgun : planification, modèles et un point d'entrée en formulaire
Mailgun envoie via POST /v3/{domain_name}/messages, en HTTP Basic et avec un corps multipart/form-data, pas en JSON. Il faut from, to et subject (sauf si le modèle les définit déjà) et une source de contenu : text, html, amp-html ou template. Pour un modèle enregistré, t:variables reçoit un dictionnaire JSON, et ces valeurs l'emportent sur les variables v:. Les paramètres préfixés o:, h:, v: et t: sont plafonnés à 16 Ko au total. o:testmode traite le message sans le livrer, et o:deliverytime planifie l'envoi à trois ou sept jours selon le plan. L'envoi par lots avec recipient-variables admet 1 000 destinataires.
Prix. La page de prix montre un plan gratuit de 100 emails par jour, Basic dès $15 pour 10 000 emails (emails supplémentaires dès $1,80 pour 1 000), Foundation à $35 pour 50 000 après un premier mois gratuit et Scale à $90 pour 100 000, également après un premier mois gratuit. Sur le curseur, Foundation affiche $75 à 100 000 emails, Scale $215 à 250 000 et $400 à 500 000. Une IP dédiée supplémentaire coûte $59 par mois. Pour un développeur, une ligne compte autant que le prix : la rétention des journaux, d'un jour sur Free et Basic à cinq jours sur Foundation et trente sur Scale. Déboguer un incident survenu avant-hier sur Basic revient à chercher dans des logs déjà effacés.
8. SMTP2GO : un relais SMTP aux paliers simples
Si votre application parle déjà SMTP et que vous ne voulez rien changer d'autre, la page de prix de SMTP2GO affiche un plan gratuit jusqu'à 1 000 emails par mois (200 par jour), Starter à $10 par mois pour 10 000 emails ($100 par an) et Professional à $75 par mois pour 100 000 emails ($750 par an). Les emails supplémentaires sont facturés $1 pour mille chez Starter et $0,85 chez Professional. Aucun palier n'est publié pour 50 000. Je n'ai pas lu de documentation d'API de ce service pour cette page : le choisir revient à acheter un relais, pas un outil de séquences.
9. Userlist : le suivi par utilisateurs pour un SaaS B2B
La page de prix d'Userlist facture les utilisateurs suivis, pas les envois : Basic coûte $149 par mois jusqu'à 10 000 utilisateurs, avec $10 par mois pour chaque tranche supplémentaire de 1 000 (soit $229 pour 18 000 utilisateurs selon son sélecteur), et Professional $349 par mois pour les mêmes 10 000, avec $12 par tranche. Chaque plan inclut une enveloppe de messages égale à 5 fois le nombre d'utilisateurs suivis, avec un plancher de 500 000 messages par période ; au-delà, $1 par 1 000 messages supplémentaires. Basic liste des emails marketing et de cycle de vie, des messages dans l'application et des segments d'utilisateurs et d'entreprises. Le modèle de coût suit donc la taille de votre base d'utilisateurs, pas le trafic de vos messages : un produit qui envoie beaucoup à peu d'utilisateurs y gagne, l'inverse y perd.
Trois flux à brancher dans le premier mois
Quel que soit l'outil retenu, ce sont les mêmes trois flux qui font la différence entre un SaaS qui garde ses utilisateurs et un autre qui découvre les départs dans le tableau de bord. Les jours sont à partir de l'événement déclencheur.
| Flux | Déclencheur envoyé par votre code | Étapes (jours) | Sortie |
|---|---|---|---|
| A. Activation | Compte confirmé | J0 : un seul premier pas, avec le lien direct ; J2 : l'étape suivante, si le premier pas n'est pas fait ; J5 : un exemple concret tiré de votre produit ; J9 : proposition de réponse humaine | L'événement « première action clé » arrive, ou le compte est désactivé |
| B. Fin d'essai | Essai démarré, avec la date de fin dans le payload | J-7 : ce que l'utilisateur a fait pendant l'essai ; J-2 : ce qui se passe à l'expiration ; J0 : essai terminé, ce qui est conservé ; J+3 : dernier rappel avec une réponse possible | L'événement « abonnement activé », ou la désinscription |
| C. Paiement refusé | Échec de paiement signalé par votre prestataire de facturation | J0 : lien vers la mise à jour de la carte ; J3 : rappel de ce qui sera suspendu ; J7 : dernier avis avant la suspension | L'événement « paiement réussi », ou la suspension du compte |
Flux A. Le déclencheur doit partir après la confirmation de l'adresse, pas à l'inscription brute : sinon le premier message tombe sur une boîte que personne n'a validée. Dans votre code, c'est un appel unique à l'API d'événements du service, avec le plan et la date en propriétés. Chez Resend, ce sera le payload ; chez Loops, les eventProperties, à créer au préalable ; chez Customer.io, les données de l'événement. La sortie est l'étape que les débutants oublient : renvoyez un second événement quand l'utilisateur franchit le premier cap, et configurez l'automatisation pour s'arrêter dessus. Vérifiez dans la documentation des workflows de l'outil que cette condition d'arrêt existe avant de vous engager, car je ne l'ai pas contrôlée pour chaque service de la liste.
Flux B. C'est celui qui justifie les plans à conditions : le message J-7 doit citer des faits sur l'usage. Il faut donc que la plateforme puisse lire des propriétés dans le modèle ; la page Send Event de Resend dit que le payload sert aux variables et aux conditions, celle de Loops dit que les propriétés d'événement sont disponibles dans les emails envoyés par l'événement, et Customer.io range la logique de campagne dans son éditeur visuel. Les 10 000 exécutions d'automatisation du plan Marketing gratuit de Resend ou les 4 000 envois par 30 jours de Loops gratuit se consomment vite avec quatre messages par essai : en supposant 500 essais par mois (hypothèse de ma part), cela fait 4 × 500 = 2 000 envois pour ce seul flux, soit la moitié du quota de Loops gratuit.
Flux C. Je pars du principe, pour cette page, que la logique de nouvelle tentative de paiement vit chez votre prestataire de facturation, et que l'outil d'email envoie seulement des messages. Votre code reçoit l'événement d'échec et le transmet. Ces messages sont transactionnels par nature (le client doit les recevoir pour garder son accès) et méritent un chemin d'envoi direct, avec clé d'idempotence, plutôt qu'une file de séquence marketing. L'article sur l'intégration email avec Stripe détaille les événements concernés, et les séquences de conversion d'essai le fond du flux B.
Idempotence, webhooks et sandbox : ce que vous codez vous-même
Une facture envoyée deux fois est pire qu'un mail de bienvenue en double. Deux services de la liste documentent un mécanisme : Resend avec Idempotency-Key (unique par requête, valable 24 heures, 256 caractères au maximum), et Loops avec le même en-tête (100 caractères, 409 en cas de réutilisation dans les 24 heures). Pour les autres, je n'ai pas trouvé de mécanisme équivalent dans les pages consultées ; la parade est d'enregistrer votre propre identifiant d'envoi, par exemple « facture-1042-j0 », avant d'appeler l'API, et de ne pas réappeler s'il existe déjà.
Les webhooks inversent le problème : les doublons vous arrivent. D'après la documentation de Postmark, un webhook est relancé après toute réponse 5xx, un 408, un 429 ou un échec réseau ; tout autre code 4xx (400, 401, 403, 404, 405, 410, 422) est jugé permanent et l'événement est abandonné. Il y a six tentatives, espacées de 1, 5, 10, 10, 10 et 15 minutes, puis Postmark renonce, et chaque requête porte un en-tête X-PM-Retries-Remaining. Conséquence concrète : un endpoint qui répond 400 à cause d'un champ inattendu perd l'événement pour toujours. La même page conseille de stocker le MessageID ou l'en-tête X-PM-Webhook-Trace-Id (stable d'une tentative à l'autre) et de le tester avant d'agir. Répondez 200 quand l'événement est traité ou déposé dans une file durable, et un code non 2xx seulement si vous voulez qu'il soit relancé.
Chez Amazon SES, décidez avant le premier envoi réel comment vous apprendrez les rebonds et les plaintes. Pour tous : configurez SPF, DKIM et DMARC sur le domaine d'expédition avant d'envoyer de la production, et testez d'abord avec des adresses que vous contrôlez ; le guide de délivrabilité détaille la procédure.
Ce que coûtent 10 000, 50 000 et 100 000 envois par mois
Dollars par mois selon les pages de prix liées plus haut, relevées le 7 octobre 2026. « n. d. » signifie que l'éditeur n'affiche pas de palier à ce volume ; je n'interpole jamais entre deux paliers.
Envoi transactionnel
| Service et plan | 10 000 envois | 50 000 envois | 100 000 envois |
|---|---|---|---|
| Resend Pro | $20 (le plan couvre jusqu'à 50 000) | $20 | $35 |
| Postmark Basic | $15 | $55 | n. d. (à 125 000 : $115) |
| Postmark Pro | $16,50 | $60,50 | n. d. (à 125 000 : $126,50) |
| SendGrid Email API Essentials | n. d. (le sélecteur démarre à 50 000) | $19,95 | $34,95 |
| Mailgun | Basic $15 | Foundation $35 | Foundation $75 (curseur) ou Scale $90 |
| SMTP2GO | Starter $10 | n. d. | Professional $75 |
| Amazon SES Essentials | $1,60 (calculé) | $8,00 (calculé) | $16,00 (calculé) |
Les chiffres de SES sont de ma propre arithmétique : $0,16 par tranche de 1 000, donc 10 × $0,16 = $1,60 pour 10 000 envois, 50 × $0,16 = $8,00 pour 50 000 et 100 × $0,16 = $16,00 pour 100 000 ; l'exemple de la page de SES fait le même calcul avec 250 000 envois pour arriver à $40,00. L'écart avec le reste est réel mais se mesure en dizaines de dollars, et chez SES il arrive sans traitement des rebonds ni modèles prêts. Mailgun affiche deux valeurs à 100 000 envois parce que le curseur donne $75 pour Foundation tandis que la carte Scale à $90 liste 30 jours de journaux et 5 000 validations incluses ; confirmez quel plan vous est appliqué.
Séquences par événements
| Outil et plan | 5 000 contacts | 10 000 contacts | 50 000 contacts |
|---|---|---|---|
| Loops (payant) | $48 (à 4 788 abonnés) | $99 (à 9 998) | $249 (à 49 989) |
| Resend Marketing Pro | $40 | $80 | $250 |
| Customer.io Essentials | $100 | $145 | dès $505 (50 000 profils et plus) |
| Userlist Basic | n. d. | $149 | n. d. |
Chaque outil compte une chose différente : Customer.io des profils, Loops des abonnés, l'onglet Marketing de Resend des contacts, Userlist des utilisateurs suivis. Les colonnes de Loops ne tombent pas exactement sur 5 000, 10 000 et 50 000 parce que son curseur publie des chiffres précis (4 788, 9 998, 49 989) ; je les ai gardés tels quels.
Deux exemples chiffrés
SaaS de 5 000 comptes, 10 000 mails transactionnels par mois, plus l'onboarding. Avec un seul outil : Loops à $48 (4 788 abonnés, transactionnel inclus) ou Customer.io Essentials à $100 pour 5 000 profils. Avec deux fournisseurs : Postmark Basic $15 + Loops $48 = $63, ou, en restant chez un éditeur, Resend Pro $20 + Resend Marketing $40 = $60 si les deux plans se cumulent, ce que la page de prix, qui les présente dans des onglets distincts, ne dit pas : vérifiez-le avant de payer. La variante SES + Loops donne $1,60 + $48 = $49,60, au prix d'un suivi des rebonds à construire.
SaaS de 25 000 comptes qui envoie 100 000 mails par mois. Resend Pro $35 + Marketing $180 (25 000 contacts) = $215 ; Loops à 24 339 abonnés, $198, avec le transactionnel inclus sur les plans payants ; Postmark Basic au palier de 125 000 envois, le plus proche publié ($115), + Loops $198 = $313. Customer.io n'affiche pas de palier à 25 000 profils : $235 à 20 000 et $325 à 30 000, donc le prix exact se lit sur le sélecteur. La différence entre $198 et $215 pèse moins que la question de savoir qui maintient deux intégrations.
Pièges et cas où ces conseils ne s'appliquent pas
Vous avez déjà un service d'envoi. Si une équipe plateforme gère SES ou un relais SMTP interne, ajouter un second fournisseur « plus agréable » pour les séquences peut dupliquer votre domaine d'expédition et fragmenter la réputation. Dans ce cas, demandez d'abord à l'équipe ce qu'elle expose déjà.
Vous envoyez surtout des newsletters ou des campagnes. Cette page traite des messages que le produit déclenche. Pour un envoi éditorial régulier, d'autres outils sont mieux placés, et la page sur les outils pour newsletters prend le relais.
Un prix unique ne désigne pas un palier. Resend « à $20 » couvre jusqu'à 50 000 envois, Postmark « à $15 » 10 000 ; Loops, Customer.io et Userlist grimpent avec la base, pas avec les envois. Avant de comparer, convertissez tout en « dollars par mois à mon volume ».
Les limites gratuites cassent en production, par surprise. 100 envois par jour chez Resend, 100 par mois chez Postmark (sans dépassement), 200 messages par 24 heures dans la sandbox SES, 4 000 envois par 30 jours chez Loops : chacune se heurte à un pic d'inscriptions. Mettez une alerte sur votre propre compteur d'envois bien avant la limite.
Le premier envoi échoue souvent sur l'expéditeur. Postmark exige une Sender Signature enregistrée et confirmée, SendGrid un expéditeur vérifié, SES une adresse « From » vérifiée même une fois sorti de la sandbox. Vérifiez le domaine d'expédition avant d'écrire la première ligne de code d'envoi, pas la veille de la mise en production.
Consentement, désabonnement et RGPD : les bases
Les emails de prospection relèvent en France du consentement et de règles précises. La CNIL, sur sa page La prospection commerciale par courrier électronique, SMS-MMS et automate d'appel, explique que le consentement doit être libre, spécifique, éclairé et univoque pour les particuliers, avec une exception pour la prospection de clients existants sur des produits ou services analogues, et que chaque message doit proposer un moyen simple de refuser les envois suivants. La même page précise que l'exception ne joue pas lorsqu'aucune vente ni aucun service n'a eu lieu, même si la personne a créé un compte en ligne : un compte d'essai gratuit n'ouvre donc pas automatiquement la porte aux emails promotionnels. Consultez un juriste pour votre cas ; cette page n'est pas un conseil juridique.
Côté fournisseurs, je ne formule ici que deux points issus des pages éditeurs : Customer.io propose des serveurs américain et européen (voir ses adresses de Track API plus haut) et publie un accord de traitement des données, et Twilio publie l'addendum cité pour SendGrid. Pour les autres services, je ne fais aucune affirmation sur l'hébergement ou les accords de sous-traitance : demandez-les à l'éditeur et faites-les relire.
Questions fréquentes
Faut-il un fournisseur pour les emails transactionnels et un autre pour les séquences d'onboarding ?
Pas forcément. Loops inclut l'envoi transactionnel dans ses plans payants, Customer.io le range dans tous ses plans, et Resend ajoute un onglet Marketing avec des automatisations à côté de son API d'envoi. Deux fournisseurs ne s'imposent que si vous tenez à isoler les messages du système de tout le reste, et vous paierez cette séparation en double configuration : domaine d'envoi, désabonnements et rebonds à synchroniser entre les deux.
Pourquoi mes emails de test via Amazon SES n'arrivent-ils qu'à certaines adresses ?
Un compte SES neuf démarre en sandbox, séparément dans chaque région AWS : l'envoi n'est possible que vers des adresses et domaines vérifiés (ou le simulateur de boîte aux lettres), dans la limite de 200 messages par période de 24 heures et d'un message par seconde. Une adresse de client non vérifiée ne recevra rien tant que vous n'avez pas demandé l'accès à la production, et la documentation précise que la demande se fait région par région.
Comment éviter qu'une nouvelle tentative envoie deux fois le même email ?
Chez Resend, ajoutez un en-tête Idempotency-Key unique par requête : la clé est valable 24 heures et peut compter jusqu'à 256 caractères. Chez Loops, le même en-tête (100 caractères au plus) fait répondre 409 Conflict si la clé a servi dans les 24 heures précédentes. Pour les autres services, je n'ai pas trouvé de mécanisme équivalent dans les pages consultées : conservez votre propre identifiant d'envoi et testez-le avant d'appeler l'API.
Combien coûte l'envoi de 50 000 emails transactionnels par mois ?
Selon les pages de prix du 7 octobre 2026 : $8,00 chez Amazon SES Essentials (50 × $0,16, calcul fait à partir du tarif par 1 000 envois), $19,95 chez SendGrid Essentials, $20 chez Resend Pro, $35 chez Mailgun Foundation, $55 chez Postmark Basic. SMTP2GO ne publie pas de palier à ce volume. Journaux, IP dédiée et support se facturent ou se limitent différemment d'un service à l'autre.
Le plan gratuit de Loops suffit-il pour un SaaS en production ?
Tant que le produit est jeune, oui : le plan gratuit accepte des contacts illimités mais seulement 4 000 envois sur toute période glissante de 30 jours vers les 1 000 contacts les plus récents, avec un pied de page « Powered by Loops » et 10 emails par seconde au maximum. Au-delà, le plan payant affichait $99 pour 9 998 abonnés sur la page de prix le 7 octobre 2026.