New: campaigns, automations and product emails in the same account. Meet Postal
Sign in Create account

Transactional email

Your system's emails arrive, and you see what happened.

Sign-up confirmations, receipts, access codes, and alerts go out through Postal, on your domain. Every email has a history in the dashboard: delivered, opened, or bounced.

Sign-up is open, start on the Free plan

Who it's for

A platform for those who use it and those who build it

Both work in the same account and look at the same numbers.

01

For non-programmers

Whoever handles support or the product opens the dashboard and checks what happened to an order, a code, or a receipt, without asking the tech team for help.

  • Search by recipient, sender, subject, or email ID
  • Timeline of each send, from sending to opening
  • The email as the person received it
02

For developers

The API follows Resend's format, so people already using it usually just swap the key and the address. SMTP sends show up in the same dashboard.

  • REST API, SMTP, and libraries for Node.js, PHP, and Laravel
  • Idempotency key: repeating a request doesn't duplicate the email
  • Signed webhooks for every event

In five steps

How an email arrives

From your system's request to the inbox, every step is recorded.

send values
email ready
enviar-pedido.js
import { Postal } from 'postal-so';

const postal = new Postal(); // reads the key from POSTAL_API_KEY

await postal.emails.send({
  from: 'Aurora Cosméticos <[email protected]>',
  to: '[email protected]',
  template: {
    id: 'order-shipped',
    variables: { NAME: 'Ana', ORDER: 10482 },
  },
});
200Email queued, with the ID to track it

In plain words: send the “pedido-enviado” template to Ana, filling in the name and the order number.

Sending safety

Test and protect before your first customer

Three safeguards that come built into sending.

In numbers

3ways to send: API, SMTP, and libraries
10delivery events notified by webhook
40 MBof attachments in total, within the plan limit
465 and 587SMTP ports, with TLS and with STARTTLS

Frequently asked questions

What's the difference between transactional and marketing email?

Transactional email responds to an action by the person: confirming a sign-up, getting a receipt, resetting a password. Marketing email is what you decide to send, like newsletters and promotions. For that, use campaigns and automations, which handle unsubscribing.

Do I need to know how to code?

To connect sending to your system, someone on the team needs to set up the API or SMTP. After that, the dashboard works for anyone: search for an email, see the history, and check what happened. On systems like WordPress, you just fill in server, port, username, and password.

Does “Delivered” mean the person saw the email?

No. Delivered means the person's email server accepted the message. It can still land in another folder, and the open only shows up if tracking is turned on for the domain.

Do emails carry any Postal branding?

It depends on the plan. On some plans, sent emails and public forms carry the “Sent with Postal” badge at the bottom. See the plans and pricing.

What if I go over the monthly sending quota?

Without an alternative, sends are refused until the quota renews, on the 1st. On plans that allow it, the owner or an administrator can turn on sending above the quota, charged per thousand extra emails. And, when your plan offers the Sends add-on, you can buy, with a one-time payment, a reserve of sends that is only used after the quota runs out.

Can I send over SMTP, without using the API?

Yes, if your plan includes SMTP. Use the server smtp.postal.so, port 465 (TLS) or 587 (STARTTLS), the username postal, and an API key as the password. Sends go through the same rules and show up in Emails.

Want to try Postal?

Create your account and start on the Free plan.