DEV Community

ReceiveHQ
ReceiveHQ

Posted on

support@ vs invoices@: recipient filters per webhook endpoint

I'm Sebastian, CTO at ReceiveHQ (Cortena B.V.). Use-case #3 in our series: after you fan out one inbound domain to several webhooks, stop every endpoint from eating every address.

The problem

Yesterday's cut was multi-endpoint fan-out — same MX, prod + staging (or support + billing) without a second domain. Useful, until invoices@ lands on your support ticket webhook and support@ hits the AR pipeline.

Classic escapes: separate MX domains per mailbox, a shared "god" webhook that re-routes in app code, or copy-paste handlers with if (to.includes("invoices")). All work. All get messy under GDPR evidence, retries, and drop-in Postmark/Mailgun parsers.

Filter at the endpoint, not in every handler

ReceiveHQ still parses MIME once in Germany. Delivery is per endpoint. Each endpoint can carry a recipient filter so only matching To / OriginalRecipient addresses forward:

Endpoint Filter idea Destination
Support support@, help@ ticketing webhook (Postmark shape)
Invoices invoices@, billing@ AR / bookkeeping webhook
Catch-all or blackhole unmatched / empty MCP audit, triage later

Same domain. Same MX (mx.receivehq.com). Independent delivery logs and retries. Staging can keep a looser filter; prod invoices stay on the finance URL.

Setup sketch

  1. https://receivehq.com — magic-link sign-in
  2. Domain + MX → mx.receivehq.com, verify
  3. Add two (or more) webhook endpoints — console or MCP create_inbound_domain_endpoint
  4. Set recipient filters per endpoint (address / pattern for that route)
  5. Send tests to support@ and invoices@; confirm with console or list_deliveries

Docs: https://receivehq.com/mcp.md · Webhook shapes: Postmark / Mailgun-SendGrid / CloudMailin

Why this belongs next to fan-out

Fan-out without filters is a firehose. Filters keep least-privilege delivery: finance mail never has to touch the support stack, and support never has to special-case invoice MIME. You still get 14-day .eml retention, per-endpoint backoff (1m→5m→30m→1h→2h), and HTTP 406 drop — without rewriting every handler.

Next: anti-spam / scoring before webhooks fire.

Try: https://receivehq.com · €10/mo or €100/yr · 100k inbound · first 10 free

Trust: hosting · DPA · sub-processors · imprint

Disclosure: I work on ReceiveHQ as CTO & Co-founder of Cortena B.V.

Top comments (0)