Add managed SMS and supported iMessage messaging to Intercom
Intercom centers on conversations and its Workflows automation. For customers who drift away from the in-app messenger, SMS or iMessage reaches them where they actually are.
Intercom Workflows can call custom webhook actions, sending conversation context to your middleware, which posts to the SendiMessage API. Incoming replies return via SendiMessage webhooks with the customer's number and conversation, and your handler writes them back through Intercom's Conversations API — the thread stays intact for the support team.
What this integration enables
Implementation options
Architecture
- Intercom eventA record changes, a stage moves, or a workflow fires
- Workflow or backendIntercom 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
- Intercom timeline updateYour handler writes the event back as activity
Example request
{"number": "{{ticket.requester_phone}}","content": "Hi {{ticket.requester_first_name}}, your support request #{{ticket.id}} has been updated: {{ticket.latest_update}}","status_callback": "https://your-endpoint.example.com/status?ticket_id={{ticket.id}}"}
Template variables are examples — substitute your platform's placeholders or values resolved by your middleware. The API accepts only number, content, and optional media_url / status_callback / line_handle; store the returned message_handle on the ticket to match later events back.
Delivery events and incoming replies
How replies become ticket activity: SendiMessage posts a receive event to your endpoint carrying the customer's number and conversation. Your handler matches that to the open ticket and calls the Intercom API to append the reply as a comment or note — the agent sees it in the ticket like any other customer message.
// "outbound" event → your intercom endpoint// Verify the SendiMessage-Signature header (t={timestamp},v1=HMAC-SHA256 of// "{timestamp}.{raw body}", keyed with your webhook secret), then use// GET /v2/messages/{message_handle} for authoritative state and match it to// your ticket_id in intercom.
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 native Intercom marketplace app is not available today; this page documents the API-based methods.
Security considerations
- Store the SendiMessage key in the helpdesk's secure settings, your middleware's secret store, or the automation platform's vault.
- Verify webhook signatures before writing replies into tickets.
- Keep message bodies out of logs; correlate with message ids and ticket ids instead.
Frequently asked questions
Does SendiMessage have a native Intercom app?
Can customer replies re-open or update tickets?
Can ticket updates go out over iMessage?
Related integrations
Ready to connect Intercom?
Request a messaging line and a SendiMessage integration specialist will review your Intercom workflow and guide the setup.