Email & SMS
Agents, your team and automations all send and receive email and text messages through one place. Every message is a record in your app — linked to the contact, deal or other record it belongs to — and nothing goes out from an address unless that address's send policy allows it.
Where messages live
When you enable messaging on an app (from the Messaging page, or automatically when a template that uses it is installed), Stacker adds two tables: Conversations — one per email thread or text exchange — and Messages — one per email or text, inbound or outbound. They are ordinary tables: you can add your own fields, show them in pages, filter them in views and control who sees them with roles and permissions.
A few fields on these tables are managed by Stacker (direction, status, addresses, subject, body, timestamps). You can rename their labels but not change their type or delete them. Anything else on the table is yours.
Addresses and who may send
Open Messaging in your app's settings to see every address the app can send from or receive on.
Agent email
Agent phone number
Connected mailboxes
iMessage and SMS from your Mac
Send policy
Every address has a send policy, enforced by Stacker no matter who or what asks to send:
- Never send — receive-only. Nothing goes out from this address. The default for a newly connected mailbox.
- Only when a person sends — agents and automations can write drafts to the outbox, but a team member has to press Send. The default for agent addresses installed by a template.
- Agents may send — the agent can send on its own once you trust it.
Workspace owners can also turn on review mode for the whole workspace: every automated message waits in the outbox for a person, whatever the address's policy says.
Drafts and the outbox
An outbound message starts life as a draft. Drafts are written by agents (the AI coordinator in the real-estate template drafts replies to inbound mail), by automations, or by a team member who chose Save draft instead of sending. The Outbox on a record — and the team-wide one on the Inbox page — shows every draft with Send, Edit and Discard, plus Ask AI to revise to hand the draft back to the agent with a note ("shorter", "mention the appraisal date"). The agent edits the same draft; it never sends it for you.
When something asks to send, Stacker checks the address's send policy, review mode, and whether a newer message has arrived in the conversation since the draft was written — in which case the draft stays put and the agent is told to read the thread again. A blocked send is not an error: the draft simply waits in the outbox with the reason shown.
Sent messages show as Sending briefly, then Sent. If delivery fails the message returns to the outbox marked Failed with the reason, and you can retry.
Linking messages to your records
On the Messaging page you tell Stacker which of your tables hold people to match against — for example Contacts → Email and Contacts → Phone — and which relation field on Messages and Conversations the match should be written to. When an email or text arrives, everyone on it who matches a record is linked automatically.
Templates declare these for you. The real-estate template links messages to contacts, parties and agents, and its AI coordinator attributes each new conversation to the right closing so the message shows up on that closing's Messages tab and in the deal's comms feed.
What agents can do
draft_message
send_message
Waking on new mail
Automations
Workflows call stacker.sendMessage with a channel, recipients, subject and body. The result tells the workflow whether the message was queued or saved as a draft (because of the address's policy, review mode, or a recipient who isn't in your app yet — automations can only message people you already have a record for), so it can branch instead of failing.
Testing without real email
On the Messaging page you can add simulated addresses. They look and behave like real ones — inbound messages create conversations, agents wake and draft, the outbox works — but nothing is ever delivered anywhere. Simulated messages are flagged so you can tell them apart and clean them up.
You do not have to script every message. The same page can add the Mailbox Simulator, an agent that plays your customers and outside parties (it has no address of its own). Chat to it like a director — “have Nadia text that she sent the deposit”, “reply as the inspector offering Tuesday”, “carry on the conversation” — and it sends the message from that person’s real email or phone to one of your simulated addresses. Your agents wake and respond exactly as they would in production, so you can rehearse a whole scenario live, or test how an agent handles a reply to something it just sent.
Simulation is always available in development. In production it is off by default; ask Stacker Support to enable it for your workspace.