Your own return path
Bounces come back on send.yourdomain.com, pointed at us by a
single CNAME. Because the envelope stays inside your domain, SPF aligns
with your From address for DMARC — not only DKIM.
Own MTA · Own IP · Own DNS
esendblue runs its own mail server. Your domain gets its own DKIM key and its own bounce address — not a slot in a shared pool. Two DNS records, and the delivery path belongs to you.
Free plan · 3,000 emails a month · no card required
curl -X POST https://api.esendblue.com/v1/emails \
-H "Authorization: Bearer $ESENDBLUE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"from": "receipts@yourdomain.com",
"to": ["customer@example.com"],
"subject": "Your receipt",
"html": "<p>Thanks for your order.</p>"
}'
const res = await fetch("https://api.esendblue.com/v1/emails", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.ESENDBLUE_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
from: "receipts@yourdomain.com",
to: ["customer@example.com"],
subject: "Your receipt",
html: "<p>Thanks for your order.</p>",
}),
});
import os, requests
requests.post(
"https://api.esendblue.com/v1/emails",
headers={"Authorization": f"Bearer {os.environ['ESENDBLUE_API_KEY']}"},
json={
"from": "receipts@yourdomain.com",
"to": ["customer@example.com"],
"subject": "Your receipt",
"html": "<p>Thanks for your order.</p>",
},
)
{ "id": "82cfba23-d8e0-4a47-905b-2931a09784cd" }
The id you get back follows the message through delivery. Webhooks fire on each state change, and the same history is on the message in the dashboard — including the SMTP code the receiving server actually returned.
email.sentHanded to the receiving serveremail.deliveredAccepted for the recipientemail.openedTracking pixel loadedemail.clickedA tracked link was followedemail.bouncedRefused — the address is suppressedemail.complainedMarked as spam by the recipientemail.delivery_delayedDeferred, still being retriedemail.failedGave up after retriesDeliverability
Bounces come back on send.yourdomain.com, pointed at us by a
single CNAME. Because the envelope stays inside your domain, SPF aligns
with your From address for DMARC — not only DKIM.
A DKIM key is generated per domain and signed on every message. The dashboard checks each record against live DNS and shows what is actually published, not what it hopes is.
A hard bounce suppresses the address and links the suppression to the exact message that caused it. Sending again to a dead address is the fastest way to lose a reputation, so it does not happen twice.
Not a wrapper over somebody else's API. Queueing, retries, TLS and the return path are one system, which is why the failure detail reaches you intact instead of flattened into "failed".
Setup
We generate its DKIM key and show you exactly what to publish.
A DKIM TXT, and a CNAME for the return path. Your
existing SPF record is left alone — the envelope domain carries its own.
Verification re-checks on its own until DNS has propagated. Then the API is live.
Pricing
In rupees, with a dollar price outside India: $20 and $90. Every plan includes all sending features — domains, webhooks, templates, logs and suppression. Volume above the included amount is billed per thousand, so a month that runs over costs what it used and nothing more.
Billed once a year — twelve months for the price of ten. The monthly allowance is unchanged.
₹0/month
3,000 emails
₹1,499/month
50,000 emails, then ₹35 per 1,000
₹6,999/month
100,000 emails, then ₹30 per 1,000
Talk to us
Committed volume, custom terms
Create an account, add a domain, publish two records. The free plan needs no card, and it is the same API on every plan — nothing is held back for the paid tiers.