Overview
Instead of delivering filtered inbound emails to a mail server, you can configure a domain to deliver them as HTTP webhook requests to your application. When an email arrives for your domain, we’ll send a POST request to your configured endpoint with the full email payload. This is ideal for applications that need to process incoming emails programmatically — such as support ticket systems, CRM platforms, or automated workflows.This is different from event webhooks, which notify you about email events (delivered, bounced, etc.). Inbound webhooks deliver the actual email content to your application.
Setting Up Webhook Delivery
Navigate to Inbound Settings
Log in to the JetEmail Dashboard and go to Inbound and select your domain.
Configure Your Endpoint
Enter your Webhook URL — the HTTPS endpoint where you want to receive emails (e.g.
https://app.example.com/inbound).Configure Authentication (Optional)
For additional security, configure a Webhook Secret to sign requests so you can verify authenticity.
Request Format
When an email arrives, we send a POST request to your webhook URL with the following headers:| Header | Description |
|---|---|
Content-Type | application/json |
X-Webhook-ID | Unique job identifier |
X-Webhook-Timestamp | Unix timestamp of the delivery attempt |
X-Webhook-Signature | HMAC-SHA256 signature (when webhook secret is configured) |
Responding to Webhooks
Your endpoint should respond with an HTTP status code to indicate success or failure:| Status Code | Behavior |
|---|---|
2xx | Success — email is acknowledged and delivery is complete |
429 | Rate limited — we’ll retry with backoff |
5xx | Server error — we’ll retry with backoff |
4xx (except 429) | Permanent failure — email is not retried |
Retry Strategy
If delivery fails, we’ll retry with exponential backoff:| Attempt | Delay |
|---|---|
| 1 | Immediate |
| 2 | 30 seconds |
| 3 | 2 minutes |
| 4 | 10 minutes |
| 5 | 1 hour |
| 6 | 4 hours |
| 7+ | Moved to dead letter queue |