Guide

Inbound email webhook tutorial

Learn how to receive email as a webhook, parse the payload into JSON, and wire it up to your application in about five minutes.

1. Create a bridge

Sign up and create your first bridge. You'll get a unique inbound email address that looks like abc123@webhook.inboxbridge.io. Any email sent to this address will be parsed and forwarded to your webhook URL.

2. Configure your webhook endpoint

Point the bridge at any HTTPS endpoint that accepts POST requests. Inbox Bridge sends a JSON payload with the parsed message.

{
  "from": "sender@example.com",
  "to": "abc123@webhook.inboxbridge.io",
  "subject": "Hello",
  "text": "Plain text body...",
  "html": "<p>HTML body...</p>",
  "headers": { "Message-ID": "..." },
  "attachments": [
    { "filename": "report.pdf", "contentType": "application/pdf", "size": 12345 }
  ]
}

3. Handle the payload

In your handler, read the JSON body and do whatever your app needs — create a ticket, file a lead, store an attachment. Return a 2xx status to acknowledge delivery.

app.post('/inbound', async (req, res) => {
  const { from, subject, text, attachments } = req.body
  await db.tickets.create({ from, subject, body: text })
  res.sendStatus(200)
})

4. Retries and replay

If your endpoint returns a non-2xx response, Inbox Bridge retries with exponential backoff according to your plan's retry limit. You can also manually replay any delivery from the bridge detail page.

5. Test your integration

Send a test email to your bridge address from any email client. Open the bridge's delivery log to see the request URL, response code, duration, and raw payload. Hit replay to test error paths.

Related