Route SendiMessage events into Slack
Slack is where many teams want to see customer messaging activity — a reply arrived, a send failed, a line was blocked. There is no native SendiMessage Slack app today; what exists is plain HTTP compatibility, and it covers the useful direction well.
Point your SendiMessage webhook endpoint at a small handler (your backend, or a Zapier/Make/n8n flow), verify the X-SMSBridge-Signature header, and forward the events you care about to a Slack Incoming Webhook URL — receive events as 'new customer reply' notifications with a link to the conversation, outbound ERROR events as alerts. For the reverse direction, a Slack slash command or workflow can call your backend, which sends through POST /send-message; keep API credentials in your backend, never in Slack workflow configuration.
What this integration enables
Implementation options
Architecture
- Slack eventA record changes, a stage moves, or a workflow fires
- Workflow or backendSlack automation or your middleware prepares the request
- SendiMessage APIPOST /send-message — the message is validated and queued
- Managed messaging lineYour dedicated line sends the message
- SMS or supported iMessageChannel routing picks iMessage where supported, SMS otherwise
- CustomerThe message arrives; the customer can reply
- Delivery or reply eventSendiMessage records what actually happened
- Signed webhookYour endpoint receives outbound or receive
- Slack timeline updateYour handler writes the event back as activity
Example request
{"number": "{{trigger.phone}}","content": "Hi {{trigger.first_name}}, your appointment is tomorrow at 10:00 AM.","status_callback": "https://your-endpoint.example.com/status?record_id={{trigger.id}}"}
Map the {{…}} placeholders from your Slack trigger data — the syntax shown is illustrative. status_callback is optional: it receives this message's delivery events, and because you compose the URL you can embed your own record id for correlation. Store the returned message_handle for the same purpose.
Delivery events and incoming replies
Use a Slack webhook trigger as your SendiMessage event endpoint: delivery confirmations and incoming replies then start flows that update the CRM, notify a channel, or open a ticket.
// "outbound" event → your slack endpoint// Verify the X-SMSBridge-Signature header (HMAC-SHA256 of the raw body// with your webhook secret), then use GET /v2/messages/{message_handle}// for authoritative state and match it to your record_id in slack.
Limitations and honest notes
- iMessage delivery is available on supported messaging lines and destinations. Recipients without iMessage receive SMS when fallback is configured — never assume universal iMessage availability.
- Messages are accepted asynchronously — the API returns status QUEUED and final status arrives via webhook or the message endpoints.
- No official SDK for this ecosystem yet — the example uses plain HTTP against the REST API. Official SDKs are published for JavaScript/TypeScript (npm: sendimessage), Python (PyPI: sendimessage), PHP (Composer: sendimessage/sdk), and Go (github.com/sendimessage/sendimessage-go). Every SDK is dependency-free and covers the full public API surface.
- A published SendiMessage app in the Slack directory is not available today — the integration uses Slack Incoming Webhooks (via your handler or an automation platform), which is fully supported.
Security considerations
- Store the API key in Slack's credential/connection store, not in plain text fields inside scenarios.
- Restrict who can edit flows that send customer messages.
- Keep phone numbers and message content out of run logs where the platform allows it.
Frequently asked questions
Is there a SendiMessage app in the Slack directory?
What does a successful send look like?
Can flows react to delivery and replies?
Is there a native SendiMessage app for Slack?
Can my team answer customers from Slack?
Related integrations
Ready to connect Slack?
Request a messaging line and a SendiMessage integration specialist will review your Slack workflow and guide the setup.