Webhooks
Inbound email ingestion and billing events (self-hosters)
Inbound email (SendGrid)
| Method | Path | Description |
|---|---|---|
| POST | /webhooks/inbound/sendgrid | SendGrid Inbound Parse — receives routed email |
Configure SendGrid Inbound Parse to POST multipart form data to:
http://localhost:8000/webhooks/inbound/sendgrid
Gate the URL with INBOUND_WEBHOOK_SECRET via HTTP Basic auth in the Parse URL or a ?key= query param. The handler returns 200 immediately and enqueues an ARQ worker job.
Stripe
| Method | Path | Description |
|---|---|---|
| POST | /webhooks/stripe | Stripe billing events |
Processing pipeline
- Match recipient to inbox local-part
- Dedupe by Message-ID
- Split trusted instruction vs untrusted content
- Enqueue worker: allowlist → parse → route → reply
See the deploy runbook in the repository (docs/deploy.md) for DNS, MX, and DMARC setup.
