Service Task — Send SMS 📱
Sends an SMS text message via a configured SMS provider.
Node type: serviceTask (subtype: Send SMS)
Category: Integration
Actor: serviceTask (2 threads)
Description
The SMS Service Task sends text messages via Twilio, Vonage, or Amazon SNS. Phone numbers and message body support {varName} variable substitution for dynamic personalization.
Properties
| Property | Type | Required | Description |
|---|---|---|---|
smsConnectionId | string | Yes | ID of the SMS integration |
toNumber | text | Yes | Recipient phone number in E.164 format (e.g., +15551234567). Supports {varName} |
message | textarea | Yes | SMS message body (max 1600 chars). Supports {varName} |
Inputs
toNumber: {customerPhone}
message: Hi {customerName}, your order #{orderId} has shipped! Track at: {trackingUrl}
Outputs
| Variable | Type | Description |
|---|---|---|
{smsSent} | boolean | true if the SMS was dispatched successfully |
{smsSid} | string | Provider message SID for tracking (Twilio) |
Example
{
"nodeId": "send-sms-1",
"name": "Send Appointment Reminder",
"nodeType": "serviceTask",
"properties": {
"smsConnectionId": "int_twilio_prod",
"toNumber": "{patientPhone}",
"message": "Reminder: Your appointment with Dr. {doctorName} is tomorrow at {appointmentTime}. Reply CANCEL to cancel."
},
"timeout": {
"duration": 15,
"durationUom": "SECONDS",
"action": "FAIL"
}
}
Connections
| Condition | Connection |
|---|---|
| SMS dispatched | successFlow or sequenceFlow |
| Send failed | errorFlow |
| Timeout | timeoutFlow |
Phone Number Format
All phone numbers must be in E.164 format: + followed by country code and number, no spaces or dashes.
| Format | Valid? |
|---|---|
+15551234567 | ✅ Valid |
+44 20 7946 0958 | ❌ Invalid (spaces) |
5551234567 | ❌ Invalid (no country code) |
(555) 123-4567 | ❌ Invalid (formatted) |
If your workflow receives phone numbers in other formats, use a Script Task to normalize them before the SMS node.
Supported SMS Providers
| Provider | Notes |
|---|---|
| Twilio | Industry standard, global coverage, detailed delivery receipts |
| Vonage | Global reach, competitive pricing |
| Amazon SNS | AWS-native, cost-effective for AWS deployments |
Configure the from-number and credentials in the SMS Integration.
Character Limits
| Encoding | Max per segment | Notes |
|---|---|---|
| GSM-7 (standard ASCII) | 160 chars | Most Latin text |
| UCS-2 (Unicode/emoji) | 70 chars | Non-Latin scripts, emoji |
| Multi-segment | Up to 1600 chars | Billed as multiple SMS messages |
Variable substitution happens before sending — ensure the final message does not exceed 1600 characters.
Best Practices
- Validate phone numbers before sending — use If/Else to check
{customerPhone}is non-null - Keep messages under 160 characters to avoid multi-segment billing
- Always connect an
errorFlowto handle invalid numbers or provider errors - Include opt-out instructions for marketing messages per carrier regulations
- For appointment reminders and notifications, set up a scheduled trigger rather than triggering on every event