Inbound
Workspace mailboxes — Google-Workspace-style real inboxes
Workspace v0.1 (W117) gives every tenant a real Gmail-style inbox for each address at their verified domains. Think alice@acme.com, bob@acme.com, support@acme.com — each as its own mailbox with thread history, replies, search, the lot.
This is an alternative to the inbound webhook pattern. Pick one, not both.
Webhook vs mailbox — pick one
| Use webhook when | Use mailbox when |
|---|---|
| Your app already has a helpdesk / CRM that ingests email | You need a full inbox UI (read, reply, search, label) |
| You want to programmatically parse + route inbound mail | Multiple humans need to read replies |
One inbound address per tenant (e.g. support@) | Many addresses per tenant (each employee gets one) |
| You want the smallest infra footprint | You want to replace Google Workspace at $6/user/mo |
Setup
- Enable workspace for your verified sending domain via
POST /api/v1/mail/domains/{domain_id}/enable - This auto-publishes 4 DNS records on Cloudflare (if your domain is on CF) or surfaces them for you to paste:
- MX (already there if you set up sending — same target)
- SRV record for autoconfig (
_imaps._tcp,_submission._tcp) - Autoconfig CNAME (
autoconfig.acme.com → autoconfig.sendbolt.com)
- Create individual mailboxes via the dashboard or API
- Each mailbox gets a generated password — the user can change it after first login
Create a mailbox
curl -X POST "$API/api/v1/mail/mailboxes" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"address": "alice@acme.com",
"user_id": "u_abc123",
"display_name": "Alice Johnson",
"send_signature": "<p>Alice Johnson<br/>Founder, Acme</p>"
}'The mailbox starts empty. Send a test email to alice@acme.com from any external client (Gmail, Outlook, your friend's phone) — it lands within 2-5 seconds.
How users access it
Three options:
- Web UI in SendBolt dashboard — /dashboard/mail. The user logs into SendBolt, sees a Gmail-style 3-pane view (folders, list, message)
- IMAP + SMTP — autoconfig auto-publishes the right records, so users can paste their email address into Apple Mail / Thunderbird / Outlook and the client autocompletes the rest
- API — for building your own UI on top:
GET /api/v1/mail/messages,POST /api/v1/mail/messages(send),POST /api/v1/mail/messages/{id}/readetc.
Internal routing optimisation (W117-E)
When two users in the SAME tenant message each other, SendBolt short-circuits: the message bypasses external SMTP entirely. It's just an INSERT into mail_messages. Recipients see it instantly.
This means alice@acme.com → bob@acme.comis instant + free. It doesn't count against your warmup tier cap or your monthly send quota.
Outbound from a workspace mailbox
When a workspace mailbox sends OUTBOUND (to an address outside the tenant), the engine signs with the tenant's DKIM key + routes through the standard outbound path. Same deliverability, same warmup, same suppression rules. From the recipient's perspective, it's indistinguishable from Alice using Gmail.
Bulk-add mailboxes
Have 50 employees? Don't click 50 times. Use the bulk endpoint:
curl -X POST "$API/api/v1/mail/mailboxes/bulk" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{
"rows": [
{"address":"alice@acme.com","display_name":"Alice Johnson"},
{"address":"bob@acme.com","display_name":"Bob Smith"},
{"address":"support@acme.com","display_name":"Acme Support"}
]
}'Returns one row per address: {address, ok, password, error}. Save the generated passwords to your team's shared password manager.
Shared mailboxes (e.g. support@)
A shared mailbox is a regular mailbox with multiple mailbox_members rows. Every member can read + reply. Useful for support@, hello@, billing@.
curl -X POST "$API/api/v1/mail/mailboxes/{mailbox_id}/members" \
-H "Authorization: Bearer $KEY" \
-H "Content-Type: application/json" \
-d '{"user_id":"u_def456","role":"agent"}'Limitations (today)
- No mobile app yet — IMAP works in Apple Mail / Outlook mobile though
- No Push / IMAP IDLE — clients poll every 5 minutes
- No calendar, no contacts (just mail). This isn't a Google Workspace replacement for those
- Storage: 5GB per mailbox on Free / Starter, 25GB on Pro, 100GB on Scale
For testing only?Spin up a rahstack.dev mailbox on DEV before committing your production domain. Workspace v0.1 is opinionated about MX/SRV records and once you publish them, you're committing your domain's mail to SendBolt's inbound infra.