emails.sh vs Sendinblue

Sendinblue is now Brevo: same company, renamed in 2023. Here is the honest comparison against the platform, and where a transactional API fits instead.

Marketing and lifecycle email · Sendinblue claims checked July 2026

What Sendinblue is

Start with the thing people are usually here to confirm: Sendinblue is Brevo. The company rebranded in 2023, existing accounts carried over, and there is no separate Sendinblue product still being sold. If you are evaluating Sendinblue today you are evaluating Brevo: an all-in-one platform with email campaigns, SMS, WhatsApp, a CRM, chat, landing pages, and marketing automation, plus a transactional email API and SMTP relay underneath it. The old API host and the old SDK package names still turn up in codebases, which is why the name persists.

Where Sendinblue is the better choice

The advice is the same as for Brevo. If you want marketing email, SMS, and a light CRM from one vendor at a low price, it is a strong choice, especially because it prices by monthly email volume rather than by contacts stored, so a large list is not punished. For a small business without engineers it is a better answer than a developer API, including ours.

Where emails.sh differs

Our case is about the transactional half only. Mail your code triggers has different requirements from mail a marketer schedules: a per-message log you can search when a customer says the reset never arrived, webhooks signed so you can trust them, an SDK in the language your backend is written in, and reputation kept away from campaign complaints. That is the whole product here, and inbound MX means replies come back rather than disappearing into a mailbox someone checks.

01

One job instead of a suite

There is no CRM, no SMS, no chat widget, and no landing page builder here. One endpoint sends, one dashboard shows what happened to each message, and one key format authenticates. That is a narrower product on purpose, and the narrowness is the feature when you are debugging.

02

Reputation split from campaigns

If a platform sends your promotions and your password resets, a bad campaign moves the reputation both depend on. We send only transactional mail and separate pools by send type, so the mail people are actively waiting for is not queued behind mail they might report.

03

Written for the assistant doing the work

Every page here is markdown at the same URL plus .md, there is an /llms.txt, and there is an installable skill for Cursor and Claude Code. An assistant integrating a marketing platform has to work out which of several APIs it is meant to be calling before it writes a line.

Side by side

Every row is a claim we could defend with their documentation open beside it. Where they are ahead, the row says so.

Pricing shape
emails.sh Two prices, bought separately. Transactional is per email sent and counts no contacts. Marketing is per contact stored, in tiers from 5,000, with no per-email charge on sends to your own audiences. Neither plan requires the other, so a product that sends receipts to 200,000 users and mails a 4,000-person list pays for 4,000 contacts.
Sendinblue Brevo pricing, by monthly email volume rather than contacts stored.
Free tier
emails.sh Two free tiers that do not require each other: 3,000 transactional emails a month, and 1,000 contacts with unsubscribe handling and broadcast sending included.
Sendinblue A permanent free plan built around a daily send cap of a few hundred emails.
Sending domains
emails.sh One screen: add the domain, copy SPF, DKIM, and return-path records, watch them go green. Unlimited domains on every plan.
Sendinblue Domain authentication with DKIM, shared across the platform account.
Deliverability posture
emails.sh Transactional mail never shares a pool with a campaign, because a receipt landing in spam behind a promotion is the failure that costs you.
Sendinblue Established at scale, tuned for marketing sending patterns.
Receiving mail
emails.sh Inbound MX, parsed MIME, and In-Reply-To threading, so a reply arrives as part of a conversation you can query rather than as a raw webhook body.
Sendinblue An inbound parsing webhook exists. Storage and threading are not the product.
Logs and retention
emails.sh Every message searchable in the dashboard and readable at GET /v1/emails/:id, with its delivery, bounce, and complaint events attached.
Sendinblue Campaign statistics plus a transactional activity view, with retention by plan.
Templates
emails.sh Hosted templates with immutable versions, published separately from saving, referenced by slug from a send, a broadcast, or an automation step. Merge syntax is {{ variable }} with no conditionals or loops, and there is no drag-and-drop editor. If a non-developer needs to lay out an email without touching HTML, that is a real reason to pick the other product.
Sendinblue A drag-and-drop editor plus transactional templates with substitution.
SDKs and frameworks
emails.sh Nine clients (node and typescript, python, php, ruby, go, rust, java, .net, elixir) plus curl, and framework guides from Next.js to Laravel, Rails, and Django.
Sendinblue Brevo API clients, with the older Sendinblue packages deprecated.
Marketing and lifecycle
emails.sh Audiences with double opt-in, flat-rule segments, scheduled broadcasts, and automations built on a canvas that is also a YAML file you can review in a pull request. No A/B testing, no visual builder, no signup forms.
Sendinblue The same product as Brevo since the 2023 rename: contacts, lists, segments, campaigns, and Automations with delays, event waits, and conditional splits, all built in the console.
Webhooks
emails.sh email.delivered, email.bounced, and email.complained, each signed with x-emailssh-signature so you can verify the body before you act on it.
Sendinblue Transactional and marketing event webhooks.
Path for a coding agent
emails.sh Every page served as markdown at the same path plus .md, an /llms.txt index of the whole site, and a Cursor and Claude Code skill you install once.
Sendinblue Human documentation across a broad platform. No installable assistant skill.
Support
emails.sh Email support on every plan including the free one, answered by the people who wrote the API. We are small, and that cuts both ways.
Sendinblue Tiered by plan, with phone and account management at the top.

