Mailhooks LogoMailhooks
Use CasesPricingDocsBlog
Use CasesPricingDocsBlog

Documentation

Getting Started

IntroductionQuick StartHow It Works

Guides

IMAP Client SetupBring Your Own StorageReal-time Notificationsn8n IntegrationDiscord IntegrationNotion IntegrationNotion CalendarCLI for Agents

API Reference

AuthenticationEmailsWebhooksInboxesDomainsReal-time (SSE)API Playground

Product

  • Features
  • Pricing

Legal

  • Terms of Service
  • Privacy Policy

Resources

  • Documentation
  • Blog
  • Discord

Contact

[email protected]

© 2026 Mailhooks. All rights reserved.

Push notifications without webhooksPush notifications without webhooks

Get instant notifications when emails arrive via Server-Sent Events (SSE). No public endpoint or inbound traffic required.

The Problem

  • You need real-time email notifications but can't expose a webhook endpoint
  • Browser apps and local dev environments can't receive incoming HTTP requests
  • Client-side apps (browser, mobile) have no way to receive webhooks
  • Firewalls block inbound traffic but allow outbound connections
  • Local development requires tunneling tools like ngrok to test webhooks

Why Existing Solutions Fall Short

Webhooks require exposing a public endpoint that accepts inbound requests

Polling the email API is slow, inefficient, and wastes resources

Setting up ngrok or tunnels for local development is tedious

Worker processes need complex queue infrastructure to coordinate

You shouldn't have to build this yourself.

How Mailhooks Solves This

Outbound Only

SSE uses outbound connections. No need to expose endpoints or configure firewalls.

Instant Delivery

Notifications arrive within milliseconds of email receipt. No polling delays.

Worker Distribution

Distributed mode load-balances notifications across workers automatically.

Works Everywhere

Browsers, long-running workers, local dev — anywhere that can maintain connections.

How It Works

1

Install SDK

Add the Mailhooks SDK to your project.

2

Subscribe to events

Call realtime.subscribe() with your handlers.

3

Receive notification

Your handler fires instantly when emails arrive.

4

Process email

Use the email metadata or fetch full content via API.

5

Auto-reconnect

SDK handles reconnection automatically on network issues.

Code Example

Subscribe to real-time push notifications with just a few lines of code.

Webhook Payload

{
  "type": "email.received",
  "timestamp": "2025-01-15T10:30:00.000Z",
  "data": {
    "id": "email_abc123",
    "from": "[email protected]",
    "to": ["[email protected]"],
    "subject": "New order #12345",
    "domain": "yourapp.mailhooks.dev",
    "hasAttachments": true,
    "attachmentCount": 1,
    "createdAt": "2025-01-15T10:30:00.000Z"
  }
}

Handler Code

import { Mailhooks } from '@mailhooks/sdk';

const mailhooks = new Mailhooks({ apiKey: 'mh_xxx' });

// Subscribe to push notifications
const subscription = mailhooks.realtime.subscribe({
  // Choose mode: 'broadcast' (all clients) or 'distributed' (load balance)
  mode: 'broadcast',

  onConnected: (payload) => {
    console.log('Connected!', payload.connectionId);
  },

  onEmailReceived: async (email) => {
    console.log(`New email from ${email.from}: ${email.subject}`);

    // Fetch full email content if needed
    const content = await mailhooks.emails.getContent(email.id);
    processEmail(content);
  },

  onError: (error) => {
    console.error('Connection error:', error);
  },

  autoReconnect: true, // Auto-reconnect on disconnect
});

// Later, disconnect when done
subscription.disconnect();

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.

Learn more about inbound email

What is inbound email?

A developer guide to receiving emails in your application.

IMAP vs webhooks

Compare the two approaches to receiving email.

Why receiving email is hard

The challenges of building email infrastructure.

Related Use Cases

Email to Webhook

Turn incoming emails into webhooks instantly.

Reply-by-Email

Let users respond to notifications from their inbox.

n8n Email Trigger

Trigger n8n workflows from inbound email.

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.

Get push notifications for emails in minutes