Customer Support
Give customers a support inbox. Each email becomes a ticket linked to the sender's CRM contact, and your agent tracks it until it's closed.
Give customers one address to write to, like support@yourcompany.com. Each
new email becomes an open ticket linked to the sender's contact in your CRM,
and your agent tracks it until it's closed. Any company member can work
tickets.
This page is about your customers' support. To reach the Cofounder team, use
support_create (Support).
Customer support is not available to every company yet. The Support page and CLI/MCP tools are available only after it is enabled for your company. This is separate from choosing an inbox: mailbox setup does not enable the feature. Direct API access and incoming ticket processing remain available.
Choose a Support Inbox
Your agent either creates a new mailbox for support or uses one the company already has. A new one can be on a domain the company owns or on its trial domain. Trial-domain inboxes and the first inbox on your own domain are free; each one after that is $2 a month.
If the domain's email setup isn't finished, support stays off until it is. Your agent gives you the remaining steps and tries again after.
Setup also adds support/policies.md to your Library if it isn't there, so
your agent has a place to read your support policies. It keeps any policies
you already wrote. It doesn't turn on automatic replies, and you can't switch
to a different support inbox yet.
Handling Requests
New customer email opens a ticket, and replies stay on the same ticket. Email sent to your other inboxes doesn't create tickets.
Your agent lists the open tickets, reads a ticket with its messages, and gets links to any attachments. Each ticket has a status:
open: needs attention.waiting_customer: waiting on the customer.waiting_company: waiting on you or your agent.closed: done. A new reply from the customer reopens it.
Your agent can also set a priority (urgent, high, normal, or low),
assign the ticket to a teammate, write down the next step, and flag tickets
that need a person to decide. Assigning a ticket doesn't limit who can see
it. Your agent can filter tickets by status, priority, assignee, or that
flag. Use requester_contact_id to find a CRM contact's tickets or query
to search ticket subjects.
Changing a ticket doesn't send the customer any email. A customer reply reopens a closed ticket and keeps its notes and settings.
For a company enrolled in inbound screening, ticket subjects remain hidden.
Message text is available only when that message has a complete clear
screening result. Pending, review, unavailable, missing, or invalid results
withhold the text and set content_withheld; agent_armor.status and
agent_armor.verdict report the screening state. Ticket and message metadata
remain available. Attachment downloads are unavailable while screening is
enabled because attachment contents are not screened.
Share Internal Notes
Your agent and teammates can leave notes on a ticket, like "check the refund with a teammate". Notes record who wrote them and when, stay internal, and never reach the customer.
Reply to Customers
Your agent can save a suggested reply and a draft for the whole team to see, then send the reply in the ticket's original email thread. Only the reply text goes to the customer, never notes or suggestions. Sending doesn't change the ticket's status.
A successful send clears the saved draft only if nobody changed it in the meantime. A failed send keeps it. If a send's result is unclear, your agent retries with the same reply key and it won't go out twice. Mailbox limits and do-not-contact rules still apply.
Include the ticket's updated_at as expected_updated_at when saving or discarding a draft. A changed ticket returns 409 instead of overwriting newer edits. Keep your entered text, read the current ticket, and compare the drafts before saving again. The Support page uses this check for draft saves in both the dashboard and MCP app.
Use the Support Page
Open Support in the dashboard or ask your agent to call company_app_open with view: "support" to show the same page inside your MCP host. Pass ticket_id to open a ticket, contact_id to filter by customer, or needs_human_attention: true to focus on flagged work.
The Support page lets every company member manage tickets, share notes, and send replies. Needs human attention shows flagged tickets that are not closed. In an empty reply box, Tab inserts the saved suggestion for editing. Typing preserves the suggestion, Discard clears both fields, and only Send sends. Open a ticket's CRM contact to read the same emails alongside other activity and navigate back to their tickets.
Commands
| MCP | CLI | API |
|---|---|---|
On MCP, a new inbox is {"source": "new", "local_part": "support"}, with
mail_domain or mail_domain_id to pick the domain. An existing one is
{"source": "existing", "inbox_resource_id": "<mailbox-id>"}. Pass
include_messages and attachment_ids to customer_support_tickets_get
only when you need the messages, since they're fetched from the mailbox.
customer_support_tickets_update takes status, priority,
assignee_user_id, next_action, needs_human_attention,
suggested_reply, and reply_draft. Omitted fields stay unchanged. Set
assignee_user_id or next_action to null to clear it, and send
suggested_reply: null with reply_draft: "" to discard both. Text fields
and notes hold up to 100,000 characters.
To reply, read the ticket with include_messages: true, then pass the reply
body, a message_id from its messages, the ticket's updated_at as
draft_updated_at, and an idempotency_key:
{"ticket_id": "<ticket-id>", "body": "Thanks for reporting this. We're looking into it.", "message_id": "<message-id>", "draft_updated_at": "<ticket-updated-at>", "idempotency_key": "<unique-reply-key>"}Include company_id on a personal connection.