Messages — org-wide log, compose, opt-out list
One place for everything sent to contacts across email/SMS/push: the org-wide message log with channel filter, a compose modal for direct sends, and the opt-out (suppression) list — visibility only, since the platform refuses suppressed recipients at send time. Per-contact threads stay on the contact page.
If you are building a front end
Your front end calls this over the same-origin `/api/v1` proxy — no backend code to write, no schema to design. Endpoints: GET/POST /api/v1/comms/messages, GET /api/v1/comms/suppression, GET /api/v1/comms/preferences/:crmContactId, POST /api/v1/comms/preferences/unsubscribe.
Bring any front end — hand-written, or generated with Lovable, v0, Bolt, Claude, or Cursor. You get auth, a multi-tenant database, payments through your own Stripe, and email/SMS without writing or hosting a backend.
- How to turn it on
- Nav module key 'messages' (site.config.ts modules).
- Who can use it
- RBAC: comms.messages.read (log) / comms.messages.send (compose) / comms.preferences.read (opt-out list).
- The API behind it
GET/POST /api/v1/comms/messages, GET /api/v1/comms/suppression, GET /api/v1/comms/preferences/:crmContactId, POST /api/v1/comms/preferences/unsubscribe- Where it lives
- /messages
See it in context
Messaging — SMS & email — the full walkthrough, step by step: Your number, your domain, every message logged to the customer record.
Machine-readable
This page is generated from our published capability catalog. Point your AI assistant at /features.json (or /llms.txt) and it can read every feature, how to enable it, and the endpoints behind it — then build against them.