SMS/MMS: Send messages
UpdatedLearn how to send smsShort Message Service: a text message, typically up to 160 characters, sent through a mobile carrier to a phone. and mmsMultimedia Message Service: a message sent through a mobile carrier to a phone that includes a picture or video. messages using Customer.io.
Add SMS/MMS messages to your workflow
Before you can send messages, you need to set up your Twilio account and enable SMS in your workspace.
Drag SMS into your workflow.
Give your message a Name that makes sense to you. Your audience won’t see this name.
Click Settings in your message and update your message’s behavior.
Link tracking is on by default!
Tracked links are long URLs and can take up a lot of space in your message. If you haven’t already, you should enable link shortening or disable link tracking. Learn more.
Click Add Content to write up your message.
In the From field, select the sender ID you want to send your message from.
Want to send from different numbers based on attributes or other criteria?
You can use liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable
{{customer.first_name}}
. to send from different numbers based on attributes or other criteria. Learn more.In the To field, use liquid to set the customer’s phone number attribute—like
{{customer.phone}}
if you store your audience’s phone number in thephone
attribute.(Optional) If you want to send an MMS message, enter a URL of your image (PNG, JPEG, JPG, or GIF) in the Image field. Your image must be smaller than 1.5MB.
Enter the body of your message. SMS is limited to 160 characters per message, or 70 if you use some special characters like emojis. If you go over the character limit, your SMS will appear as multiple messages. See SMS “segments” or “credits” to learn more.
While link tracking is on by default, you’ll want to use a liquid tag to group personalized links. Learn more.


Short links in your preview are for example only
In your message preview, you’ll see links that end in abc123
. We don’t generate the shortened URL until send time. We show example links to help you see your links in context and check your character count. Send a test message to test links in your message.
Tracking links in messages
By default, we track when people click links in SMS messages by appending your link with code that Customer.io understands. This means that tracked links are long URLs and can take up a lot of space in your message. If you want to keep this behavior, you should make sure that you enable link shortening in your workspace.
If you don’t want to use Customer.io’s shortened links, then you should disable link tracking for your message. You’ll need to do this for each message individually.


You can also enable or disable link tracking on a per-link basis using the {% cio_link url:"https://example.com" track:false %}
liquidA syntax that supports variables, letting you personalize messages for your audience. For example, if you want to reference a person’s first name, you might use the variable {{customer.first_name}}
. tag. The track
parameter is a boolean where true
enables tracking and false
disables it. It’s true
by default.
{% cio_link url:"https://example.com" track:false %}
Require logins if your links include personal information!
Shortened links for your workspace expire after 90 days, and we’ll reuse link paths in new messages. If you link out to personal or sensitive information, you should require that people log in so that you don’t risk exposing sensitive information to people who click your links.
SMS “segments” or “credits”
Your billing plan indicates how many SMS/MMS messages you can send before you incur overage fees. Twilio refers to these as Segments; if you’re billed for messages through Customer.io directly, we refer to them as Credits.
Each SMS chat bubble, up to 160 characters, consumes a credit/segment. As you draft your message, we’ll show you how many credits your message consumes, so you know how much each message costs without having to count characters.
While each chat bubble can contain up to 160 characeters, certain characters, like emojis, will limit your messages to 70 characters. We use smart encoding to prevent this from happening whenever possible, but this doesn’t work for all characters. The Segments/Credits field updates as you type to show you what your message costs without having to count characters or learn about encoding schemes.
MMS messages consume 3 credits
Using an image in your message changes the encoding scheme for your message. This means that your message will consume 3 credits instead of 1.
Send a test message
To make sure your SMS works, you can send a test message clicking Send test… in the top right-hand corner of the composer. You’ll see a modal, into which you can enter a phone number to which you can send your message.


Using liquid to select your sender
You may want to dynamically select between multiple Sender IDs at the time each message is sent. Liquid code can be added as a Manual Sender ID to accomplish this. For example, if you wanted to send from a different phone number depending on which Customer Success Manager is assigned to the customer, you could insert a code block such as:
{% if customer.CSM == "stephen" %}
+1647STEPHEN
{% else if customer.CSM == "zack" %}
+1800GOTZACK
{% else %}
+1800CUSTOMR
{% endif %}
Or if you set the phone number as a variable, you could simply use that variable in the From field.
{{customer.csm_phone}}