- Home
- Email automation
Turn incoming email into webhook automations
Define a rule once and Programmable Inbox runs it against every message as it's ingested โ forward it, fire a webhook, or both. No cron job polling an inbox, no server just to watch for mail.
No credit card required.
How it works
From inbound email to a system that reacts
One rule, evaluated in real time against every message โ not a schedule you have to maintain.
- 1
Define a rule
Match on category, sender, or subject/body contains โ configured once per organization, not per message.
- 2
Message arrives
The instant a matching email is ingested, Programmable Inbox evaluates every rule against it โ in real time, not on a schedule.
- 3
Action fires
Forward it, fire a webhook, or both in the same rule โ no polling, no cron job checking for new mail.
- 4
Your system reacts
Your endpoint receives the event and takes it from there โ accounting systems, Slack alerts, ticket creation, anything.
Integration example
One rule, two actions
Forwards a matching receipt to accounting and posts it to a webhook โ the same rule shown on the homepage, plus a minimal receiver for the other end.
Illustrative integration templates: these examples have not been executed against your app.Configure the rule in your dashboard using supported conditions and actions. For the receiver, install Express and a TypeScript runner, expose a test HTTPS endpoint, and confirm the documented payload and authentication contract. Add authentication, input validation, deduplication, and safe logging before using a receiver in production.
{
"name": "Route receipts to accounting",
"when": {
"category": "notifications",
"from_contains": "receipts@"
},
"then": [
{ "forward": "[email protected]" },
{ "webhook": "https://your-app.com/ingest" }
]
}
// Conditions: contains ยท has code ยท category
// Actions: forward ยท fire webhook// Any HTTP endpoint works โ here's a minimal Express receiver
import express from 'express'
const app = express()
app.use(express.json())
app.post('/ingest', (req, res) => {
// req.body is the message that matched your rule โ
// see the API reference for the exact message shape
console.log('New message matched:', req.body)
res.sendStatus(200)
})
app.listen(3000)FAQ
Common questions
- What can a rule match on?
- Category (like otp, promotional, or notifications), whether the message contains specific text, whether it has an extracted code, or the sender address โ see the rule below for the shape.
- What actions can a rule take โ can I combine them?
- Forward the message to another address, fire a webhook, or both in the same rule. The example below does exactly that: forwards a receipt to accounting and posts it to a webhook in one rule.
- Does this replace polling, or do I still need a cron job checking an inbox?
- It replaces it. A rule runs against each incoming message as it's ingested, not on a schedule โ there's no inbox to poll and nothing to check for "new" mail.
- How is this different from wiring up Zapier or n8n?
- For a straightforward match-and-forward or match-and-webhook rule, there's no separate workflow platform to run โ the rule executes inside Programmable Inbox the moment the message lands. For more elaborate branching logic downstream, your webhook receiver can still hand off to n8n or anything else.
- Can I self-host the automation engine?
- Yes โ it's part of the open-source AGPL v3 project. Run it on your own infrastructure with the Docker quickstart if you'd rather the rule evaluation, and the messages it sees, never leave your servers.
Choose the next email workflow
- Email testing
Plan transactional email checks across content, delivery, and authentication.
- Email OTP testing
Use extracted email codes when the user types a code into a form.
- Magic-link testing
Test a passwordless sign-in URL in a fresh browser session.
- Email verification testing
Confirm signup changes the account from unverified to verified.
- AI agents
Let an MCP-connected agent read test messages with scoped permissions.
Spin up your secondary inbox
Create a programmable address, grab your first OTP, and wire up a rule in minutes. Self-host for free, or sign up for managed cloud โ either way, you own your data.
No credit card required ยท AGPL v3 license ยท Community supported