Send messages from Power Automate flows
Power Automate is the automation layer of the Microsoft ecosystem — Dataverse, Dynamics 365, SharePoint, and Outlook events all become flow triggers.
Add the HTTP action to a cloud flow: POST to the send-message endpoint with the API key pair referenced from environment variables or Azure Key Vault, and a JSON body composed from dynamic content. The 'When an HTTP request is received' trigger provides a URL you can register as your SendiMessage webhook endpoint, letting delivery events and replies update Dataverse records or notify Teams channels.
What this integration enables
Implementation options
Architecture
- Microsoft Power Automate eventA record changes, a stage moves, or a workflow fires
- Workflow or backendMicrosoft Power Automate 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
- Microsoft Power Automate 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 Microsoft Power Automate 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 Microsoft Power Automate 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 power-automate 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 power-automate.
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 Microsoft Power Automate directory is not available today — the integration uses the HTTP action (premium connector), which is fully supported.
Security considerations
- Store the API key in Microsoft Power Automate'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 Microsoft Power Automate directory?
What does a successful send look like?
Can flows react to delivery and replies?
Is the HTTP action included in my license?
Ready to connect Microsoft Power Automate?
Request a messaging line and a SendiMessage integration specialist will review your Microsoft Power Automate workflow and guide the setup.