Use case

Test transactional email

Receipts, order and shipping confirmations, invoices, account notices — the mail your product sends after a customer does something is the mail they read most closely. Perenmail gives you a private inbox on a real domain: point your app's transactional email at it, watch it land live, and confirm the template renders, the links resolve, and it authenticates — before a real customer ever sees it.

Scope

What counts as transactional email

Transactional mail is sent in response to something a specific customer did, and it carries account-specific data. That's exactly the mail worth checking by hand before it ships.

Receipts & payment confirmations

The email a customer gets after they pay: amount, line items, tax, and the link back to their invoice or order. Easy to break with a template change, and unforgiving when you do.

Order & shipping confirmations

Order placed, order shipped, out for delivery. These carry tracking links and order numbers that have to resolve to the right page for the right account.

Invoices & billing notices

Upcoming renewals, failed payments, dunning, and the invoice itself — often with a PDF attachment you need to open and check, not just trust.

Account & security notices

New sign-in alerts, plan changes, address updates. Low-glamour mail that customers still read closely, so a wrong name or dead link gets noticed fast.

A lot of this mail is fired from background jobs and third-party events rather than a synchronous request. If yours is triggered by a webhook or an async event, the same private inbox catches it whenever it finally arrives.

How it works

From checkout to a verified receipt

  1. 01

    Create a private inbox on a real domain

    Spin up a registered-only address in one click. It lives on a real domain, so your product's mail server treats it like any other customer — no sandbox SMTP to configure, no special routing to work around.

  2. 02

    Trigger the real flow

    Use that address as the customer and run the action end to end: complete a checkout, place an order, change a plan, request an invoice. The transactional mail is sent by your product exactly as it would be in production.

  3. 03

    The mail lands live

    A listening indicator and poll heartbeat surface the message at the top of the inbox the instant it arrives — no reload, unread updates in place. Because the inbox is persistent by default, the receipt you triggered earlier is still there when you come back to it.

  4. 04

    Toggle Rendered / Text / Source to inspect the template

    Switch between the rendered HTML, the plain-text alternative, and the raw source. Confirm the HTML looks right, the text part isn't empty or garbled, and every link and order number resolved to the correct value — one click opens any link to check where it actually goes.

  5. 05

    Check raw headers and SPF/DKIM/DMARC

    Open the full RFC822 view with synthesized SPF, DKIM, and DMARC results to confirm your own outbound mail authenticates the way you expect. Getting this right is what keeps a receipt out of the spam folder. (Raw source, headers, and attachments are on Personal+.)

Perenmail receives inbound mail — it isn't an SMTP sending service and it doesn't intercept your outbound. You point your product's real outbound at a real Perenmail address and inspect exactly what arrives, the same bytes your customer would get. To go deeper on the auth results in step five, read SPF, DKIM & DMARC explained.

Rendering

See the template three ways, safely

Transactional templates break in quiet ways — a merge field that renders blank, a text part that fell out of sync with the HTML, a link built from the wrong base URL. Perenmail shows you all three views so nothing hides.

Rendered

See the HTML the way a customer would, with every merge field filled in. Catch the blank name, the wrong currency, or the layout that collapses on a real order.

Text

Check the plain-text alternative that clients without HTML fall back to. Confirm it isn't empty, stale, or missing the links and totals the HTML has.

Source

Drop to the raw RFC822 message when you need the exact markup, the headers, or the attachment. This is where you debug the bytes your provider actually sent.

Rendered inside a locked sandbox

HTML bodies render in a locked, script-free sandboxed iframe, which neutralizes stored cross-site scripting from any hostile markup. You can preview a real, full-fidelity transactional email without executing anything it carries — so inspecting the template is never a risk, even when you're testing mail that includes user-supplied content.

Testing a specific slice of your outbound? See webhook email testing for event-driven sends, dig into deliverability with SPF, DKIM & DMARC explained, or read the FAQ to see how the free and Personal+ plans differ on pricing.

Ready when you are

Verify the next receipt before a customer does.

Create a private inbox on a real domain, point your product's transactional email at it, and confirm it renders, resolves, and authenticates. Free forever, no credit card.