Email deliverability

Reliable email delivery for form submissions.

Email delivery is the engine underneath every FormWire notification. Each submission is stored before we acknowledge it, handed to a delivery worker that retries on failure, and every attempt leaves a status you can read, so a lead reaches your inbox, or you can see exactly why it hasn't yet.

F

FormWire <notifications@formwire.com>

to you · just now

Delivered

New submission: Contact form

Name Ada Lovelace
Email ada@example.com
Message Hi! Love the site. Do you take on freelance projects this quarter?

Reply-To: ada@example.com · hit reply, land with your visitor

Deliverability, not just notification

Why form email delivery is an engineering problem

A form email that silently fails is worse than no form at all: the visitor thinks they reached you, and you never know they tried. Most of what makes form email reliable happens after the POST returns: whether the submission survived, whether the send actually landed, and what you can see when it didn't.

That's the job of this page. Where the email integration covers the destination (who receives submissions, how Reply-To and CC/BCC are set), this covers the delivery engine behind it: durable storage, automatic retries, sending-address authentication, and the per-submission status that turns "I think it sent" into something you can check.

The delivery pipeline

How FormWire delivers form emails

Every submission runs the same path, so delivery behaves the same on your first form as on your ten-thousandth.

  1. Stored before we acknowledge

    The moment your form POSTs, the submission is committed to durable storage before the 200 comes back. If FormWire says OK, the lead already exists. Email is what happens next, not the only copy of it.

  2. Handed to a delivery worker

    A background worker picks up the stored submission and sends it to your verified recipients, with Reply-To set to the person who submitted so a reply lands straight back with them.

  3. Retried on failure

    A transient problem (a busy mail server, a momentary timeout) doesn't drop the lead. Delivery is retried automatically with backoff rather than failing on the first attempt.

  4. Status recorded per attempt

    Each attempt updates the submission's delivery status (delivered, retrying, or failed), so you never have to guess whether an email actually went out.

Failure handling

What happens when delivery fails

Mail servers have bad minutes. The design assumption is that a send will occasionally fail, so a failure is a recorded state you can act on, never a lost submission.

  • Nothing is lost

    Because the submission is stored before delivery is attempted, a failed send never loses the lead. The record stays in your dashboard, queryable, regardless of what happens to the email.

  • Retried automatically

    Transient failures are retried with backoff instead of giving up on the first error, so a brief hiccup at your mail provider resolves itself without you doing anything.

  • Marked failed when retries are exhausted

    If delivery still can't succeed, the submission is marked failed rather than disappearing quietly, so a persistently bad address surfaces as a status you can see and fix, not silence.

F

FormWire <notifications@formwire.com>

to you · just now

Delivered

New submission: Contact form

Name Ada Lovelace
Email ada@example.com
Message Hi! Love the site. Do you take on freelance projects this quarter?

Reply-To: ada@example.com · hit reply, land with your visitor

Deliverability

Form email deliverability: SPF, DKIM and spam placement

Whether form email lands in the inbox or the spam folder comes down to how it's sent. FormWire owns that side so you don't have to.

  • Sent from an address FormWire authenticates

    Notifications go out from a consistent FormWire sending address with sender authentication in place, so mailbox providers see a legitimate, aligned sender rather than an unknown one — which is what keeps them out of spam.

  • Reply-To, not spoofing

    Reply-To is set to your visitor so replies reach them, but the message isn't sent "from" an address FormWire doesn't own. Spoofing a sender fails SPF and DMARC checks and lands in spam; Reply-To gives you one-click replies without it.

  • Nothing for you to configure

    You verify the address that receives submissions. You don't set up SMTP, and you don't add SPF or DKIM records for a sending domain. The authenticated sending side is FormWire's to run.

Observability

Delivery status you can check per submission

Reliability you can't see isn't reliability you can trust. Every submission carries its own delivery state, so "did that email go out?" is a thing you look up, not a thing you hope.

  • Delivered, retrying or failed

    Each submission in your dashboard shows exactly where its email is: delivered and done, still retrying, or failed after retries. No log-diving, no support ticket to find out.

  • A stored record behind every email

    The email and the dashboard record are two views of one stored submission. A lead never lives only in your inbox, so a filtered folder or a deleted message can't erase it.

  • Proof a submission was handled

    Because status is tracked per submission rather than per account, you can point to a specific lead and see what happened to it — useful when a visitor swears they submitted and you need to check.

Submissions

Search name, email, message…
Inbox 12 Spam 3
  • Do you take on analytical engines?

    Ada Lovelace · Contact · 2m ago

    delivered
  • Plus one is a golden retriever — okay?

    Hannah B. · RSVP · 28m ago

    delivered
  • URGENT!!! exclusive offer inside 🎁

    cheap-pills-now · Contact · 3h ago

    quarantined
  • Order #418 — I'm a teapot, apparently

    Short & Stout · Order · 4h ago

    delivered
Export CSV GET /v1/submissions → 200

Email deliverability FAQ

Want to set up recipients and routing?

Email notifications for form submissions
Ready in a minute

Delivery you can watch, not just hope for.

Verify your address, paste the snippet, and every submission is stored, delivered with retries, and status-tracked from the first POST.