exoDocs

The stack

08 · Communications & support

One Exo communications layer sends email, text, and voice through Bird; customer records live in Twenty, an open-source CRM.

Dimension
08 · Communications & support
Platform
Bird + Twenty
Bird
One consent-aware communications layer for email, text, and voice with per-app sending domains. Core standard · authority: EXO
Twenty
Open-source customer context synchronized through replaceable intake adapters. Optional adapter · authority: App
Status
Communications: Planned (roadmap horizon: now). Resend is still the required default until the migration lands. CRM: TBD — named standard in the catalog; no integration is documented in the repository yet.

What it is

One Exo communications layer sends email, SMS, WhatsApp, Apple Messages, and voice. It is consent-aware, runs server-side, uses per-app sending domains, and stays separate from product data. Apps never hold provider keys. They call Exo's send function with their tenant ID (roadmap: bird-communications).

CRM

Customer context stays in the CRM, while forms and signals synchronize through replaceable, consent-aware adapters (the stack description on exo.now).

Platform

Bird will be the single communications provider, replacing Resend and any one-off messaging integrations.

CRM

Twenty, an open-source CRM. Its catalog posture is optional adapter, and the App is the authority: customer relationships belong to the App, not to Exo.

Boundary and replaceability

  • Exo owns the infrastructure: the Bird account, keys, DNS verification, templates, analytics, and suppression lists.
  • Vendor-neutral subdomains. Each App sends from its own custom domain (for example mail.2daysearly.com or inbox.2daysearly.com) for recipient trust and per-domain reputation. Names are never bird., so a provider swap never touches DNS.
  • Exo speaks as Exo from an Exo-owned subdomain (ops.exo.now or notify.exo.now) for billing, operations, and agent notifications.
  • Adapter shape. A Convex communications layer (an outboundMessages table plus per-channel send actions), with the same adapter shape as the billing providers.

CRM

  • The catalog describes the boundary as "open-source customer context synchronized through replaceable intake adapters". The adapter contract itself is TBD.
  • Related intake that exists today: Exo's own contact inquiries are stored in the Convex contactInquiries table, and the portfolio dashboard counts inbound volume over 30 days (revenue monitoring).
  • Direct customer contact data is excluded from Exo's revenue ledger (commerce contract).

Cost notes

Bird per-channel pricing: TBD. The roadmap notes that SMS, WhatsApp, and voice "land free on the same layer — no new vendor later", which means no added vendor, not no usage cost.

CRM

Twenty hosting (self-hosted or cloud) and cost: TBD.

Status

  • Planned, priority high, horizon now, trail IV-170.
  • Scope: migrate Resend call sites (Construct waitlist, contact, and email library; the Interspace inbound route; the Observatory changelog email; Exo templates), add inbound email via Bird mailboxes, and add domain onboarding with warm-up sequencing to tenant provisioning.
  • Until then: Resend remains the required default email provider for active managed projects, and outbound email fails closed unless explicitly enabled (repository contract, environment lifecycle).

CRM

TBD. The repository names Twenty as the standard, but no adapter, ADR, or roadmap item exists yet. Adding one is a next step.

Source: content/docs/stack/communications.mdx

On this page