A Postmark alternative, priced in euros.
Like Postmark, Outstamp is for transactional email only. Unlike it, every project sends from its own isolated tenant, and prices are in euros.
- No card needed to test
- Prices in euros, excluding VAT
curl -X POST https://api.outstamp.dev/v1/emails \
-H "Authorization: Bearer $OUTSTAMP_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: welcome-42" \
-d '{
"from": "Acme <[email protected]>",
"to": "[email protected]",
"subject": "Welcome to Acme",
"html": "<p>Your account is ready.</p>"
}'const response = await fetch("https://api.outstamp.dev/v1/emails", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.OUTSTAMP_API_KEY}`,
"Content-Type": "application/json",
"Idempotency-Key": `welcome-${user.id}`
},
body: JSON.stringify({
from: "Acme <[email protected]>",
to: "[email protected]",
subject: "Welcome to Acme",
html: "<p>Your account is ready.</p>"
})
});
const email = await response.json(); // 202, { id, status: queued }import os, requests
response = requests.post(
"https://api.outstamp.dev/v1/emails",
headers={
"Authorization": f"Bearer {os.environ['OUTSTAMP_API_KEY']}",
"Idempotency-Key": f"welcome-{user.id}",
},
json={
"from": "Acme <[email protected]>",
"to": "[email protected]",
"subject": "Welcome to Acme",
"html": "<p>Your account is ready.</p>",
},
)
email = response.json() # 202, { id, status: queued }What is different.
Isolation by default
Every project sends from its own tenant, with its own reputation, limits and suppressions, and the operations handled for you.
Statuses that never overwrite each other
Submission, delivery and complaints are separate facts. A late event cannot erase a newer one, so the timeline stays true.
Failures on purpose
Simulator addresses for bounces, delays, complaints and lost responses, with real events and webhooks.
Plans in euros from €9
10,000 emails a month for €9, excluding VAT, invoiced from Portugal.
Prices side by side.
Postmark's page prices its plans from 10,000 emails a month. Higher volumes are not stated in its text, so we leave them empty.
| Provider | 10,000/month | 50,000/month | 100,000/month | 500,000/month |
|---|---|---|---|---|
| Outstamp | €9Starter | €25Growth | €39Pro | €179Scale |
| Postmark | US$15Basic | Not shown | Not shown | Not shown |
Sources: postmarkapp.com/pricing. "Not shown" means the pricing page does not state a price for that volume in its text.
When Postmark may suit you better.
We would rather you choose well than switch twice.
- You need stored templates today. Outstamp sends the HTML and text you render.
- You process inbound email. Outstamp only sends.
- You want a provider with a long track record. Outstamp is new, and says so.
Moving from Postmark in three steps.
- 1
Create a project and a test key
Send to the simulator from your staging environment while Postmark keeps sending.
- 2
Verify a sending subdomain
Add the DKIM records, plus MAIL FROM and DMARC, on a subdomain such as
send.yourcompany.com. - 3
Switch the call
Render your templates to HTML in your app, then call
POST /v1/emails. The migration guide lists the differences.
Questions about switching.
How do I keep different kinds of mail apart?
With projects. Each project has its own tenant, keys, domains and limits, so one project per stream of mail keeps them separate.
Is Outstamp only for transactional email?
Yes. No newsletters, no purchased lists and no cold outreach.
Can I bring my suppression list?
Yes, with POST /v1/suppressions/batch, so addresses that bounced before stay blocked.
Try Outstamp beside Postmark, in test mode.
No card and no DNS changes until you decide.
- No card needed to test
- Prices in euros, excluding VAT