WebApp Modules

Inbox

A team email inbox built into your WebApp — send and receive mail from your custom domain, assign inboxes to team members, and let AI agents handle email through MCP.

What is the Inbox Module?

The Inbox module turns your WebApp into a shared email client. Create one or more inboxes (e.g.support@your-domain, sales@your-domain), assign team members to them, and handle incoming and outgoing email — without leaving your business platform.

Use Inbox for:

  • Customer support mailboxes shared across a team
  • Per-department addresses (sales, billing, info) with separate assignees
  • Personal team mailboxes routed to your WebApp domain
  • Letting AI agents read and draft replies on your behalf

Prerequisite: the Inbox module requires a custom domain configured for your business. Each inbox uses an address on that domain (for example support@your-domain), and outbound mail is signed with that domain's DKIM.

Inboxes

An inbox is a single email address managed inside your WebApp. Admins create and configure inboxes from the Admin → Inboxes page. Each inbox has:

  • Local part — the part before the@ (e.g. support). Combined with your custom domain to form the full address.
  • Display name — optional friendly name shown in the From header (e.g. “Acme Support”).
  • Signature — appended automatically to outgoing mail (HTML and plain text variants).
  • Forwarding address (optional) — copies of incoming mail are forwarded here once the recipient confirms via a one-time link.
  • Statusactive ordisabled. Disabled inboxes silently drop incoming mail.

Assignments

Inboxes don't belong to a single user — they're assigned. From the admin page, assign any number of team members to an inbox. Assignment is the access gate:

  • Only assigned users see the inbox in their sidebar.
  • Multiple users can share the same inbox and act on the same threads.

A user with multiple assigned inboxes can switch between them and view aggregated stats across all of them.

Threading

Messages are automatically grouped into threads — the conversation view you expect from a modern mail client. Replies and follow-ups stay attached to the original conversation, so you read each back-and-forth in one place instead of as a stream of disconnected messages.

Inbox List

The main inbox view shows a paginated list of threads with the latest message preview, sender, and unread message count. Filter controls let you switch between:

  • Inbox — all incoming threads (excluding spam).
  • Unread — threads with at least one unread message.
  • Drafts — unsent message drafts.
  • Sent — outgoing messages.
  • Spam — threads flagged as spam.

A label filter narrows the list to threads carrying a specific label, and the search bar runs a text search across subject, sender, and the message snippet stored for each email.

Composing Messages

The Compose page handles every outbound flow through the same form:

  • New message — start a fresh thread.
  • Reply — respond to the original sender.
  • Reply-all — same as reply, but every original recipient (To + Cc) is included.
  • Forward — send a copy to a new set of recipients.

Recipient fields autocomplete from your Contacts database plus an inbox-scoped address book that's auto-harvested from every email you send and receive.

Drafts

The Compose form auto-saves your work as a draft. Drafts are stored exactly like sent messages — body, attachments, and recipients — but they don't appear in the main thread list. From the drafts filter you can:

  • Resume editing any saved draft.
  • Send the draft as-is.
  • Discard the draft.

Attachments

Attach files to any outgoing message. When you forward, the original message's attachments come along automatically — pick which ones to keep, no re-uploading needed.

Limits per message: 15 MB total across all attachments, and up to 20 files.

Labels

Labels are user-defined tags applied at the thread level. Use them to organize work however you like — by status (Needs reply, Waiting), by category (Refund,Bug report), or by team member. Labels can be:

  • Added or removed from a single thread, or in bulk across many threads at once.
  • Used as a list filter, so you can view every thread carrying a specific label.

The label popover suggests existing labels in use across the inbox — no separate “labels registry” to maintain. Type a new name to create a label on the fly.

Spam & Blocked Senders

Two related mechanisms keep unwanted mail out:

  • Mark as spam — flag a thread as spam. Every message in it is hidden from the main list, and the sender is automatically added to the blocked-senders list for this inbox. Unmarking spam clears the flag but leaves the sender blocked.
  • Block sender — explicitly block any email address from the Blocked Senders page or by marking a thread as spam. Future inbound mail from a blocked address is silently dropped — it never reaches the inbox.

Unblock from the same Blocked Senders page when you change your mind.

Forwarding

Each inbox can optionally forward a copy of every incoming message to an external address — useful for routing into a personal inbox while keeping the WebApp as the system of record. Forwarding follows a confirmation flow:

  1. Admin sets a forwarding address and saves the inbox.
  2. A confirmation email is sent to that address with a one-time link. Mail does not forward until the link is clicked.
  3. Once confirmed, every future inbound message is auto-forwarded with the inbox set as Reply-To.
  4. Changing the forwarding address resets confirmation — you can't accidentally forward to an unverified destination.

Bounces

When a Delivery Status Notification (DSN) comes back for an outbound message, the original Message-ID is matched to the outbound row and the message is tagged with a bounce reason and timestamp. Bounced messages remain in the thread but are visibly marked so you know delivery failed.

Address Book

Every email address you exchange mail with is harvested into a per-inbox address book — the sender on incoming mail, and every recipient (To / Cc / Bcc) on outgoing mail. The most recent display name wins, so the book gradually picks up “Jane Doe” instead of just jane@example. The compose recipient field suggests from this book as you type.

Dashboard Widgets

Three widgets are available for the WebApp dashboard:

  • Inbox Stats — Unread, Threads, Drafts, and Spam counts for one inbox or aggregated across all assigned inboxes. Each tile links into a filtered inbox view.
  • Unread Threads — the latest 1–10 unread threads with sender, subject, snippet, and timestamp. Click a row to jump straight into the thread.
  • Compose — send a quick message without opening the full compose view. Includes recipient autocomplete and inline attachment uploads.

AI Agent Integration

AI agents can read and act on emails on your behalf through two channels:

  • MCP tools — for AI agents connected to your WebApp.
  • External API — for AI agents and external scripts, or integrations that authenticate with your WebApp.

Both channels expose the same set of inbox operations:

  • List inboxes, threads, messages, drafts, and attachments
  • Get the body of a specific message or thread
  • Search within one inbox or across all assigned inboxes
  • Compose, reply, reply-all, forward, and send drafts
  • Create, update, and delete drafts
  • Mark threads read / unread / spam, add / remove labels
  • Block and unblock senders, list blocked senders
  • Delete threads and drafts, get unread counts

Every call uses the authenticated user's inbox assignments — an agent acting on behalf of a user can only see and modify inboxes that user is assigned to.

Admin Reports

From the Admin Inboxes page, expand any inbox to see a usage report: total inbound messages, total outbound messages, total threads, total bounces, and the most recent inbound / outbound timestamps. Useful for monitoring busy mailboxes and spotting deliverability issues.

Integration with Other Modules

  • Custom Domain — every inbox lives on your custom domain. Outbound mail is DKIM-signed under that domain, and inbound mail addressed to any inbox local part is routed to this module.
  • Contacts — recipient autocomplete pulls from your contacts database, and incoming messages are linked back to a matching contact when one exists.
  • MCP & External API — every inbox action is exposed both as an MCP tool and as an external API endpoint, so AI agents and external integrations can read and send email with the same access as the user they act on behalf of.

Next Steps

  • Custom Domain — Configure your domain so inboxes can send and receive mail
  • Contacts — Manage the contacts that recipient autocomplete and message links resolve against
  • Email Broadcasts — Send one-to-many campaigns over the same email infrastructure
  • MCP — Let AI agents read and act on email through Model Context Protocol tools