Turn Inbound Email Into Structured Data

MultiMail delivers inbound email to your AI agent as clean markdown, with webhook triggers and full API access. Extract orders, invoices, and support requests without running a mail server.


Why this matters

Business-critical data arrives in email every day—purchase orders, invoices, support tickets, form submissions—formatted however the sender chose. Extracting that data means either paying staff to copy it manually or building fragile parsers that break on the first formatting variation. Neither approach scales. An AI agent that reads email the way a trained human would—understanding context and intent rather than pattern-matching on text—is the only approach that handles real-world variation at volume.


How MultiMail solves this

MultiMail receives inbound email on any mailbox—your domain or @multimail.dev—and immediately delivers it to your AI agent via webhook. The email body is stored and served as clean markdown, stripping HTML scaffolding and preserving the structure that matters: tables, lists, quoted replies. Your agent calls read_email to get the full content, runs extraction logic, tags the message for tracking, and optionally replies with a confirmation. The full pipeline runs in seconds, at scale, without you managing SMTP infrastructure or parsing MIME multipart manually.

1

Receive via webhook

Configure a mailbox on your domain or @multimail.dev. When email arrives, MultiMail fires a webhook to your endpoint with the email_id, mailbox, sender, subject, and timestamp. No polling required.

2

Read content as markdown

Call read_email with the email_id to retrieve the full message body as clean markdown. Attachments are listed with signed URLs and MIME types. HTML is stripped to preserve only semantic content—tables, lists, quoted text.

3

Extract structured data

Pass the markdown body to your AI agent with a schema-aware prompt. The agent returns structured JSON—invoice line items, order details, support ticket fields—without brittle regex or format assumptions.

4

Route to downstream systems

Write extracted data to your database, trigger a workflow, or pass it to another service. Use get_thread to access prior messages for context when an email references an earlier conversation, and search_contacts to look up sender history.

5

Tag and confirm

Call set_tags to mark the message as processed, preventing double-handling if both webhook and batch sweep are in use. Optionally call reply_email to send a confirmation receipt to the sender using the same email_id.


Try it with your agent

Pick your platform, copy the prompt, and paste it to your AI agent — it sets up MultiMail and builds the whole flow. Nothing to fill in.

1. Read https://multimail.dev/llms.txt, connect the MCP server, create a free inbox, and set up a verified sender. 2. Use Salesforce REST API with the connected user’s OAuth credentials to look up existing Accounts, Contacts, Leads, Cases, and Opportunities by sender domain, email address, company name, PO number, invoice number, or case reference found in each inbound message. 3. For every new email in the MultiMail inbox, read the full content, extract the sender, company, requested action, dates, amounts, line items, identifiers, urgency, and attachments mentioned, then create or update the most relevant Salesforce record and add a clear activity note with the extracted fields. 4. If the message looks like a support request, create or update a Case; if it looks like a sales inquiry or purchase order, create or update a Lead, Opportunity, or Account activity; if confidence is low, tag it for review instead of writing uncertain data. 5. Run in monitored mode: process and draft confirmations automatically, but ask me only for Salesforce credentials, sending-domain approval, and brand voice before sending live replies.

What you get

No SMTP infrastructure to operate

MultiMail handles MX records, DKIM verification, MIME parsing, and storage. Your agent gets a webhook and a clean API—not a mail server to maintain.

Email body delivered as clean markdown

HTML email is noisy. MultiMail strips tracking pixels, inline styles, and markup scaffolding, leaving the semantic content your agent needs to extract data reliably.

Full thread context on demand

Extraction accuracy improves when the agent can see prior messages. get_thread returns the complete conversation for any email_id, so amendments and revisions are read in context rather than misidentified as new records.

Idempotent processing via tagging

set_tags lets you mark messages as parsed, routed, or errored. Your webhook handler and batch sweep can both run without double-processing the same email.

Scales to high volume without polling overhead

Webhook delivery means your agent activates when email arrives, not on a timer. At high inbound volume, this eliminates the latency and API cost of continuous polling.


Recommended oversight mode

Recommended
monitored
Inbound parsing is read-heavy with low-stakes outbound actions—confirmation receipts, not decisions with downstream consequences. The agent reads email, extracts data, tags messages, and sends brief acknowledgments, none of which require human pre-approval to be safe. Monitored mode lets the pipeline run at full throughput while giving operators visibility into what the agent classified and how. Extraction errors surface in the notification log before they propagate to downstream systems, without creating a bottleneck on every message.

Common questions

How does MultiMail receive inbound email?
MultiMail uses MX records to accept email for mailboxes on your domain or @multimail.dev addresses. When an email arrives, it's stored, converted to markdown, and a webhook fires to your configured endpoint with the email_id. You don't run SMTP servers or handle MIME parsing.
What happens to email attachments?
Attachments are stored in MultiMail's encrypted object storage and listed in the read_email response with signed URLs and MIME types. Your agent can download them, pass them to a document extraction pipeline, or ignore them depending on the use case. PDFs and images are supported.
Can I route different senders or subjects to different extraction pipelines?
Yes. Create separate mailboxes for different workflows—orders@, invoices@, support@—and configure per-mailbox webhooks pointing to different handlers. Alternatively, use a single inbox and classify by sender or subject before routing. set_tags makes it easy to label messages for downstream filtering.
How do I handle emails that arrive before my webhook is ready?
Use check_inbox with a tag exclusion filter to sweep for unprocessed messages: check_inbox(filter={"tags": {"exclude": ["parsed"]}}). This returns any messages your webhook handler missed, so you can process them on recovery without gaps in your extraction pipeline.
Does MultiMail verify that inbound email is legitimate?
MultiMail records SPF, DKIM, and DMARC authentication results for each inbound message, available in the read_email response. Your agent can check authentication status before trusting the sender identity—important when parsing instructions or approvals from known business partners.
What's the latency from email arrival to webhook delivery?
Typical webhook delivery is under 5 seconds from SMTP receipt. For latency-sensitive extraction pipelines—real-time order intake, time-bound approvals—use dedicated mailboxes to avoid queue contention with other high-volume inboxes.

Explore more use cases

The only agent email with a verifiable sender

Email infrastructure built for AI agents. Verifiable identity, graduated oversight, and a hosted MCP server. Formally verified in Lean 4.