Skip to content

Account – Channels – SMS

  • Path: /account/channels/sms (TBD)
  • Parent: channels.md

Connect SMS capabilities for messaging ingestion and outbound replies where permitted.

  • Workspace Admin
  • Permissions: channels.connect, sms.manage (TBD)

Reference: Roles & Permissions Model

  • SMS rows live in the main /account/channels route under the SMS tab; this child doc defines SMS-specific behavior for the wizard and connection settings surfaces.
  • Primary surfaces:
    • Add channel wizard -> Step 3 Connect
    • Add channel wizard -> Step 5 Destination
    • Connection settings dialog for an existing SMS connection
  • SMS-specific UI includes:
    • number acquisition / bring-your-own-number controls
    • read-only connected number chip after selection
    • 10DLC compliance collection for brand and campaign data
    • agent assignment through the shared Destination step
  • src/app/account/channels/_components/add-channel-wizard.tsx
  • src/app/account/channels/_components/connection-settings-dialog.tsx
  • src/app/account/channels/_components/sms-compliance-forms.tsx
  • shared shadcn primitives: Tabs, Select, Input, Textarea, Checkbox, Accordion
  • Empty: no SMS numbers configured
  • Loading: fetch number inventory / requests or persist compliance changes
  • Error: provisioning failure / compliance restrictions
  • Complete: number connected, assigned to a workspace / KB / agent, and compliance data may be present on the connection
  • SMS number lifecycle interacts with SMS Requests under Settings.
  • SMS is an agent-managed channel family. Users do not directly edit the effective KB on the SMS connection; the KB is resolved from the assigned agent.
  • In the Channels table, SMS rows use the shared phone table pattern:
    • sortable columns: Phone number, Workspace, Knowledge base
    • editable Agent selector
    • Active switch
    • row actions for edit / delete, plus Assign in Agents when no agent is linked yet
  • Step 3 - Connect
    • Mode tabs: Get a new number and Use my number
    • Country code selector, area code input, and number selector are shown here
    • The selected number is carried forward and shown in Destination as a read-only chip
  • Step 5 - Destination
    • Workspace and Knowledge base are shown using the shared Destination step
    • Agent is required for SMS because it is a Chatti Live channel family

SMS connections can persist structured compliance data on ChannelConnection.smsCompliance.

  • Brand fields
    • entity
    • vertical
    • displayName
    • companyName
    • registrationNumber
    • brandType
    • contactPhone
    • contactEmail
    • website
    • address
    • country
    • state
    • city
    • zipCode
  • Campaign fields
    • campaignDescription
    • messageFlow
    • privacyPolicyUrl
    • useCaseType
    • messageSamples (5 entries)
    • optInKeywords, optInMessage
    • optOutKeywords, optOutMessage
    • helpKeywords, helpMessage
    • numberPooling
    • directLending
    • embeddedLink
    • embeddedPhone
    • ageGatedContent
    • termsAndConditions

Interaction rules:

  • The campaign section uses accordions so operators can work through the submission progressively.
  • Filled accordion sections show completion markers to make long-form progress scannable.
  • Compliance edits are persisted via the channels context setSmsCompliance(id, compliance) and through the setup-status mutation set-sms-compliance.
  • SMS compliance is edited in the connection settings dialog for existing connections and can also be set during the add-channel wizard flow.

Domain refs:

  • GET /channels/sms/numbers
  • POST /channels/sms/connect
  • Regulatory requirements vary by region.
  • SMS onboarding must preserve the operator-entered compliance payload and must not imply carrier approval until such approval exists in backend/provider systems.
  • Number reclaimed/expired by provider
  • Existing SMS connection has no smsCompliance yet -> settings dialog opens with empty brand and campaign defaults
  • KB cannot be resolved for the connected number -> show degraded state until reassigned through the shared destination/settings flow
  • Treat brand/campaign registration details and contact fields as sensitive operational data.
  • Do not expose or log compliance payload values in analytics events.
  • Consent, opt-in, opt-out, and help message fields must remain editable because they are part of the documented operator workflow.

Reference: Security & Compliance

  • channel.connected

Reference: Analytics Events (MVP)