MultiMail gives Inngest functions auditable, agent-safe email with graduated oversight — from gated approval to fully autonomous sending.
Inngest orchestrates durable, event-driven functions with built-in retries, fan-out, and scheduled execution. When those functions send email — onboarding sequences, lifecycle alerts, transactional confirmations — you need guarantees that Inngest itself doesn't provide: identity verification, human approval gates, and a full audit trail of who sent what and when.
MultiMail's REST API integrates directly inside any Inngest step. Each `step.run()` block can call `send_email`, `decide_email`, or `list_pending` without any additional SDK — just a `fetch` call with your `mm_live_...` bearer token. Inngest handles retry logic and durable state; MultiMail handles email identity, deliverability, and oversight.
The combination is especially useful for AI-driven workflows: an Inngest function can draft and queue emails through MultiMail's `gated_send` mode, pause execution until a human approves via `decide_email`, then resume and record the outcome — all within a single durable function run.
MultiMail's `gated_send` mode queues outbound email and fires an approval webhook when a human acts. Your Inngest function can `step.waitForEvent()` on that webhook, eliminating manual polling and keeping the function durable across approval delays of minutes or days.
Every MultiMail API call from inside a `step.run()` block is recorded with the message ID, sender identity, oversight mode, and decision outcome. Because Inngest replays steps on retry, MultiMail's idempotency keys prevent duplicate sends even when a step runs more than once.
MultiMail cryptographically verifies the sending domain before delivery. Inngest functions often run in background contexts where the originating identity is ambiguous — MultiMail makes the verified sender explicit on every outbound message, satisfying CAN-SPAM and DMARC alignment requirements.
You can set different oversight modes per Inngest function. An early-stage onboarding function can run in `gated_all` while a mature transactional receipt function runs in `autonomous` — both use the same MultiMail mailbox and API key.
MultiMail webhooks deliver inbound email as JSON payloads that map directly onto Inngest event schemas. A `multimail/email.received` event can trigger a classification function, a support ticket function, or an agent response function without any custom webhook adapter.
No code, no dashboard. Paste this to your AI agent — it connects MultiMail, creates an inbox, and builds the flow for you.
Install the Inngest SDK and create a MultiMail account to get your `mm_live_...` API key. You will call the MultiMail REST API directly — no additional package needed.
Create the mailbox your Inngest functions will send from. You can use a `@multimail.dev` subdomain or bring your own domain.
Call `https://api.multimail.dev/send_email` inside a `step.run()` block. Pass an `Idempotency-Key` header derived from the Inngest event ID so retries don't duplicate sends.
In your webhook endpoint, forward the MultiMail payload to Inngest using `inngest.send()`. This lets Inngest functions react to inbound email and approval decisions as typed events.
Choose the right `oversight_mode` for each Inngest function based on risk. Transactional receipts can use `autonomous`; agent-drafted outreach should start with `gated_send` until you have confidence in the output quality.
Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a hosted MCP server. Formally verified in Lean 4.