Inbound email processing

Inbound email, parsed and delivered

We handle the mail server, spam filtering, and parsing — you get clean JSON at your webhook.

100 emails/month free — no credit card

GDPR compliant 100% EU-hosted
Inbound emails
returns@
Customer returns
support@
Auto-ticketing
invoices@
Smart filing
EmailConnect.eu logo
Parse · Route · Deliver
Structured JSON + Webhooks
Your endpoints
Returns API
Labels generated
Issue tracker
Tickets created
Doc storage
Filed & organized
Webhook payload

Pristine data, every field accounted for

No guesswork, no half-parsed HTML. Every email becomes a structured JSON payload with sender info, content in multiple formats, attachments, spam scoring, and much more.

POST /your-webhook — 200 OK
{
  "message": {
    "sender": {
      "name": "Alice Martin",
      "email": "alice@acme.com"
    },
    "recipient": {
      "name": null,
      "email": "invoices+acme@yourcompany.com",
      "tag": "acme"
    },
    "subject": "Invoice #1042 — February 2026",
    "content": {
      "text": "Hi, please find the invoice attached...",
      "html": "<p>Hi, please find the invoice...</p>",
      "markdown": "Hi, please find the invoice attached...",
      "links": [
        { "url": "https://acme.com/pay/1042", "domain": "acme.com", "anchorText": "Pay now" }
      ]
    },
    "attachments": [
      {
        "filename": "invoice-1042.pdf",
        "contentType": "application/pdf",
        "size": 48210,
        "status": "completed",
        "downloadUrl": "https://app.emailconnect.eu/attachments/9f8e7d6c/download",
        "virusScan": {
          "status": "clean"
        }
      }
    ]
  },
  "spam": {
    "score": 0.2,
    "engine": "rspamd",
    "authentication": {
      "dkim": { "result": "pass" },
      "spf": { "result": "pass" },
      "dmarc": { "result": "pass" }
    }
  },
  "classification": {
    "type": "normal",
    "confidence": "definite",
    "signals": [
      { "header": "return-path", "value": "alice@acme.com" }
    ]
  },
  "integrity": {
    "contentHash": "a3f2b8c1d4e5f6a7b8c9d0e1f2a3b4c5...",
    "rawEmailHash": "9f8e7d6c5b4a3f2e1d0c9b8a7f6e5d4c..."
  }
}
Up to three content formats

Every email body arrives as plain text and raw HTML on every plan. Server-side Markdown conversion is available on Maker+ — switch it on per alias (it's off by default). Use whichever fits your pipeline.

Route on +tags

Mail to invoices+acme@ lands on your invoices@ alias with recipient.tag set to "acme". One alias, one endpoint, unlimited routing keys.

Attachments, handled

Small files inline as base64 (up to 2 MB on paid plans, 128 KB on Free). Larger files are offloaded to EU-hosted S3 and delivered as a downloadUrl that points at EmailConnect, so downloads stay counted and in-region. The whole email, attachments included, must fit within 10 MB.

Verified at every layerMaker+

Spam analysis, DKIM, SPF, and DMARC results included so you can filter and trust incoming e-mail.

Virus scanned attachmentsBusiness+

Every attachment scanned by ClamAV before delivery. Infected files are rejected and flagged in the payload.

Build your own payloadBusiness+

Pick exactly which fields you need. Strip what you don't. Per-alias payload configuration for complete control.

Data residency modePlatform

E-mail is processed in the region you choose. We store routing metadata only — not content.

Need anything? We're one email away.

How it works

From mailbox to webhook in milliseconds

Every email passes through the same pipeline: receive, verify, parse, deliver. You configure the endpoint — we handle everything in between.

Email arrives
SMTP received on EU infrastructure
Spam & virus filtered
Score calculated, attachments scanned
Authenticated
DKIM, SPF, DMARC verified
Parsed to JSON
Body, links, attachments extracted
Webhook delivered
HMAC-signed POST to your endpoint
Each alias, a different endpoint

support@ routes to your ticketing system. invoices@ hits your accounting API. leads@ feeds your CRM. One domain, unlimited workflows.

Interactive demo

Watch your email become data

Generate a test address, send an email, and watch the webhook payload appear instantly.

Instant processing
We don't spam
100% EU data residency
Integration

If it can receive a POST, it works

Webhook handlers in any language, no-code platforms, or direct API access. Pick whichever fits your stack.

// Express webhook handler (Standard Webhooks)
import express from 'express'
import crypto from 'crypto'

app.post('/webhook', (req, res) => {
  // Verify Standard Webhooks signature
  const { 'webhook-id': id, 'webhook-timestamp': ts, 'webhook-signature': sigs } = req.headers
  const secret = Buffer.from(process.env.WEBHOOK_SECRET.replace(/^whsec_/, ''), 'base64')
  const expected = crypto.createHmac('sha256', secret)
    .update(`${id}.${ts}.${req.rawBody}`).digest('base64')

  const valid = sigs.split(' ').some(s => s === `v1,${expected}`)
  if (!valid) return res.status(401).end()

  const { message } = req.body
  console.log(`From: ${message.sender.email}`)
  console.log(`Subject: ${message.subject}`)

  res.status(200).json({ received: true })
})
Testimonials

Trusted by teams across Europe

From e-commerce to public sector — teams rely on EmailConnect for secure, predictable email automation.

Before you start

What developers ask us first

Do I have to change my domain's MX records?

No, you can start on a ready-made address at @user.emailconnect.eu, which needs no DNS changes at all. To receive on your own domain, add one MX record and one TXT verification record. Using a subdomain such as in.yourdomain.com keeps your existing mailbox untouched.

Choosing a subdomain →
What happens if my endpoint is down?

Delivery is retried automatically, up to 7 attempts over about 21.6 hours (after roughly 1 minute, 5 minutes, 30 minutes, 2 hours, 12 hours and 7 hours). Retries stop when the message's retention window ends, so Free and Maker, with 1-hour retention, get up to 4 attempts. Every attempt carries the same webhook-id, so your handler can deduplicate.

Retry schedule →
How do I know a webhook really came from EmailConnect?

Every webhook is signed with the Standard Webhooks scheme (HMAC-SHA256), so any Standard Webhooks library can verify it in a few lines. Reject requests with an invalid signature or a timestamp older than five minutes. Signing is available on Maker and above.

Verifying signatures →
How are attachments delivered?

Documents, images and text files come inline as base64 in the JSON, up to 128 KB per file on Free and 2 MB on paid plans. On Maker and above, larger files up to 10 MB are stored in EU-hosted S3 and the payload contains a download link instead. Business can also store them in its own S3-compatible bucket.

Attachment options →
Where is my email processed, and how long is it kept?

Email is received and processed in Germany (Hetzner), and stored attachments live in the Netherlands (Scaleway). Messages and their stored attachments are deleted automatically after your retention window: 1 hour on Free and Maker, 24 hours by default on Business (configurable up to 30 days). A data processing agreement is available on every plan, including Free.

Data processing agreement →

Comparing with SendGrid, Mailgun or Postmark? See how inbound handling differs

Our philosophy

We deliver your data. You decide what happens next.

No AI. No opinions. Just pristine, verified email data at your endpoint — so you can build the logic that matters to your business.

Read our vision

100 emails/month free — no credit card