Platform · Transactional API
One endpoint. Every transactional email.
Send order confirmations, password resets, and shipping alerts from your backend. Slug-based templates, dynamic variables, delivery logs, and webhooks — in a single REST call.
// POST /api/v1/send/order-confirmation
await fetch("https://api.artmail.io/v1/send/order-confirmation", {
method: "POST",
headers: {
"Authorization": "Bearer am_live_sk_...",
"Content-Type": "application/json"
},
body: JSON.stringify({
to: "sarah@example.com",
variables: {
customer_name: "Sarah",
order_number: "#1042",
order_total: "$89.00",
items: [ ... ],
tracking_url: "https://track.example.com/1042"
}
})
})One endpoint · Slug-based templates · HMAC webhooks · BYOS supported · Suppression built in
From request to inbox in under a second
Your Backend
Issues POST with API key
Artmail API
Validates key, checks suppression
Template + Variables
Renders MJML, optional brand
SES / Resend
BYOS or managed router
Delivery Events
Logs + HMAC webhooks
Slug-based templates with dynamic variables
Define templates in Artmail with a slug like order-confirmation or password-reset. Your backend calls the slug — never raw HTML.
Variables use {{mustache}} syntax and get validated against an optional JSON schema before rendering.
📄 order-confirmation
Subject: "Order {{order_number}} confirmed"
Hi {{customer_name}},
Your order {{order_number}} for {{order_total}} is confirmed.
[Track Your Order]
{{tracking_url}}
Variables: customer_name, order_number, order_total, tracking_url, items[]
Marketing builds the template in Artmail's drag-and-drop editor. Engineering calls the slug. Both stay aligned without syncing HTML files.
Common transactional emails
Order Confirmation
"Your order #{{order_number}} is confirmed"
Password Reset
"Reset your password with this link"
Shipping Notification
"Your order shipped via {{carrier}}"
Payment Receipt
"Payment of {{amount}} received"
Welcome Email
"Welcome to {{company_name}}, {{first_name}}"
Account Alert
"New login from {{device}} in {{location}}"
Or generate any template with AI — describe what you need and Artmail builds the MJML, subject line, and variable schema. Explore AI features →
Receipts that look like your brand, not a plain text dump
Default
Order #1042
Thank you for your purchase.
Track order
With brand styles
Order #1042
Thank you for your purchase.
Transactional templates optionally inherit your brand style — colors, fonts, logo, button design. Set it once, applied to every receipt and alert.
Track every email from queue to inbox
📤 Queued
API call accepted, email queued for delivery
✈️ Sent
Handed off to SES/Resend for delivery
📬 Delivered
Accepted by recipient's mail server
👁️ Opened
Recipient opened the email
🔗 Clicked
Recipient clicked the tracking URL
Alternative path
🔴 Bounced
Recipient address doesn't exist
⚠️ Complained
Marked as spam by recipient
Real-time delivery events piped to your stack
{
"id": "evt_a1b2c3",
"type": "email.delivered",
"timestamp": "2026-03-24T14:22:01Z",
"data": {
"to": "sarah@example.com",
"from": "orders@yourstore.com",
"subject": "Order #1042 Confirmed",
"template_slug": "order-confirmation",
"message_id": "msg_x7y8z9"
}
}Headers on every webhook:
- X-ArtMail-Signature — HMAC-SHA256 of the payload
- X-ArtMail-Timestamp — Unix timestamp for replay protection
| Event | Description |
|---|---|
| email.queued | Email accepted and queued |
| email.sent | Handed off to sending provider |
| email.delivered | Accepted by recipient server |
| email.opened | Recipient opened the email |
| email.clicked | Recipient clicked a link |
| email.bounced | Delivery failed (hard/soft) |
| email.complained | Marked as spam |
Subscribe to specific events per webhook endpoint. Route delivery confirmations to your order system, bounces to your CRM, complaints to your support queue.
Every send, logged and searchable
Filter by template, recipient, status, or date range. Click any entry for the full delivery timeline, rendered HTML preview, and headers.
Transactional email at infrastructure pricing
Your transactional emails go through the same BYOS router as campaigns and automations. Connect AWS SES or Resend, and every API call sends at your provider's direct pricing. Your code doesn't change — only the bill does.
Same suppression checks, same delivery logs, same HMAC webhooks. Automations and transactional share one router. Metrics land in analytics.
100K transactional/month
No feature gating. No per-email add-ons.
Every paid plan includes the full transactional API — templates, logs, webhooks, brand styles, and suppression. Addresses on the suppression list are blocked before send. Same features whether you send 1,000 or 500,000 emails.
Transactional vs. marketing email — you need both
* Critical transactional emails (password resets, receipts) don't require unsubscribe links under CAN-SPAM.
Artmail handles both in one platform. Your brand styles, deliverability tools, and sending infrastructure are shared — no separate vendor for transactional and another for campaigns.
Skip the HTML. Describe what you need.
✨ Template: order-confirmation
📝 Subject: "Order {{order_number}} Confirmed"
📦 Variables: customer_name, order_number, order_total, items[], tracking_url, shipping_address
🎨 Brand style: Applied automatically
Frequently asked questions
Ship your first transactional email today
Create an account, build a template, call the API from staging. Free plan includes the full transactional API.
Platform: Email Marketing · Automation · Analytics · BYOS · Pricing
AI: Email Generator · Image to Email · Figma Import · AI Canvas
Features: Email Builder · Templates · Segmentation · Deliverability
Developers: API Docs · Webhooks · Transactional API