Transactional emailyour users actually get
Send login codes, receipts and invites from your code or over SMTP. Every delivery, open and bounce lands in one timeline.
One key,API or SMTP.
Use an SDK, plain HTTP or any SMTP client. Same key, same logs and the same webhooks.
const { id } = await inboxjot.emails.send({ from: 'Acme <hello@acme.dev>', to: 'riti@example.com', subject: 'Your receipt from Acme', html: '<p>Thanks for your order.</p>', });
Official SDKs
Node.js, Python and Go, or plain HTTP from anything else.
- Host
- smtp.inboxjot.com
- Port
- 587, 2525 or 465
- Username
- inboxjot
- Password
- Your API key
- Encryption
- STARTTLS or TLS
- Authentication
- PLAIN or LOGIN
- Max size
- 40 MB
Plug in SMTP
Point any SMTP client at Inboxjot and use your API key as the password.
Every email,traced to the inbox.
Each send gets a timeline: when it was accepted, delivered, opened and clicked, and by whom.
- Every Event, in OrderQueued, sent, delivered, opened and clicked, each with its own time.
- Device and PlaceSee the mail app, device and city behind every open and click.
- The Server’s Own ReplyRead the exact answer from Gmail or Outlook when a send goes wrong.
Your receipt from Acme
DeliveredClicked1 Oct 2026 at 12:04 PM via API
Clicked 5 minutes after sending
Delivered in 0.8s, first opened 2m 27s later on Apple Mail.
Today
Riti clicked acme.dev/receipts/1078
12:09 pmRiti opened the email again
12:08 pmRiti opened the email
12:06 pmGmail accepted the email for riti@example.com
12:04 pm250 2.0.0 OK 1727784240 d75a77b69052e-gsmtp
Remote MTA gmail-smtp-in.l.google.com · 0.8s
Inboxjot sent the email from acme.dev
12:04 pmThe Production API key queued this email
12:04 pmRetry all you like,it sends once.
Send an Idempotency-Key, and a retry gets the first response back, not a second email.
- Keys are kept for 24 hours
- A retry replays the first success
- A different body with the same key is refused
- POST /v1/emails10:42:07Idempotency-Key: order-1078Sending
- POST /v1/emails10:42:09Idempotency-Key: order-1078Checking key
- POST /v1/emails10:42:12Idempotency-Key: order-1078Checking key
- POST /v1/emails10:42:20Idempotency-Key: order-1078Checking key
Every event,right in your app.
A signed webhook for each delivery, open, click and bounce, so your app can react the moment it happens.
- Signed with your endpoint’s secret
- Retried when your app is down
- Every attempt kept in the logs
Keep your domaintrusted by every inbox.
We check your DNS records as you add them, and skip anyone who bounced, complained or unsubscribed.
send.acme.co.uk
0 of 6 verified
Type
Name
Status
k7x._domainkey
p2m._domainkey
w9d._domainkey
send
send
_dmarc
Verify Domains Fast
SPF, DKIM and DMARC checked as you go, with what is missing.
- kamran@example.orgBounced
- sukhamoy@example.comComplained
- iris.vale@example.netUnsubscribed
- akhi@example.comBounced
- sam.chen@example.comUnsubscribed
- ada@example.ioComplained
Stop Bad Sends for You
Bounces, complaints and unsubscribes are skipped next time.
And everything elseyou expect from an email API.
Scheduled Sends
Pick a time, then move or cancel it before it goes out.
Batch Sends
Send many emails in one call, each with its own result.
Templates
Send a saved template and fill it with your own data.
Attachments
Add files to any email, from the API or SMTP.
Tags
Label each send so you can find it in the logs later.
Custom Headers
Set your own headers, like List-Unsubscribe or a reply ID.
Open and Click Tracking
On your own tracking domain, turned on per domain.
Logs for Every Call
Every API request and response, kept and searchable.
Questionsabout transactional email
More fromInboxjot
Your first emailis one prompt away
We review every new account, usually within a day.