Moving off Sendinblue, or off Brevo

If your integration still points at the old Sendinblue hosts and package names, it is doing so through compatibility rather than by design. Treat this as a Brevo migration.

  1. 01

    Find the old integration

    Look for legacy Sendinblue package names, the old API host, and the api-key header. Those call sites are your transactional sends. Campaigns scheduled in the UI are a separate concern and are not moving.

  2. 02

    Rewrite the send

    Their body takes sender and to as objects with email and name fields, plus htmlContent and textContent. Ours takes from as a formatted string, to as an array, html and text, and Authorization: Bearer esh_.... Attachments become filename and content_base64 pairs.

  3. 03

    Verify a transactional subdomain

    Leave the domain that signs campaigns where it is. Authenticate a separate subdomain here with our SPF, DKIM, and return-path records, so campaign complaints and transactional delivery stop sharing a reputation.

  4. 04

    Cut over by percentage and keep suppression in sync

    Move 5% of transactional sends, compare bounce and complaint rates for a week, then move the rest. Feed email.bounced and email.complained into the same suppression logic the marketing platform reads, so nobody is emailed after they complain.

Questions

Is Sendinblue still a product?

No. Sendinblue rebranded to Brevo in 2023. The company, the platform, and the accounts are the same, and the name changed to reflect a scope beyond email. Anything you read about Sendinblue applies to Brevo unless it is describing pricing, which has moved since.

Do old Sendinblue API keys still work?

Existing accounts carried over to Brevo, so integrations kept running, but the current SDKs and documentation are published under the Brevo name and the older packages are deprecated. If your code still references Sendinblue packages, that is technical debt worth clearing whether or not you move.

Should I use Brevo for transactional email?

You can, and its volume-based pricing is good value. What you give up is the developer surface: a per-message log built for debugging, signed webhooks, nine language clients, inbound that stores and threads, and reputation separated from your campaigns.

What does emails.sh not do?

Campaigns, segmentation, automation, SMS, chat, a CRM, and a visual editor. If any of those is why you are on the platform, keep it. Move the mail your application sends and leave the marketing where it belongs.

Looking for a Sendinblue alternative?

These products lead with the list and add a send endpoint. We came the other way: the transactional API is the product, and audiences, broadcasts, and automations were built on top of it, so both kinds of mail share your domains, your suppression list, and one delivery log while being kept off each other's sending reputation. Where they are still ahead is the editor, the split testing, and everything a marketer needs to work without a developer.

The free tier is 3,000 emails a month, 100 a day, no card, sending from your own verified domain, with delivery logs, webhooks, and inbound included. Enough to run real traffic through it before you decide.

More Marketing and lifecycle email