This task can be performed using Inbound
The easiest way to send & receive emails via code.
Best product for this task
Inbound
cloud
Inbound makes it possible to send transactional & marketing emails, + receive and process the emails via webhooks, and use simple-to-use SDKs.

If you need to receive emails in a SaaS application, an inbound webhook can turn each message into a structured event. This guide shows how to accept incoming email, parse useful fields, and route the result to support tools, a CRM, Slack, or another automated workflow.
Before you build the email webhook
Prepare:
- An inbound email address, such as
[email protected] - A public HTTPS endpoint for webhook events
- A destination system, such as a ticketing service, CRM, or Slack
- A way to verify webhook signatures and store event IDs
- A test message with a known subject, sender, and attachment
An email webhook for SaaS should preserve the original message while exposing useful fields such as sender, recipients, subject, body, headers, and attachments. Inbound provides email sending and receiving through webhooks and SDKs, so you can keep both directions in one application. The deciding factor among cloud products is whether they support this exact workflow.
If you are choosing an implementation approach, compare the tradeoffs in this guide to sending and receiving email with one API.

Step 1: Create the receiving endpoint
Create a POST /webhooks/inbound-email route that accepts the provider's event payload. Your endpoint should:
- Read the raw request body.
- Verify the webhook signature.
- Parse the event.
- Reject duplicate event IDs.
- Return a fast
2xxresponse. - Process the message asynchronously when possible.
A simplified handler might look like this:
app.post("/webhooks/inbound-email", async (req, res) => {
const event = verifySignature(req);
if (await alreadyProcessed(event.id)) return res.sendStatus(200);
await queue.add("process-email", event);
res.sendStatus(202);
});
Keep the endpoint idempotent. Email providers may retry delivery when your application times out or returns an error. Signature verification is also essential because the endpoint is publicly reachable.
For implementation details in TypeScript, use this TypeScript email webhook walkthrough. You can also browse webhook products when evaluating the surrounding workflow.
Step 2: Parse and route the email
Normalize the payload into an internal event:
{
"event": "email.received",
"id": "evt_123",
"from": "[email protected]",
"to": "[email protected]",
"subject": "Cannot reset my password",
"text": "The reset link expired.",
"attachments": []
}
Then choose a route based on the recipient, subject, sender, or metadata.
- For an email webhook for support tickets, create a ticket and attach the original body.
- For an email webhook for form submissions, map fields into your lead or contact model.
- For an email to CRM webhook integration, create or update the contact before adding an activity.
- For an email to Slack webhook integration, post a concise alert with a link to the stored message.
- For automated workflows, enqueue follow-up actions instead of performing everything inside the webhook request.
A contact form email webhook example could route messages sent to [email protected] into a CRM. A support email to webhook example could send [email protected] to ticket creation, then notify a Slack channel only when the subject includes “urgent.”
Step 3: Test and verify delivery
Send test emails that cover plain text, HTML, replies, attachments, unknown senders, and duplicate deliveries. Check that sensitive content is not written to logs unnecessarily.
Use this inbound email processing checklist:
- The endpoint uses HTTPS and verifies signatures.
- Valid events return a timely
2xxresponse. - Duplicate event IDs do not create duplicate records.
- Sender, recipients, subject, body, and attachments are preserved.
- Routing rules have a safe fallback.
- Failed downstream actions are retried or placed in a review queue.
- Logs include correlation IDs without exposing message secrets.
- A test message reaches every configured destination.
For a simpler starting point, Inbound helps you receive and process email through webhooks and SDKs. Once the checklist passes, monitor failed deliveries and downstream records to confirm the workflow continues working with real incoming email.
More topics related to Inbound
Similar topics
- How to Send and Receive Email in an Application Using One API
- Best Email API for Transactional Messages and Inbound Webhook Processing
- How to set up email webhooks to automatically process incoming emails
- How to integrate marketing email campaigns with simple SDK implementation
- How to Choose an Email API for a Startup or SaaS Product
