Skip to content

Email in.Structured dataand signedwebhooks out.

Connect an IMAP inbox. MailWeave parses each new message into an event your application can use, then delivers it to the endpoints you choose.

Free plan available. No card required.

IMAP event signed POST

A small pipeline between your inbox and your app.

Use the mailbox you already have. Connect it over IMAP, select its webhook destinations and let MailWeave handle polling, parsing and delivery.

See mailbox setup
  1. Connect an inbox

    Add any IMAP mailbox. Credentials are encrypted at rest, and you can test the connection before saving.

  2. We watch it for you

    MailWeave polls on your plan's schedule, parses each message and stores the event. Nothing is marked read until it is safely stored.

  3. Add an endpoint

    Point a webhook at your app. Each one gets its own signing secret, shown once.

  4. Receive signed JSON

    Every email arrives as a signed POST. Failures retry with backoff, then land in a dead-letter list you can replay.

A message becomes a usable event.

MailWeave extracts message headers, text and HTML bodies, reply context and attachment metadata into a structured email event.

Attachment bytes are not forwarded in event payloads.

Email sender, recipient, subject and body fields mapped into an email.received JSON event.
POST your-endpoint · application/json
{
  "id": "550e8400-e29b-41d4-a716-446655440000",
  "type": "email.received",
  "data": {
    "from": { "email": "stripe-receipts@acme.co" },
    "subject": "Invoice #4821 paid",
    "text_body": "Thanks for your payment…",
    "attachments": [
      { "filename": "invoice-4821.pdf", "size": 48213 }
    ]
  }
}
Verify the signature
// MailPulse-Signature: t=1710000000,v1=9c1f…
const [t, v1] = header.split(",").map((p) => p.split("=")[1]);
if (Math.abs(Date.now() / 1000 - Number(t)) > 300) reject();

const expected = crypto
  .createHmac("sha256", secret)
  .update(`${t}.${rawBody}`)
  .digest("hex");

if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(v1))) reject();
A mailbox routed to the webhook endpoints selected for its messages.

Choose where each inbox delivers.

Link a mailbox to the webhooks that should receive its events. Each destination gets an independently signed delivery and its own attempt history.

Routing is configured per mailbox in your workspace.

Know what happened after the POST.

Each delivery is signed with its endpoint secret. A successful response closes the attempt; failures retry with backoff and can be replayed from the dashboard or API.

Signed requests

Verify every webhook with HMAC-SHA256 and a timestamp.

Retries with a record

Failed attempts retry with backoff and remain available to replay.

Analytics and delivery history

Review email volume, top senders, endpoint performance, status codes and each delivery attempt.

Pricing that follows your volume.

Start on the free plan, then compare mailbox, event, endpoint and retention limits before you upgrade.

Free

Wire up one inbox and see it work.

$0

Start free
  • 1 mailbox
  • 500 emails / month
  • 1 webhook endpoint
  • 7-day event history

Pro

Most teams start here

For a product that depends on inbound email.

$19/ month

Start with Pro
  • 5 mailboxes
  • 10,000 emails / month
  • 10 webhook endpoints
  • 30-day event history
  • 1-minute polling
  • 3 team seats

Team

Shared ownership, higher volume, longer memory.

$79/ month

Start with Team
  • 25 mailboxes
  • 100,000 emails / month
  • 50 webhook endpoints
  • 90-day event history
  • 30-second polling
  • 15 team seats

Enterprise

Custom volume, retention and support.

Custom

Contact sales
  • Custom limits
  • Custom retention
  • Priority support
Compare every plan limit

Questions, answered.

Do you read my email?

MailWeave connects over IMAP with the credentials you provide, fetches new messages, parses them and forwards the result to your endpoints. Mailbox passwords are encrypted at rest and never returned by the API. Use an app-specific password or a dedicated inbox.

What happens if my endpoint is down?

Each delivery retries with increasing delays. After the final attempt it moves to a dead-letter state, and you can replay it from the dashboard or the API when your endpoint is back.

What happens when I hit my monthly limit?

Ingestion pauses. New mail stays unread in your inbox, so nothing is lost. It is picked up when the month resets or you upgrade.

How do I know a webhook really came from MailWeave?

Every request carries an HMAC-SHA256 signature over a timestamp and the raw body. Verify it with your endpoint secret and reject anything older than five minutes.

How does billing work?

Paddle is our merchant of record. It handles checkout, tax and invoices. You can change plan, update your card or cancel from the billing page at any time.

Let your application handle the next email.

Connect an inbox and send your first signed event downstream.

Start free