Stacker

Search Documentation

Search for pages and topics in the documentation

7 min read

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

Each agent gets its own Stacker-hosted email address. Anyone can email it; inbound mail becomes a conversation and the agent is woken to deal with it.

Agent phone number

Provision a dedicated SMS number for an agent from the Messaging page. Texts to that number arrive as individual messages, grouped by the sender's number.

Connected mailboxes

A team member can connect their own Gmail or Outlook inbox. Only mail that matches a person already in the app (by email address) is brought in — unrelated mail is never stored. A connected mailbox is private to its owner unless they share it with specific teammates or agents.

iMessage and SMS from your Mac

With the DeedSpring Messages Bridge app installed on a Mac signed in to the same Apple account as your iPhone (with Text Message Forwarding on), your own texts and iMessages join the inbox the same way a Gmail mailbox does. Pair the Mac with a one-time code from the Messaging page. Only conversations whose phone number matches a person in your records are brought in; numbers are matched by the actual number, so +1 (415) 555‑0100 and 4155550100 are the same person. Replies go out through your Mac, so it needs to be awake and online, and the same send policy applies: read-only, drafts you approve, or the agent sends itself.

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

Write an email or SMS draft to the outbox — as a reply in an existing conversation or a new one — linked to the records it is about. Available to any agent that can write records.

send_message

Ask to send a draft. Needs the Send messages tool grant on the agent's Tools tab, an address whose policy allows agent sends, and review mode off. Otherwise the draft stays in the outbox and the agent is told why.

Waking on new mail

Agents don't poll. Bind a record thread to your Conversations or Messages table (or to a record that links to them, such as a closing) and the agent is woken whenever a message lands.

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.

Related