ActionLayer gives your AI assistant a real business email address and a full inbox — with a human approval step so nothing goes out without your sign-off. This page is the non-developer tour. If you want endpoints and code, jump to the API reference or MCP integration.Documentation Index
Fetch the complete documentation index at: https://docs.actionlayer.dev/llms.txt
Use this file to discover all available pages before exploring further.
The core value prop
Your AI agent should be able to do email work the same way a junior teammate does: read what came in, draft a reply, run it past you, send it. ActionLayer is the email plumbing for that — without you having to build inboxes, write threading logic, configure DNS, or worry about deliverability. You bring an AI agent. ActionLayer brings:- A real email address on your own domain or subdomain (
mia@yourcompany.comorhelp@ai.yourcompany.com). - A real inbox that receives mail, parses it, and threads it into conversations.
- A draft submission flow so your AI can propose replies.
- Approval channels (Telegram, Slack, Email) so a human gets the final say.
- Controlled sending through Postmark with proper SPF/DKIM signing.
- A rules engine for the cases where you don’t need the human-in-the-loop.
How conversations work
Email isn’t messages — it’s threads. ActionLayer reconstructs every conversation by walking the standardIn-Reply-To and References headers, then stores all messages from that conversation as one thread.
When your agent calls get_thread, it gets:
- All inbound messages, oldest first.
- All outbound messages your agent (or you) have sent.
- Any drafts attached to the thread (pending, approved, sent, rejected).
- The contact on the other end — name, email, status (trusted / pending / blocked), tags.
Sender identities
A sender identity is a real address. You can have:- One identity per agent (
mia@,alex@,pat@— three different AI assistants, one per role). - Multiple identities per agent (e.g.
support@andbilling@for the same backend agent, used for different inbox workflows).
Approval channels
When your AI submits a draft, ActionLayer pings you in whichever channel you picked.Telegram (fastest)
You get a message from a bot with the draft preview and inline Approve / Reject buttons. Tap Approve and ActionLayer queues the send. Tap Reject and the draft is discarded; your agent can submit a new one. ActionLayer auto-registers the Telegram webhook for you the moment you save the identity — no/setWebhook calls.
Slack
ActionLayer posts to a channel of your choice (e.g.#ai-approvals) with a preview and action buttons. Same one-tap flow.
Sender trust gating
As of v0.25.0, ActionLayer protects your AI from arbitrary email on the public internet. When inbound mail arrives from a sender your workspace has never seen, it does not go straight into the inbox your AI reads. Instead:- The message is held in
inbound_pendingfor 30 days. - You get a notification in your approval channel: “Unknown sender — approve / block?”
- Approve → the sender is marked trusted, the held message is reprocessed into the real thread, and your AI sees it.
- Block → the message is silently discarded and the sender is blocklisted.
@yourcompany.com”) in Settings → Trusted Domains. Public mail providers (gmail.com, yahoo.com) are blocked from the trusted-domain list to prevent foot-guns.
This means your agent only ever processes mail from senders you’ve explicitly approved. Cold spam, prompt-injection attempts in random newsletters, and replies-to-replies from forwarded chains all get held for human review first.
Rules engine
The approval gate is the safety net. Rules are how you remove friction for the cases where the safety net isn’t necessary. You build rules in the dashboard with a simple condition/action builder, no code:- Auto-approve any draft replying to a contact tagged “trusted-client”. (Skip the approval step for known-safe cases.)
- Flag threads as urgent if the subject contains “URGENT” or “ASAP”. (Triage at ingest time.)
- Auto-close any thread from
@substack.com. (Newsletters never reach your agent.) - Set approval mode to manual for any draft over 500 words. (Override per-identity defaults for outliers.)
email.received, draft.created, draft.approved, draft.sent, draft.stale, etc. Each rule has a priority; lower number runs first. Mark stop_after_match to halt the chain when a rule matches.
See the Rules API reference for the full schema.
Webhooks
ActionLayer fires webhooks at every meaningful event. Point them at your agent’s URL and you get real-time updates without polling.| Event | Fires when |
|---|---|
email.received | An inbound message lands and is parsed |
draft.created | An agent submits a draft |
draft.approved | A draft is approved |
draft.rejected | A draft is rejected |
draft.sent | An approved draft was successfully delivered |
draft.stale | A draft was blocked from sending because a newer inbound arrived |
email.delivered | Postmark confirmed delivery |
email.bounced | Postmark reported a bounce |
Team members and roles (coming soon)
Owner / Approver / Viewer. Every workspace starts with one Owner (the person who signed up). You can invite teammates and assign:- Owner — full access, including billing and team management.
- Approver — can approve drafts and manage day-to-day operations.
- Viewer — read-only access to threads and reports.
The team-invite acceptance flow ships in a future sprint (
INVITE_ENABLED is currently false in v0.26.7). The Team page shows existing members and roles, but the “Invite member” button is disabled with a “coming next sprint” indicator. The page UI is otherwise live for early-user feedback.Pricing
| Plan | Price | Outbound | Inbound | Identities | Rules | Domains |
|---|---|---|---|---|---|---|
| Builder Pack | Free | 50 lifetime | 50 lifetime | 1 | 0 | 1 |
| Pro | $29/mo | 5,000/mo | 10,000/mo | 10 | 25 | 3 |
| Business | $79/mo | 15,000/mo | 30,000/mo | 50 | 100 | 10 |
What’s NOT included
ActionLayer is deliberately scoped. We don’t try to be the AI, and we don’t try to be a marketing tool.- No AI generation. ActionLayer never calls OpenAI, Anthropic, or any model. Your agent (Claude, GPT, n8n flow, custom Python — your choice) does the writing. We do the email plumbing.
- No email marketing. No campaigns, no broadcasts, no list management, no tracking pixels.
TrackOpensandTrackLinksare hardcodedfalseon every send. If you want Mailchimp, use Mailchimp. - No domain registration. You bring your own domain. We give you the four DNS records to add at your registrar.
- No mail-server hosting. AWS SES handles inbound, Postmark handles outbound. ActionLayer orchestrates them — but the actual email transport is run by people whose entire job is email transport.
- No bulk send. The API rate limits and plan caps will quickly push back if you try to use ActionLayer as a blast tool. That’s intentional.
Common questions
Do I need to know how to code? For setup, no — domains, identities, approval channels, and rules are all dashboard work. You only need a developer (or a developer-friendly agent framework like OpenClaw, n8n, or Zapier) for the step where your AI agent actually connects to ActionLayer. Does this work alongside my existing email? Yes. Use a subdomain (mail.yourcompany.com) and ActionLayer sits next to your Google Workspace / Microsoft 365 setup without touching it. The dashboard suggests a subdomain automatically when it detects existing email records on the root domain.
Can my agent send without my approval?
Yes — flip auto_approve_replies on the identity, or write a rule that auto-approves specific cases. By default, every draft waits for a human.
What happens if a new email arrives while a draft is waiting?
ActionLayer flags the draft as stale and blocks delivery (HTTP 409 on send). You’ll be notified to review the new message first. This prevents your agent from sending a reply that ignores something that just came in.
What agents work with ActionLayer?
Anything that can make HTTP requests: LangChain, CrewAI, n8n, Zapier, AutoGen, custom Python or Node, or any MCP-compatible client (Claude Code, Codex, OpenAI Agents SDK). For OpenClaw specifically, we ship an AgentSkill bundle.
Where do I get help?
support@actionlayer.dev, or open an issue on GitHub.