Send Transactional Bulk SMS

Prev Next

This API enables you to send targeted transactional SMS to your users. You can trigger these SMS messages once a user takes a specific action on your platform.

You can use transactional SMS messages to:

  • Send a post-purchase SMS to share details about a purchase/booking,

  • Help your users reset their password if they forget it,

  • Confirm an order a user places,

  • Share delivery tracking details of a purchase (when it is shipped, on the way, and delivered) and take many other actions.

Use Cases

You can send transactional SMS messages for:

  • System notifications

  • Order confirmation/information

    • Thank you for your purchase! Your order number is {orderNumber}. View more information about your order here: {Link}

    • Hey, {firstName}! Thanks for your purchase! View more information about your order ({orderNumber}) here: {Link}

  • Shipping Confirmation

    • Great news, {firstName}! Your order ({orderNumber}) has shipped and will arrive soon. Click here to view your order details: {Link}

    • Get excited! Your order ({orderNumber}) has shipped and is coming to you. Click here to view your order details: {Link}

  • Ticket booking confirmation or cancellation

    • Hey {firstName}, order #{orderNumber} was successfully canceled. You can check the status of your order here {Link}

  • Information about shipping and delivery updates

  • Recurring billing / Payment Updates

  • Appointment confirmations

  • Welcome Messages

Endpoint and Headers

POSThttps://sms.useinsider.com/v1/sendMultipleMessage   

Visit our Postman collection to test this request.

Headers

Header

Sample Value

Description

X-INS-AUTH-KEY

1a2b3c4d5e6f

This key is required to authorize your request. Refer to API Authentication Tokens to generate your token. If needed to test Transactional SMS, please request an API key from Insider One team.

Content-Type

application/json

This header specifies the media type of the resource.

Body Parameters

Parameter

Description

Data Type

Required

to

Phone Number

String

Yes

content

Content of the SMS

String

Yes

unique_args

Unique arguments of transactional SMS used for tracking purposes

Object

No

callback

The endpoint that you define to receive the webhook events

URL

No

settings.UrlShorteningStatus

To use the URL shortening for the status in your messages.

Boolean

No

settings.UrlShorteningDomain

To use the URL shortening for your domain in your messages. e.g. insdr.io

String

No

settings.UrlTrackingStatus

For using the URL click tracking in your messages. If you do not add this parameter to the payload, the default version will not provide usage. If you do not open urlTracking and if you do not have Insider Tag integration on the related link’s webpage you will see clickthrough metric under the analytics page as zero.

Boolean

No

settings.UrlExcludeProtocol

For excluding URL protocol (e.g., 'http://' or 'https://')

Boolean

No

settings.smartEncoding

This smart encoding will automatically convert special characters from UCS-2 to GSM-7.

Boolean

No

sendAt

Specifies the desired date and time at which the SMS message should be sent. For example: datetime=2006-01-02T15:04:05Z
This parameter is valid only for Twilio and Sinch partners.

String

No


You can enhance your transactional messages with emojis and special characters. Simply add them to the content field when sending a request to the endpoint, and they will be seamlessly delivered to the end user.


Please note that using emojis in your content changes the encoding system to UCS-2. Refer to the Smart Encoding and SMS Part articles for more details.

Sample Request

Every request made to the request endpoint requires a request body formatted in JSON and containing your SMS content. 


Make sure to replace the sample values in the request header(s) and body where required before sending your request.

Below is a sample request to send multiple SMS messages in a single request, each with optional tracking and URL shortening settings.

curl --location 'https://sms.useinsider.com/v1/sendMultipleMessage' \
--header 'x-ins-auth-key: INS.Abcd1234' \
--header 'Content-Type: application/json' \
--data '{
    "messages": [
        {
            "phoneNumber": "+905555555555",
            "content": "This is SMS body.",
            "callback": "http://callback.url",
            "settings": {
                "urlExcludeProtocol": true,
                "urlShorteningDomain": "insdr.io",
                "urlShorteningStatus": true,
                "urlTrackingStatus": true,
                "smartEncoding": true
            },
            "uniqueArgs": {
                "additionalProp1": "string",
                "additionalProp2": "string",
                "additionalProp3": "string"
            }
        },
        {
            "phoneNumber": "90 (555) 55",
            "content": "This is SMS body.",
            "callback": "http://callback.url",
            "settings": {
                "urlExcludeProtocol": true,
                "urlShorteningDomain": "insdr.io",
                "urlShorteningStatus": true,
                "urlTrackingStatus": true,
                "smartEncoding": true               
            },
            "uniqueArgs": {
                "additionalProp1": "string",
                "additionalProp2": "string",
                "additionalProp3": "string"
            }
        }
    ]
}'

Sample Callback Responses

SMS Accepted

{
    "message": "Accepted",
    "messageIds": [
        {
            "phoneNumber": "+905555555555",
            "messageSid": "sms-a1234567-b123-c123-d123-e123f123456"
        }
    ],
    "errors": [
        {
            "field": "messages[1].phoneNumber",
            "error": "This field must be a valid phone number."
        }
    ]
}

SMS Sent

{
  "id": "sms-a1234567-b123-c123-d123-e123f123456",
  "uniqueArgs": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "event": "sent",
  "partCount": 1,
  "phoneNumber": "+901234567890",
  "timestamp": 1234567890
}

SMS Delivered

{
  "id": "sms-a1234567-b123-c123-d123-e123f123456",
  "uniqueArgs": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "event": "delivered",
  "phoneNumber": "+901234567890",
  "timestamp": 1234567890
}

SMS Undelivered

{
  "id": "sms-a1234567-b123-c123-d123-e123f123456",
  "uniqueArgs": {
    "additionalProp1": "string",
    "additionalProp2": "string",
    "additionalProp3": "string"
  },
  "event": "undelivered",
  "reason": {
    "message": "Soft Bounce",
    "code": 1404
  },
  "phoneNumber": "+901234567890",
  "timestamp": 1234567890
}

Transactional SMS Events Now Logged in UCD by Default

You can track your transactional SMS delivery performance directly in UCD automatically and without any setup required.

Transactional SMS events (delivered, undelivered, and dropped) are now written to UCD by default. Previously, these events had to be manually enabled through a support request.

With this update, you’ll benefit from:

- Consistent data tracking across all transactional SMS use cases

- No need for manual enablement or configuration

Limitations

  • All functions must be executed with a simple HTTPS POST request.

  • The API Key should be provided as the authorization key in the request header. If the key is incorrect, the operation will not be executed, and an authorization error will be returned in the response.

  • The transactional API cannot be used to send promotional SMS. It is designed to set transactional SMS only.

  • The phone number should be in E164 format.

  • Content can’t be empty. The maximum limit is 670 characters.

  • You can send a maximum of 5 requests per second, and each request can include up to 50 messages, which means you can send up to 250 message parts per second.

  • The maximum speed will be determined based on the Provider Setup.

The default limit shown here is a standard baseline. If your use case requires higher capacity, feel free to reach out to the Insider One team — we can adjust it to fit your needs.