Communication (Messaging)
Communication is the multi-channel messaging service for the Shift Platform. It supports transactional messaging through Resend (email), Slack, Telegram, WhatsApp, webhook, and custom providers. Apps register against channels, then send messages through them.

What It Does
- Channel Management — Create and manage messaging channels with provider-specific configuration.
- App Registration — Register applications against channels with target addresses and metadata.
- Message Sending — Send messages through registered channels with delivery tracking.
- Delivery History — Track message delivery status across all channels and apps.
- Provider Drivers — Pluggable driver architecture supporting multiple messaging providers.
Key Concepts
| Concept | Description |
|---|---|
| Channel | A configured messaging endpoint (e.g., a Slack webhook, a Resend domain). |
| Registration | An app's connection to a channel, including a default target address. |
| Delivery | A record of a sent message with status (accepted/failed) and provider details. |
| Provider | The underlying messaging service (resend, slack, telegram, whatsapp, webhook, custom). |
Configuration
| Setting | Value |
|---|---|
| Storage Directory | .communication/ |
| API Dev Port | 4007 |
| Web Dev Port | 4107 |
| Gateway Prefix | /api/v1/communication/* |
Supported Providers
| Provider | Channel Type | Config Keys |
|---|---|---|
| Resend | apiKey, fromAddress | |
| Slack | Webhook | webhookUrl |
| Telegram | Bot | botToken, chatId |
| API | apiToken, phoneNumberId | |
| Webhook | HTTP | url, headers |
| Custom | Any | Provider-specific |
Config values support env:VAR_NAME interpolation for secrets (e.g., "apiKey": "env:RESEND_API_KEY").
Getting Started
Create a channel:
shift-cli communication channels create --name slack-alerts --provider slack \
--config '{"webhookUrl": "env:SLACK_WEBHOOK"}'
Register an app:
shift-cli communication register my-app <channel-id> --target "#alerts"
Send a message:
shift-cli communication send my-app --channel-id <channel-id> --body "Deployment complete"