// for developers

Transactional email that lands in milliseconds, not the spam folder.

Password resets, magic links, OTP codes, and receipts have to arrive the instant your API fires them. When SES, Postmark, SendGrid, or Mailgun mail slips to spam, users churn silently and no error ever hits your logs. Unspam tests where your transactional mail actually lands, before your first support ticket says "I never got the email."

// the pain

The deliverability problems we hear most.

A password reset that never arrives

Your API returns 200, the ESP accepts it, and the mail still lands in spam. The user can't log in, never opens a ticket, and just leaves. It is a silent failure your stack will never surface.

SPF, DKIM, and DMARC drift across senders

Transactional from Postmark, marketing from SendGrid, billing from SES, all on the same root domain. One bad SPF include or an unaligned DKIM key and the receiver starts filtering everything. DNS lies about whether it actually aligns at the inbox.

No deliverability gate in your pipeline

You run unit tests on the template render, but nothing checks whether the email reaches Gmail. A reputation regression ships to production the same way a green build does, and you find out from users.

// why Unspam

Why teams like yours pick Unspam.

// placement

Per-provider placement for the mail your API sends.

Send a real reset or receipt to the Unspam seed list and see Inbox, Promotions, Spam, or Missing at Gmail, Outlook, Yahoo, Zoho, ProtonMail, and AOL. The verdict that actually matters, not what your ESP accepted.

PLACEMENT · 6 PROVIDERS · 4s 4 / 6 INBOX
G gmail.com inbox · primary
O outlook.com inbox · focused
Y yahoo.com inbox
Z zoho.com inbox
P protonmail.com promotions
A aol.com spam · junk
primary inbox rate 67% · ↑ 4 pts this week
// scoring

A pre-send score you can read like a test result.

One message in, a full breakdown out: SPF/DKIM/DMARC verdict, content flags, blocklist hits, and HTML issues. Calibrated to real placement, so the number maps to whether users get the email, not to a generic rule list.

UNSPAM SCORE · scan #4189 excellent
90 / 100
high deliverability · likely inbox
industry avg · 78 ↑ +12 vs avg
SPF · DKIM · DMARC aligned +3
12 / 12 links healthy +1
Missing List-Unsubscribe-Post −10
HTML / text ratio 1.8 +1
// how it works

How it works.

01

Send from your stack

Trigger a real password reset, magic link, or receipt from SES, Postmark, SendGrid, Mailgun, or your own SMTP to the Unspam seed address. Same code path your users hit.

02

Score the message

Get the spam score with the SPF/DKIM/DMARC verdict, content flags, blocklist status, and HTML render issues, with the exact diff to fix each one.

03

See placement per provider

Inbox vs Promotions vs Spam vs Missing across Gmail, Outlook, Yahoo, Zoho, ProtonMail, and AOL. The number that decides whether the login link gets clicked.

04

Put it on Autopilot

Schedule re-tests on each transactional flow. Get an alert the morning placement slips, the same way you would page on an outage, because a reset that doesn't land is one.

// use cases

A few common workflows.

Transactional email is infrastructure. When it breaks there is no stack trace, just users who can't log in. These are the checks engineering teams wire up first.

  • Password reset and magic-link reliability

    Test your auth emails across consumer Gmail and corporate Google Workspace. A 70% inbox rate is a silent login failure for nearly a third of your users, and your funnel will never show it.

  • Pre-launch deliverability baseline

    Before you flip traffic to a new sending domain, verify SPF/DKIM/DMARC across every subdomain your stack uses and lock in a placement number to compare against once volume ramps.

  • Multi-ESP authentication audit

    Send one test through each provider your product uses, Postmark for transactional, SES for billing, SendGrid for marketing, and confirm every sender aligns DKIM and DMARC on the same root domain.

  • Return-path and bounce-domain check

    Confirm your custom return-path (envelope-from) is aligned and resolving, not falling back to the ESP default. Misaligned return-path is a quiet DMARC failure that filters mail at the receiver.

  • CI-style scheduled checks per flow

    Run a daily Autopilot test on each flow: reset, OTP, receipt, billing. Alert on regression so an engineer sees it before a user does, on the same threshold you would page for downtime.

  • ESP migration regression testing

    Moving from Mailgun to SES or SendGrid to Postmark? Run before-and-after tests on every transactional flow so a reputation regression doesn't ship to production unnoticed.

// FAQ

Frequently Asked Questions

The deliverability questions engineering teams ask before wiring Unspam into a transactional pipeline.

Does Unspam integrate with my ESP's API (SES, Postmark, SendGrid, Mailgun)? +

No, and that is by design. Unspam never connects to your ESP account. You add the Unspam seed address to your own tool and send a real message to it through SES, Postmark, SendGrid, Mailgun, or your own SMTP, then read the results in Unspam. Testing whatever actually arrives at the seed list means the originating provider is irrelevant. If SendGrid mail is already going to spam, the SendGrid fix guide walks through the common causes; for SES, see the Amazon SES guide.

How does Unspam help with SPF, DKIM, and DMARC alignment? +

Every test breaks down which mechanism passed, failed, or aligned for that specific message, so you see exactly which sender record was used instead of grepping DNS. You can also run the standalone SPF, DKIM, and DMARC checkers against your domain, or the full email health check. The inbox-placement test then tells you whether that alignment actually moves placement at the inbox.

Is there an API I can call from CI? +

Yes. Unspam offers an email spam checker API to score a message programmatically and an inbox placement API to run seed-list placement tests. Wire either into the pipeline that ships your transactional templates so a deliverability check runs alongside your other tests. Note the test itself is still a real send to a seed address, the API drives the run, it does not hook into your ESP.

What inbox-placement threshold should I gate transactional mail on? +

For password resets, OTP codes, and billing, treat anything below 95% inbox placement at the major providers as a failure worth paging on. These are the highest-trust messages you send. Marketing and promotional mail tolerates more. You set the threshold per flow inside Autopilot.

Does this replace my ESP's deliverability dashboard? +

Different layer. Your ESP reports what it accepted, bounced, or got a complaint on. Unspam reports where the accepted mail actually went at the receiving end, Inbox vs Promotions vs Spam vs Missing per provider. They are complementary, and the ESP number alone will tell you everything is fine while users still aren't getting the email.

Can I monitor every transactional flow on a schedule? +

Yes. Autopilot re-runs a test on the cadence you pick and alerts the moment the spam rate crosses your threshold, so you find out the morning placement slips. Pair it with the standalone deliverability monitoring setup, and run an email verifier sweep before bulk sends to flush invalid addresses that would drag down a placement run.

// ready when you are

A reset that doesn't land is an outage. Catch it first.

Run a free placement test on a real transactional send. No card, no signup, just the verdict.