Transactional email, designed.
The receipt, the reset link, the welcome. Designed in an editor anyone can use, sent with one API call.
Free to start. No card needed.
From orders@yourcompany.com
To anna@kellerpaper.com
Subject Your order is confirmed
receipt
Thanks for your order, {{firstName}}
Here's what's on the way. We'll email tracking as soon as it ships.
Acme Supply · 400 Market St, Portland
The most-opened email you send is the one nobody designed.
Receipts and password resets get opened more than anything marketing will ever send. In most products, they are still a string in the codebase.
no-reply@app.example
Order confirmation #82-2214
Dear Customer,
Thank you for your order. Your order (#82-2214) has been received and is currently being processed.
To view the status of your order, please click the following link:
https://app.example/orders/status?id=82-2214&token=8f3aa91c4be0
This is an automated message. Please do not reply to this email.
What most apps send today.
orders@yourcompany.com
Thanks for your order, Anna
Here's what's on the way. We'll email tracking as soon as it ships.
The same email, ten minutes in the editor.
Then your code sends it.
One POST with the template's alias and your data. When the design changes tomorrow, this code stays the same.
await fetch('https://faivelo.com/api/v1/mailboxes/orders@yourcompany.com/send', {
method: 'POST',
headers: { authorization: `Bearer ${process.env.FAIVELO_KEY}` },
body: JSON.stringify({
templateAlias: 'receipt',
variables: {
firstName: 'Anna',
items: [
{ name: 'Canvas tote', price: '$24.00' },
{ name: 'Sticker pack', price: '$6.00' }
],
total: '$30.00'
}
})
})
requests.post(
"https://faivelo.com/api/v1/mailboxes/orders@yourcompany.com/send",
headers={"Authorization": f"Bearer {KEY}"},
json={
"templateAlias": "receipt",
"variables": {
"firstName": "Anna",
"items": [
{"name": "Canvas tote", "price": "$24.00"},
{"name": "Sticker pack", "price": "$6.00"},
],
"total": "$30.00",
},
},
)
Net::HTTP.post(
URI("https://faivelo.com/api/v1/mailboxes/orders@yourcompany.com/send"),
{
templateAlias: "receipt",
variables: {
firstName: "Anna",
items: [
{ name: "Canvas tote", price: "$24.00" },
{ name: "Sticker pack", price: "$6.00" }
],
total: "$30.00"
}
}.to_json,
"Authorization" => "Bearer #{ENV['FAIVELO_KEY']}"
)
curl -X POST https://faivelo.com/api/v1/mailboxes/orders@yourcompany.com/send \
-H "Authorization: Bearer $FAIVELO_KEY" \
-H "Content-Type: application/json" \
-d '{
"templateAlias": "receipt",
"variables": {
"firstName": "Anna",
"items": [
{ "name": "Canvas tote", "price": "$24.00" },
{ "name": "Sticker pack", "price": "$6.00" }
],
"total": "$30.00"
}
}'
200 · queued from orders@yourcompany.com
Thanks for your order, {{firstName}}Anna
Here's what's on the way. We'll email tracking as soon as it ships.
Strict by default.
A missing variable is a 422 naming the field, and nothing is sent.
Data can't inject layout.
Variables are escaped and applied after the HTML is compiled, so user data stays data.
Your DKIM, your domain.
Sends come from a mailbox you already host here, signed like the rest of your mail.
Webhooks for every event.
Delivered, bounced, complained — each event POSTs to your endpoint with an HMAC-signed payload.
Built to reach the inbox.
The template is half the job. The records, monitoring and bounce handling underneath come with your domain.
SPF and DKIM, verified
Guided records, checked against live DNS. Sending unlocks once they pass.
DMARC from day one
A DMARC record ships with setup, so providers know how to treat mail pretending to be you.
One-click DNS on major hosts
Connect Cloudflare, Google, Vercel, GoDaddy and more, and the records write themselves.
Monitoring after day one
If a record drifts or your nameservers change, you get an alert and the exact fix.
Bounces and complaints handled
Hard bounces and complaints are suppressed automatically, before they dent your reputation.
No new domain to warm
Transactional mail rides the trust your domain already earned — no separate sending domain to verify and warm.
Coming from Resend or Postmark?
Templates live with your mail, not your codebase.
No React components to maintain. A copy tweak is an edit, not a deploy.
Nothing new to warm up.
Mail ships from the domain you already host here, with DKIM and SPF already passing.
No second invoice.
Transactional email is included on every paid plan — same bill as your mailboxes and domain. Starter ($6/mo) includes 500 sends a month, Growth ($12/mo) 10,000, Pro ($24/mo) 100,000 at 60 recipients a minute. No per-email pricing.