Skip to content

Routing Rules ​

Routes define how inbound emails are matched and where they're delivered. Each route connects a recipient pattern to a webhook URL.

Create a Route ​

bash
curl -X POST http://localhost:8080/routes \
  -H "Content-Type: application/json" \
  -H "X-API-Key: your-api-key" \
  -d '{
    "domain": "yourdomain.com",
    "recipient_pattern": "*@yourdomain.com",
    "webhook_url": "https://yourapp.com/webhook",
    "webhook_secret": "your-signing-secret"
  }'

Pattern Types ​

Exact Match ​

Matches a single email address:

json
{
  "recipient_pattern": "support@yourdomain.com",
  "webhook_url": "https://yourapp.com/support"
}

Only support@yourdomain.com triggers this route.

Wildcard ​

Matches any recipient on a domain:

json
{
  "recipient_pattern": "*@yourdomain.com",
  "webhook_url": "https://yourapp.com/catchall"
}

Matches alice@yourdomain.com, bob@yourdomain.com, etc.

Plus-Addressing ​

MXHook automatically strips plus tags before matching. An email to user+tag@yourdomain.com matches a route for user@yourdomain.com.

This is useful for categorization without creating new routes:

  • support+billing@yourdomain.com → matches support@yourdomain.com
  • support+bug@yourdomain.com → matches support@yourdomain.com

The full original address (with the plus tag) is still included in the webhook payload.

Route Priority ​

Routes are evaluated in priority order. The first matching route wins. More specific patterns (exact match) should have higher priority than catch-all patterns (wildcard).

Webhook Secret ​

The webhook_secret field is optional. When set, MXHook signs every payload with HMAC-SHA256 and includes the signature in the X-MXHook-Signature header. See Webhook Verification for details.

List Routes ​

bash
curl http://localhost:8080/routes \
  -H "X-API-Key: your-api-key"

Delete a Route ​

bash
curl -X DELETE http://localhost:8080/routes/r-1710806400 \
  -H "X-API-Key: your-api-key"

Enterprise: Advanced Routing ​

With the enterprise edition, you get additional routing capabilities:

  • Regex patterns — match recipients with regular expressions (e.g., ^ticket-\d+@yourdomain.com$)
  • Header conditions — route based on email header values (e.g., route based on X-Priority or List-Id)

See Advanced Routing for details.

Released under the Apache 2.0 License.