Transactional email that lands, sent from Africa.
Sendbaze runs on Amazon SES in the Africa (Cape Town) region and owns everything around it: domain setup a non-developer can finish, warm-up, suppression, complaint handling and the headers Gmail expects.
send.ts
import { Sendbaze } from "@sendbaze/sdk";
const sendbaze = new Sendbaze({ apiKey: process.env.SENDBAZE_API_KEY! });
const { id } = await sendbaze.emails.send({
from: "orders@yourshop.co.za",
to: "thandi@example.com",
subject: "Your order #1042 has shipped",
html: "<p>Tracking: <b>CG123456789ZA</b></p>",
});
// id: "em_01j9..." — status arrives by webhookWhat it does
Everything a product needs to send email
- Send in one call
- to, cc, bcc, reply-to, HTML or a template with variables, attachments up to 10 MB, tags and custom headers. Batches of up to 1,000 with per-item results.
- A domain wizard people finish
- Three DKIM CNAMEs, a MAIL FROM MX and SPF, and a suggested DMARC record, each with a copy button and registrar-specific help for Cloudflare, GoDaddy and local registrars such as Afrihost and Xneelo.
- Per-record verification
- We poll every five minutes and show pending, verified or failed per record, so you see exactly which one is wrong instead of a single red X.
- Templates with versions
- Double-brace variables with HTML escaping. Missing variables are rejected with the names listed. React Email is supported through the SDK render helper.
- Idempotent by default
- Send the same Idempotency-Key twice within 24 hours and you get the same id back, not a duplicate email in someone's inbox.
- Send a test to yourself
- One button on the domain page. Pick a verified domain, type your address, and prove the setup works before you write a line of code.
Domain setup
A wizard a non-developer can finish
Add the domain, copy the records into your registrar, and watch each one verify. Registrar-specific help covers Cloudflare, GoDaddy and local registrars such as Afrihost and Xneelo.
yourshop.co.za
Re-checked 2 minutes ago · polling every 5 minutes
| Type | Host | Value | Status |
|---|---|---|---|
| CNAME | sb1._domainkey | sb1.dkim.sendbaze.com | verified |
| CNAME | sb2._domainkey | sb2.dkim.sendbaze.com | verified |
| CNAME | sb3._domainkey | sb3.dkim.sendbaze.com | pending |
| MX | 10 feedback-smtp.af-south-1.amazonses.com | verified | |
| TXT | v=spf1 include:amazonses.com -all | verified | |
| TXT | _dmarc | v=DMARC1; p=quarantine; rua=mailto:dmarc@… | suggested |
Deliverability
Why this is worth paying for
SES gives you the pipes. Sendbaze does the parts that decide whether email lands: warm-up, suppression, complaint handling and headers.
- Shared pool with per-org warm-up
- New organisations start at 500 emails a day, doubling daily while the bounce rate stays under 2%. Bad senders cannot burn the pool's reputation.
- Automatic suppression
- Hard bounces and complaints are suppressed globally and per organisation. The list is viewable and exportable, and sends to suppressed addresses return a clear 422.
- Complaint-rate circuit breaker
- Above 0.1% complaints over 24 hours, sending pauses and the owner is emailed. Everyone else on the pool keeps landing in the inbox.
- Header hygiene and one-click unsubscribe
- List-Unsubscribe and List-Unsubscribe-Post on marketing mail, correct Message-ID, Date and Precedence headers. We test against mail-tester and aim for 9 or better.
- Dedicated IP when you need it
- A paid add-on with automated warm-up, for senders above roughly 200,000 a month or with strict reputation requirements.
- Events in under a minute
- Delivered, bounced, complained and rejected events flow from SES to your webhook endpoint and the logs, signed with HMAC-SHA256 and retried for 24 hours.
Verify a domain and send a test to yourself
The fastest proof that your setup works. Free plan includes 3,000 emails a month.