Building Two-Way SMS Automation Using the Sinch Connector in Power Automate

Two-way SMS is one of the fastest ways to reduce support friction: customers text you, your systems react instantly, and you can still track delivery outcomes for compliance and troubleshooting.

This post walks through a practical automation using recent Sinch SMS Connector updates:

  • Trigger: When receiving a delivery receipt
  • Action: Get message status
  • Trigger: Receive SMS (for inbound messages)

We’ll build two flows (Power Automate supports one trigger per flow):

  1. Inbound SMS → Create CRM Ticket → Auto-reply
  2. Delivery Receipt → Get Message Status → Update CRM Ticket

What you’ll build (high level)

Customer sends SMS → Power Automate receives inbound message → Flow creates ticket in CRM → Flow sends automated reply → Delivery receipt updates ticket

Architecture overview: inbound SMS creates ticket + outbound reply; delivery receipt flow updates status


Prerequisites

  • A Sinch account with an SMS-enabled number (or short code/long code depending on region)
  • Access to Power Automate
  • A CRM or ticketing system (examples: Dynamics 365, Zendesk, Salesforce, HubSpot)
    If you don’t have one, you can use Dataverse, SharePoint list, or a simple Excel table as a “ticket store.”

Prerequisites checklist: Sinch number + Power Automate + CRM connection


Flow 1: Inbound SMS → Create Ticket → Auto-Reply

Step 1 — Create a new cloud flow with the Receive SMS trigger

  1. Go to Power Automate → Create
  2. Choose Automated cloud flow
  3. Name it: Inbound SMS → Create Ticket → Reply
  4. Select trigger: Sinch SMS — Receive SMS (wording may appear as “When an SMS is received” / “Receive SMS”)

Step 2 — Configure trigger details (phone number, endpoint, keywords if applicable)

In the trigger, configure:

  • The Sinch number (or service configuration) you want to receive messages on
  • Any filtering options available (keywords, sender, etc.)

Typical fields you’ll see from inbound SMS:

  • From (sender phone)
  • To (your Sinch number)
  • Body (message text)
  • MessageId / InboundMessageId (varies by connector)

Step 3 — Create a ticket in your CRM

Add a CRM action such as:

  • Create record
  • Create ticket
  • Create case
  • Create issue

Map fields like:

  • Title/Subject: SMS from {From}
  • Description: Body
  • Contact/Phone: From
  • Channel: SMS
  • External Message ID: store the inbound ID if available

Step 4 — Send an automated SMS reply via Sinch

Add the Sinch action: Send SMS (or equivalent).

Suggested reply template:

“Thanks! We’ve received your message and created ticket #{TicketNumber}. Reply with more details anytime.”

If your CRM returns a ticket ID/number, insert it into the SMS body.


To make delivery receipts easy to match back to tickets, store:

  • The outbound SMS Message ID returned by Sinch (from the Send SMS step)
  • The CRM Ticket ID

Where to store it:

  • In the CRM ticket itself (custom fields), or
  • In a small table (Dataverse/SharePoint) keyed by OutboundMessageId

Step 6 — Test Flow 1 end-to-end

  1. Save the flow
  2. Text your Sinch number from your phone
  3. Confirm:
    • A ticket is created
    • You receive the auto-reply

Flow 2: Delivery Receipt → Get Message Status → Update Ticket

Delivery receipts (DLRs) let you answer: “Did the SMS actually deliver? When? Why not?”

Step 1 — Create a new cloud flow with When receiving a delivery receipt

  1. Create → Automated cloud flow
  2. Name it: Delivery Receipt → Update Ticket
  3. Trigger: Sinch SMS — When receiving a delivery receipt

Step 2 — Parse the delivery receipt (Message ID, status, timestamp)

The delivery receipt typically includes:

  • MessageId (links to your outbound message)
  • Status (delivered/failed/queued/etc.)
  • StatusDetail or error codes (when failed)
  • Timestamps

Step 3 — Add action: Get message status

Add the Sinch action Get message status and pass the MessageId from the delivery receipt.

Why this helps:

  • Delivery receipts can be brief; Get message status can provide richer or latest state details (depending on region/product configuration).

You now need to map MessageId → Ticket.

Common approach:

  • Search CRM records where OutboundMessageId == MessageId
  • Or look up in your correlation table (Dataverse/SharePoint)

Then update the ticket:

  • SMS Delivery Status = delivered/failed
  • Delivered At = timestamp
  • Failure Reason (if any)

Step 5 — Add optional notifications (Teams/Email) for failures

For example, if status is failed, notify a support channel:

  • Post a message in Teams:
    “SMS delivery failed for ticket #123. Reason: {StatusDetail}”

Step 6 — Test Flow 2

  • Send a new inbound SMS (Flow 1 will reply)
  • Wait for the delivery receipt to trigger Flow 2
  • Confirm the CRM ticket is updated with delivery status

Example automation (as described)

  1. Customer sends SMS
  2. Flow creates ticket in CRM
  3. Sends automated reply
  4. Delivery receipt updates ticket status (delivered/failed)

Tips, gotchas, and best practices

  • Use correlation IDs: Always store the outbound MessageId on the ticket so delivery receipts can update the right record.
  • Handle duplicates: Some systems can emit multiple receipt updates (e.g., queued → sent → delivered). Update the ticket with the latest status + timestamps.
  • Normalize phone numbers: Store From in E.164 format if possible to avoid mismatches.
  • Rate limits and retries: If your CRM throttles, add retry policy and/or queue updates in Dataverse.

Conclusion

With the Receive SMS trigger, When receiving a delivery receipt trigger, and Get message status action, you can build a robust two-way SMS support channel in Power Automate—fully automated, trackable, and easy to extend.