Coming SoonFumi is in private beta stage
Inbound Email to Webhook API
Fumi instantly turns inbound emails into structured JSON webhooks. So that your AI agents can process them and take actions based on the email content.

Email wasn't built for LLMs.
We fixed that.

You shouldn't need a PhD in email protocols to connect your LLMs to an inbox. Here's what we took off your plate.

The IMAP Nightmare

Polling every 30 seconds. Managing OAuth tokens that expire without warning. Handling rate limits, connection drops, and the joy of debugging why your AI agents missed 47 emails at 3 AM.

The Webhook Dream

No polling, just instant HTTP POSTs. Every email arrives at your workflow the moment it lands. Zero infrastructure to manage.

The MIME Mess

Multipart bodies, base64-encoded attachments, HTML emails with inline CSS from 2003. Your workflow broke just trying to figure out what the email actually says.

Clean JSON

We extract the text, clean the HTML, and format attachments into structured payloads. Your AI agents gets exactly what it needs, nothing more.

The Spam Problem

Newsletters, promos, and phishing attempts flooding your AI agents' inbox. Every junk email is a wasted token.

Built-in Filtering

We drop the spam before it ever hits your workflow.

How It Works

Three steps.
Zero infrastructure.

Point your domain, set your webhook, and start receiving parsed emails in JSON. It really is that simple.

1

Point your MX Records

Give us a domain. We handle the rest.

DNS
$ dig MX inbox.yourapp.aiinbox.yourapp.ai.300 IN MX 10 mx.fumi.run
2

Define your Webhook

Tell us where to POST the parsed data.

Webhook URL
POST https://api.yoursite.com/webhookContent-Type: application/json
3

Receive the Payload

Clean JSON the moment an email arrives.

Payload
{"from": "client@acme.com","subject": "New inquiry","body": "Hi, I need..."}
Use Cases

See it in action.
Pick your workflow.

Click a use case below. Watch how an email becomes a structured event that your app can act on — instantly.

Incoming Email
S

sarah.mitchell@bigcorp.com

to help@yourstore.com

negative

URGENT: Still no refund for Order #48291

It's been 3 weeks since I returned the defective laptop. I've sent two follow-ups with zero response. This is completely unacceptable. I want a full refund of $1,249.00 processed immediately or I'm filing a chargeback and leaving reviews everywhere. Order #48291 Return tracking: 1Z999AA10123456784 Return date: March 14, 2026

Intent: refund_requestPriority: high
Webhook Payload
POST webhooks/email
{
  "event": "email_received",
  "email": {
    "from": "sarah.mitchell@bigcorp.com",
    "subject": "URGENT: Still no refund for Order #48291",
    "body_text": "It's been 3 weeks since I returned...",
    "thread_id": "thread_48291"
  },
  "analysis": {
    "sentiment": "negative",
    "intent": "refund_request",
    "priority": "high",
    "extracted_order": "#48291",
    "extracted_amount": "$1,249.00"
  }
}
Technical FAQ

Questions you
haven't asked yet.

We know what you're wondering. Here are the answers before you have to ask.

We handle attachments in three ways, depending on your needs: • Inline base64 — For small attachments (< 2MB), we include the base64-encoded content directly in the webhook payload. Fast and simple. • S3 presigned URLs — For larger files, we upload to your S3 bucket (or ours) and include a presigned download URL in the payload. Your app can fetch it on demand without bloating the webhook. Every attachment includes metadata: filename, MIME type, size, and a SHA-256 hash for integrity verification.

Sub-second. From the moment an email hits our mail server to the moment your webhook fires, the median latency is under 200ms. Here's the breakdown: • SMTP receive → parsing: ~50ms • Analysis (sentiment, intent, extraction): ~80ms • Webhook delivery: ~50ms We run our parsing pipeline in-memory with zero queue. No batching, no polling delays. The email arrives, we process it, and your endpoint gets a POST before you can blink. During beta, we publish a real-time latency dashboard so you can verify this yourself.

We don't just fire-and-forget. Every webhook delivery is tracked with a retry queue and exponential backoff: Attempt 1: Immediate Attempt 2: 30 seconds Attempt 3: 2 minutes Attempt 4: 10 minutes Attempt 5: 1 hour Attempt 6: 6 hours After 6 failed attempts, the event is marked as "dead" and you'll see it in your dashboard with the full request/response history. You can manually retry any failed delivery with one click. We also support a dead-letter webhook URL — a secondary endpoint that receives events after all retries are exhausted, so your monitoring system can alert you.

No. Fumi is an inbound-only email routing engine. We deliberately don't handle outbound sending for two reasons: 1. IP reputation — Sending email requires careful warm-up, bounce handling, and spam complaint management. We'd rather be the best at receiving than mediocre at both. 2. Security — An inbound-only system has a dramatically smaller attack surface. There's no risk of your account being used to send spam, and no outbound credentials to manage. If you need to send replies, use your existing email provider's API (SendGrid, Resend, Postmark, etc.) directly.

HTML to JSON
in seconds

Fumi is in private beta stage.