Consideritdelivered
Email for your app, set up with one command. Run npx postboi init and mail() sends: no DNS, no card, no other provider to sign up for. Receiving,
lists, webhooks and forms are already in the box, and SMS, WhatsApp, push and chat are there
when you want them.
3,000 EMAILS A MONTH FREE, FOREVER · NO CARD · THEN £9 FOR 40,000
02 One prompt
AI‑first.
Mail in a single prompt.
No account needed. Your agent provisions the project, writes the code and hands you a
link; you claim it with one click. Push works the same way: init --push --agent. How it works →
YOU → YOUR AGENT
›add a contact form that emails me, use postboi
THAT'S THE WHOLE PROMPT
YOUR AGENT · MOMENTS LATER
03 The sorter
One API.
Five ways out.
Pick a route. The command that sets it up and the code that sends through it are the same shape every time. That's the whole idea.
TERMINAL
mail()
import { mail } from "postboi"
await mail({
to: "anyone@example.com",
subject: "It works",
body: "<p>Delivered by the boi</p>"
})Hosted sending with one token, or 40+ providers of your own. Read the docs →
SWIPE TO CHANGE ROUTE
04 The chain
Cheapest first.
Stops when it lands.
One call, five ways out. send() tries your channels in cost order and stops the
moment one lands, so a message a free push notification can carry never costs you an SMS.
THE CALL
import { send } from "postboi"
await send({
to: { push: subscription, sms: "+44 7788 223344" },
channels: "cheapest",
message: "Your code is 4291"
})"cheapest" resolves to the order on the right, and every price on it is the real
one.
The switches are whether this person can be reached on a channel at all: a push subscription, a phone number, a Slack webhook. Real accounts are always missing a few. Turn some off and run it again.
- 01 PUSH FREE READY
- 02 CHAT FREE READY
- 03 EMAIL 0.04P READY
- 04 WHATSAPP 1.70P READY
- 05 SMS 2.80P READY
READY WHEN YOU ARE
05 The postbag
No backend?
No problem.
Postboi Forms turns any HTML form into email. Point a plain <form> at a hosted endpoint and submissions arrive in your inbox: spam checked,
rate limited, attachments included.
INDEX.HTML · THE WHOLE INTEGRATION
<!-- any static site, no backend -->
<form action="https://postboi.app/f/form_k3v9x2m1p8q4" method="POST">
<input name="email" type="email" required>
<textarea name="message" required></textarea>
<button>Send</button>
</form>New enquiry from acme.com
- Name
- Ada Lovelace
- ada@example.com
- Message
- Do you ship on Sundays?
- Attachment
- brief.pdf · 42 KB
- 01
Zero configuration
No DNS records, no SDK per vendor, no dashboard safari. One command per channel and you're sending in under a minute.
- 02
Never locked in
40+ email providers, plus Twilio, Meta, The SMS Works, Web Push, FCM, APNs, Huawei, Slack and friends. Swap any of them with one line of config. Your calls never change.
- 03
Cheapest channel first
send() walks your channels in cost order and stops at the first success. Push is free and an SMS is 3p, so stopping early saves the whole message.
- 04
Development is free
Texts and WhatsApp messages are logged locally, never sent. Email lands in a dev inbox. Nothing escapes your laptop, and nothing bills you.
- 05
Type-safe end to end
Full TypeScript with one normalized error shape across every provider and every channel. A failure always tells you which leg broke.
- 06
SvelteKit one-liner
A contact form is a single form action: export const actions = { default: mail }. Built for SvelteKit, works everywhere.
06 The handlers
Or bring
your own.
Postboi handles email by default. The library speaks every provider below through the
same mail() call: bring your own keys, and swapping is a one-line config change.
postboi/ses Elastic Email postboi/elasticemail Mailgun postboi/mailgun Mailtrap postboi/mailtrap Plunk postboi/plunk Scaleway postboi/scaleway SMTP (any) postboi/smtp ZeptoMail postboi/zeptopostboi/ses Elastic Email postboi/elasticemail Mailgun postboi/mailgun Mailtrap postboi/mailtrap Plunk postboi/plunk Scaleway postboi/scaleway SMTP (any) postboi/smtp ZeptoMail postboi/zeptopostboi/brevo Lettermint postboi/lettermint Mailjet postboi/mailjet Mandrill postboi/mandrill Postmark postboi/postmark SendGrid postboi/sendgrid SparkPost postboi/sparkpost Mock (testing) postboi/mockpostboi/brevo Lettermint postboi/lettermint Mailjet postboi/mailjet Mandrill postboi/mandrill Postmark postboi/postmark SendGrid postboi/sendgrid SparkPost postboi/sparkpost Mock (testing) postboi/mockpostboi/cloudflare MailerSend postboi/mailersend MailPace postboi/mailpace Microsoft 365 postboi/microsoft365 Resend postboi/resend Sequenzy postboi/sequenzy Unosend postboi/unosendpostboi/cloudflare MailerSend postboi/mailersend MailPace postboi/mailpace Microsoft 365 postboi/microsoft365 Resend postboi/resend Sequenzy postboi/sequenzy Unosend postboi/unosend- Twilio · sms + whatsapp
- The SMS Works · sms
- Amazon SNS · sms
- Meta Cloud API · whatsapp
- Web Push · push
- Firebase Cloud Messaging · push
- Apple Push Notification service · push
- Huawei Push Kit · push
- Slack · chat
- Discord · chat
- Microsoft Teams · chat
- Telegram · chat
Want another provider? Quit being a baby and open a PR.
07 The inspection
See it land
before you send.
Mail a draft in, or paste the HTML, and it comes back photographed in real clients: real Outlook, real Gmail, a real iPhone. The full report is free on every plan. No ludicrous Litmus fees, and your first test is on us.
OutlookWindows
WORD ENGINE
GmailWeb
GMAIL · DESKTOP
Apple MailmacOS
WEBKIT · DESKTOP
MailiOS
WEBKIT · MOBILE
GmailAndroid
GMAIL · MOBILE
Outlook.comWeb
MS WEBMAIL
×3 Three ways onto the table
01 MAIL IT
TO · THE TEST DESK
acme+test-x7f2ab@send.postboi.email Every run gets its own one-time address. Send from your app, your ESP, anywhere.
02 PASTE IT
RAW HTML LANDS HERENo pipeline yet? The report doesn't care how the email got here.
03 SCRIPT IT
import { mail } from "postboi" await mail({ ...welcome_email, test: "super-email" })One option on the send you already ship. CI files every deploy under the same name.
CERTIFICATE OF INSPECTION · RUN X7F2AB
- SPF
- PASS
- DKIM
- PASS
- DMARC
- PASS
- SPAM SCORE
- 0.2 / 10
- HTML SUPPORT
- 6 CLIENTS × 55 CHECKS
- BLOCKLISTS
- CLEAR
FOR DISPATCH
Every run ends in a stamp.
Pass, and the certificate is yours to keep. Reports hold for 30 days, and a screenshot bought once is yours forever. Fail, and it names the client that broke and why.
08 The meter
A meter.
Not a wall.
Nothing breaks when you run past your included volume. Extra sends are metered. Start free, add a card only when you outgrow it. The other channels bill at your provider's cost; Postboi adds nothing on top, and never charges per contact. Email tests come with every paid plan, and prepaid packs top any plan up, and they never expire. Every plan in plain figures →
£9.00
8,500 emails · inside the included volume
- Free over limit £0 base + 1 email test on us
- Starter £9.00 £9 base + 5 email tests/mo
- Pro £25.00 £25 base + 20 email tests/mo
- Scale £99.00 £99 base + 60 email tests/mo
DRAG THE VOLUME · THE PLAN UNDER IT IS THE ONE YOU'D BE ON
09 Collection
Put the
boi to work.
One command between you and your first delivered message.
Start sending, freeNO CARD · NO DNS · 3,000 EMAILS A MONTH, FOREVER

