Inbound email, delivered to your code in under 8 seconds.

Create a mailbox. Point a webhook. Every email lands in your code as parsed JSON — signed, retried, debuggable.

Free during beta · no credit card · 1,000 emails/month included

Built it the hard way once already?

SES + Lambda + S3 + a custom MIME parser + a retry queue + a dashboard so someone can answer "why didn't my webhook fire?" — and now you maintain all of it. Inbound is that, finished.

Signed

Every payload carries an HMAC-SHA256 signature with replay protection. Receiver samples in four languages.

Retried

Three attempts at t=0, t+1m, t+15m, with jitter. One-click replay from the UI for any delivery, any time.

Debuggable

Every attempt logged with status code, response excerpt, and timing. Find a failed delivery in under 30 seconds.

A developer working late, the cost of building inbound email plumbing in-house.

How it works

From signup to your first webhook in under 90 seconds.

Create a mailbox

Pick a slug; you get support@your-slug.inbound.prosvita.io instantly. No DNS to set up.

Point a webhook

Paste your URL. Copy the signing secret once. We sign every payload with it on the way out.

Send a test email

The first webhook fires within 8 seconds. The delivery log shows every attempt, status, and response.

Email SMTP arrives Inbound Parse · Store · Sign Retry · Replay · Log Your endpoint POST /webhooks/inbox · signed JSON

What you get

Built for engineers who would rather pay than re-build SES + Lambda + S3.

  • Per-mailbox processingTurn parsing knobs (headers, body, links, attachments) on or off per mailbox. Defaults are sensible; overrides are one click.
  • Custom payload shapeJSONata transforms remap the payload to whatever your API expects. Iterate in your browser before saving.
  • Account-wide or single-mailbox webhooksOne webhook for everything, or one per inbox. Your call. Webhooks scope to what makes sense for your app.
  • Spike alertsA five-minute cron watches your delivery success rate and pings you when an integration starts failing.
  • Bring your own domainReceive at support@yourcompany.com instead of a subdomain. (Coming with paid plans.)
  • Built on Cloudflare's edgeEmail Workers, Queues, D1. Engineered for the cost structure that lets us be honest about pricing.
"SES + Lambda + S3 + a custom MIME parser + a retry queue. Inbound is that, finished." — What this is, in one line
BETA

Free while we're in beta.

Sign up now and lock in an early-bird discount when paid plans launch. No credit card. Cancel any time. Generous limits while we're shaking out the edges.

What free looks like during beta: 1,000 emails / month, 1 mailbox, 1 webhook, 30-day retention. Need more? Email hello@inbound.prosvita.io and we'll lift your cap for the duration of the beta.

Roadmap

An honest look at what's shipping, what's next, and what's further out.

Shipping now

  • Email → webhook in < 8s p95
  • HMAC-signed payloads + retries
  • Per-mailbox processing config
  • JSONata payload transforms
  • Replayable delivery log

Next

  • Multi-member accounts + invite links
  • Bring-your-own custom domain
  • Per-webhook retry policy + headers
  • Stripe billing portal + usage charts
  • Aliases per mailbox

Later

  • LLM-based extraction (Claude via CF AI Gateway)
  • Outbound transactional email
  • Attachment virus scanning
  • EU data-residency expansion

Frequently asked questions

How fast is delivery?

Median around three seconds. p95 under eight seconds, p99 under thirty. Spikes get absorbed by Cloudflare Queues — your endpoint sees a steady stream rather than a flood.

How do I verify the signature?

Compute HMAC-SHA256(signing_secret, timestamp + "." + body) and compare it (constant-time) against X-Webhook-Signature. Reject if |now - timestamp| > 300s. We ship sample receivers in Node, Python, Ruby, and Go.

What happens when my endpoint is down?

Three attempts at t=0, t+1m, and t+15m, each with jitter. After that the delivery is marked failed and visible in the UI. You can replay any delivery by hand later — original audit trail untouched.

Can I use my own domain?

Yes — coming with paid plans. Add a TXT record and an MX, and we provision routing automatically. While in beta, mailboxes live under the shared *.inbound.prosvita.io namespace.

What gets parsed?

Headers, text body, HTML body, links, attachments (stored in object storage), spam verdict, and message-id. Toggle anything off per mailbox to slim the payload.

What does the free beta include?

1,000 emails per month, 1 mailbox, 1 webhook, 30-day retention. No credit card. Need more during beta? Email us — we'll raise your cap.

Where is my data stored?

Account state in Cloudflare D1 (SQLite at the edge, US by default). Raw .eml files and attachments in Backblaze B2 (us-east-005), with retention enforced per mailbox. EU residency is on the roadmap for paid plans.

Is this open source?

The receiver-side sample code is. The platform itself isn't — yet. We're focused on getting the product to a place where the architecture is stable enough to be useful as a reference.

Pipe your first email in 90 seconds.

Free during beta. No credit card. Generous limits.