All features

Inbound email

Receive email, not just send it

Every project gets an address that accepts mail. Something arrives, we check it, parse it and hand it to your application as JSON — with the attachments intact. Replies stop being a dead end.

The problem

Sending is only half a conversation. The moment a customer replies, hits your no-reply address, or forwards an invoice, the email either bounces into nothing or lands in a shared inbox nobody automates. Wiring up your own receiving means running an MX record, a mail server, spam filtering and MIME parsing — for what should be a webhook.

An address that already works

Each project has its own receiving domain from the moment it exists. Anything before the @ arrives, so you can invent an address per purpose without creating anything first.

Prefer your own domain? Point an MX record at us and every address on it arrives the same way. We check the record for you before you go looking for mail that never came.

your address
[email protected]
[email protected]
[email protected]

# all three arrive — nothing to set up per address

Mail becomes a webhook

When a message arrives we scan it for viruses and spam, check SPF, DKIM and DMARC, parse the MIME, and POST you a signed event. The body and any attachments come from the API when you want them, so the delivery stays small.

The message is stored before the webhook fires. If your server was down, nothing is lost — it's still there when you come back for it, and the delivery can be replayed.

email.received
{
  "type": "email.received",
  "data": {
    "email": {
      "id": "3de5e8ff-…",
      "from": "[email protected]",
      "to": ["[email protected]"],
      "received_for": "[email protected]",
      "subject": "Photo of the damage",
      "attachments": [
        { "filename": "photo.png", "content_type": "image/png",
          "content_disposition": "inline", "content_id": "photo001" }
      ],
      "spam": "PASS", "spf": "PASS", "dkim": "PASS", "dmarc": "PASS"
    }
  }
}

Attachments arrive as themselves

Photos, invoices, spreadsheets — download them by id and get back the bytes that were sent, with the original filename and type. Images the sender embedded in the message are marked as such, so you can render a message the way they wrote it.

Every download is served as an attachment, never rendered on our domain, because a file from a stranger is exactly that.

  • Messages up to 40 MB, attachments included
  • Virus-carrying mail is dropped before you ever see it
  • Spam is flagged rather than hidden — you decide what it means

Or just send it to your inbox

Not every team wants to write a webhook handler on day one. Name an address you already read and every message that arrives is sent on to it — attachments, embedded images and formatting exactly as they were sent — while still being stored here for when you do build something.

The copy comes from your own sending address with Reply-To set to whoever wrote it, so replying reaches the customer and not us. Spam stays out unless you ask for it, and mail we forwarded is never forwarded again.

forward one message from code
curl -X POST https://emailbump.com/api/v1/inbound/MESSAGE_ID/forward \
  -H "Authorization: Bearer ebk_your_key" \
  -H "Content-Type: application/json" \
  -d '{ "to": "[email protected]" }'

Replies find their way home

A customer replying to a no-reply address is the most common way email gets lost, because that address is the same for everyone. We read the headers of the reply, match it against the message it answers, and file it with the project that sent the original.

The sender has to be the person that message went to, so a message id someone happens to have seen isn't a way into anyone's inbox.

What this looks like for you

The events worth sending depend on what you sell. Three shapes of business, the events each one tracks, and the segments those events make possible.

Most product email invites a reply — and most products throw those replies away. Receiving turns them into work items, without a support tool in the middle.

Addresses you'd use

support@Replies to any product emailCreates a ticket in your app
ticket-{id}@One address per conversationThe reply is already threaded
invoices@Vendor bills forwarded by staffPDF pulled straight out
bugs@Screenshots from customersInline images arrive as files

What you'd do with it

Open a ticket on reply

email.received on support@

No shared mailbox to watch, no copy-paste

Thread without asking

Match in_reply_to to the message you sent

Replies attach to the right conversation on their own

Ignore the junk

Skip anything flagged spam: FAIL

Your queue is real customers only

Read it in your own inbox

Forwarding rule on support@

Nobody has to log in to see what came in

What you can build with it

  • Support requests and replies arriving as structured data your app can act on
  • Attachments — receipts, photos, documents — pulled straight into your product
  • An address per customer, per order or per ticket, created by inventing it
  • Replies to a no-reply address landing somewhere instead of nowhere
  • Everything forwarded to an inbox you already read, with no code at all

Try it on your own data

Free while you're under 5,000 contacts, and every feature is on every plan.

Start free