Turn contact form emails into structured webhooks

Contact forms that email submissions? Route them to webhooks instead. No custom backend required — form emails arrive as structured JSON in seconds.

The Problem

  • WordPress and static site contact forms default to sending email — no API, no webhook, no automation
  • Building a custom form handler backend means server costs, uptime monitoring, captcha, rate limiting, and spam filtering
  • Contact form emails pile up in a shared inbox with no triage, no SLA, and no audit trail
  • Form submissions in Gmail/Outlook can't trigger downstream workflows — CRM, Slack, ticketing — without fragile forwarding rules
  • GDPR requires deleting form data on request, but email inboxes have no deletion API

Why Existing Solutions Fall Short

WordPress plugins like Contact Form 7 and WPForms only send email — no native webhook support without paid add-ons

Formspree and similar SaaS form handlers work but lock you into their platform and pricing

Custom form backends require server maintenance, SSL certificates, and spam protection

Netlify/Vercel form handlers only work on their platform — no portability

Email parsing tools (Zapier Email Parser, Mailparser.io) add cost and latency between the form and your system

You shouldn't have to build this yourself.

How Mailhooks Solves This

Form email → instant webhook

Point your contact form at a Mailhooks email address. Every submission arrives as structured JSON at your webhook URL within seconds.

Works with any form

WordPress contact forms, Netlify forms, HTML mailto forms, static site generators — if it sends email, it works with Mailhooks.

Zero backend required

No server to maintain, no SSL certificates, no uptime monitoring. Mailhooks receives the email and delivers the webhook.

Built-in Notion, Discord, n8n

Route form submissions directly to Notion databases, Discord channels, or n8n workflows — no webhook handler needed.

Spam filtering

Sender filtering lets you block or allow specific domains and addresses before they reach your system.

GDPR-friendly storage

Form submissions are processed and forwarded — not stored indefinitely in an inbox. Delete data on request via the API.

How It Works

1

Create a mailhook

Set up a mailhook address for your form (e.g. [email protected]).

2

Point your form at it

Configure your contact form to send submissions to the mailhook address. Most form builders support this natively.

3

Choose your destination

Set up a webhook URL, or use built-in integrations for Notion, Discord, or n8n.

4

Form submitted

A visitor submits your form. The form emails the submission to your mailhook address.

5

Webhook fires

Mailhooks parses the email and delivers structured JSON to your destination — name, email, message, all pre-extracted.

Code Example

Your contact form sends an email. Mailhooks delivers this JSON to your webhook or integration.

Webhook Payload

{
  "id": "msg_form_abc123",
  "from": "[email protected]",
  "to": ["[email protected]"],
  "subject": "Website Contact Form: Quote request for enterprise plan",
  "text": "Name: Jane Smith\nEmail: [email protected]\nCompany: Acme Corp\nMessage: We'd like a quote for the enterprise plan for 200 users...",
  "html": "
Name: Jane Smith
Email: [email protected]
Company: Acme Corp
Message: We'd like a quote...
", "threadId": "thread_form_456" }

Handler Code

// Send form submissions straight to Notion
// No webhook handler needed — use Mailhooks built-in integration

// Or handle with a simple webhook:
app.post('/webhook/contact-form', async (req, res) => {
  const { from, subject, text } = req.body;

  // Auto-create a support ticket
  await createTicket({
    email: from,
    subject: subject,
    body: text,
    source: 'contact-form',
  });

  // Notify the team
  await slack.notify(`New contact form submission from ${from}`);

  res.sendStatus(200);
});

Frequently Asked Questions

Every inbox can be configured with sender filtering rules. You can whitelist specific domains or email addresses, or use our webhook to implement your own spam filtering logic. Emails that don't match your rules are automatically rejected.

Webhooks are typically delivered within 100-500ms of email receipt. We process emails in real-time with no polling delays. For high-availability applications, we also offer webhook retries with exponential backoff.

Mailhooks is built specifically for inbound email. We offer simpler setup (no DNS changes required for testing), better attachment handling with direct download URLs, and a developer-first API for fetching emails programmatically—perfect for E2E testing.

Yes! You can connect your own domain with simple DNS configuration. We also provide free subdomains on inbox.mailhooks.dev for testing and development.

We automatically retry failed webhooks with exponential backoff for up to 24 hours. You can also use our API to fetch any missed emails. All emails are stored and accessible via the dashboard.

Get Started in 3 Steps

Takes ~2 minutes — no email infrastructure required.

1

Create a Mailhooks account

Sign up for free in seconds.

2

Create an inbox

Get a unique email address for your use case.

3

Add your webhook URL

Point to your endpoint and start receiving emails.

Turn your contact form into an API in minutes