Send SMS and supported iMessage messages from Zapier
Zapier connects thousands of apps with trigger→action Zaps, and its built-in 'Webhooks by Zapier' action makes any REST API — including SendiMessage — an action step without waiting for a directory app.
Build the Zap with your real trigger (new HubSpot contact, new Calendly booking, updated Pipedrive deal), then add a Webhooks by Zapier 'Custom Request' action: POST to the send-message endpoint, the X-API-Key / X-API-Secret pair in the headers, and a JSON body mapped from trigger fields. The queued response comes back into the Zap for downstream steps. For the reverse direction, a 'Catch Hook' trigger URL becomes your SendiMessage webhook endpoint, turning delivery events and replies into follow-up actions.
What this integration enables
Implementation options
Architecture
- Zapier eventA record changes, a stage moves, or a workflow fires
- Workflow or backendZapier 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
- Zapier 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 Zapier 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 Zapier 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 zapier 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 record_id in zapier.
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 Zapier directory is not available today — the integration uses Webhooks by Zapier (Custom Request), which is fully supported.
Security considerations
- Store the API key in Zapier'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 Zapier directory?
What does a successful send look like?
Can flows react to delivery and replies?
Which Zapier plan do I need?
Related integrations
Ready to connect Zapier?
Request a messaging line and a SendiMessage integration specialist will review your Zapier workflow and guide the setup.