ingestlayer/recipes

Inbound email → Slack

ingestlayer mints a unique, opaque inbound address for the source. Forward the mail you want ingested to it, and every message is parsed into an event — sender, subject, body, and attachment metadata.

01source

sourceemailInbound email
matchemail.received

02pipeline · 3 steps

  • 01ENRclassifyintent → sales | support | spam
  • 02ENRsummarizelong thread → one line
  • 03MUTredact.piimask PII before posting

03destinations · 1

  • toslackSlack
    channel#alerts

how events arrive

  1. 01

    mint an inbound address

    Add an inbound-email source; ingestlayer generates a unique, opaque address (an in_… local-part) on its inbound domain. Nobody else can claim it, and there's no DNS or MX record to configure.

  2. 02

    forward your mail to it

    Send or forward the messages you want ingested to that address — a forwarding rule, an alias, or a BCC. Only addresses you mint here accept inbound; everything else arriving at the domain is dropped.

  3. 03

    optionally restrict senders

    Set a from-domain allowlist so only mail from domains you trust becomes an event; everything else is dropped at the edge before it reaches a pipeline.

from inbound emaildelivered
{
  "type":    "email.received",
  "from":    "ada@acme.com",
  "to":      "in_7g3k9d2a@inbound.ingestlayer.com",
  "subject": "Demo request — Acme",
  "text":    "Hi, we'd love a demo for a team of 40…",
  "attachments": [
    { "filename": "brief.pdf", "content_type": "application/pdf" }
  ],
  "body_status": "fetched"
}

route it to Slack

Post to any channel in your workspace. Connect once with OAuth, pick the channel per pipeline.

  1. 01

    connect your workspace

    Authorize the ingestlayer Slack app over OAuth from the destinations page. We hold only a channel-scoped bot token, in-region, in the same KMS as your other credentials.

  2. 02

    pick a channel

    Choose any public channel, or invite the bot to a private one. The channel is set per pipeline, so different events can land in different places.

  3. 03

    map the message

    Reference event fields with $event.* in the message template. The default renders a titled block with the event name and its key fields.

in slackdelivered
┌─ #alerts ──────────────────────────────┐
│  ingestlayer  APP                       │
│  user.signed_up                         │
│  email   ada@acme.com                   │
│  plan    pro                            │
│  source  marketing-site                 │
└─────────────────────────────────────────┘

notes

questions

Do I have to change my DNS or MX records?
No. ingestlayer generates the inbound address — you just forward mail to it. There's no MX record, domain verification, or DNS change to set up.
How are attachments handled?
The event includes each attachment's filename and content type so you can branch on them, but the bytes aren't routed — keeping large files out of your chat and your warehouse.
Can it triage email before it reaches a channel?
Yes — classify labels the intent (sales, support, spam) and summarize collapses a long thread to a line, so the channel sees a clean, sorted signal instead of a raw forward.
build this pipelineor read the quickstart →

Inbound email, routed elsewhere

other sources, into Slack