SMS/MMS: Send messages

Updated

Learn 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 connect an SMS provider in your workspace.

For an automation or API-triggered broadcast:

  1. Drag SMS into your workflow.
  2. Give your message a Name that makes sense to you. Your audience won’t see this name.
  3. 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.
  4. Click Add Content to write up your message.

Your editing experience depends on when you integrated your SMS provider. If you integrated your SMS provider before July 30, 2026, you’re using the classic SMS composer. After this date, you’re using Design Studio, our message creation platform.

Classic SMS composer

Your editing experience depends on when you integrated your SMS provider. If you integrated your SMS provider before July 30, 2026, you’re using the classic SMS composer.

  1. In the From field, select the sender ID you want to send your message from. Learn about dynamically rendering sender numbers below.
    Send an SMS or MMS message
    Send an SMS or MMS message
  2. 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 the phone attribute.
  3. (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.5 MB.
  4. 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.

 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.

Design Studio

If you integrated your SMS provider on or after July 30, 2026, you’re using Design Studio to create messages. You can create an SMS message from the Design Studio dashboard before creating your automation, broadcast, or transactional message. Or you can create an SMS from within the workflow through an SMS block.

  1. In the From field, select the sender ID you want to send your message from.
    mms-message-design-studio.png
    mms-message-design-studio.png
  2. 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 the phone attribute.
  3. 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.
  4. (Optional) Add an image. Click Insert > Image and upload a file or insert a URL of your image (PNG, JPEG, JPG, or GIF). Your image must be smaller than 1.5 MB.
  5. Turn on Preview to render liquid syntax and ensure your message looks as you’d expect. Click to choose different profiles to preview your message against.
  6. If the message is already part of a workflow, click Publish to push your changes from Design Studio to your connected workflow.

 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.

If you’re familiar with Design Studio for email, you know about custom components, a way of creating custom resuseable content. Custom components are not supported for SMS messages, but you can reuse content across SMS using snippets.

MMS messages

When you send an SMS message with an image, it becomes a multi-media message (MMS). MMS messages can help you make your point when 160 characters just aren’t enough. However, before you send an MMS message, you should take into account:

  • Images must be PNGs, JPEGs, or GIFs.

    The URL you host must end in the image format for us to attach it to your message.

  • Maximum image size is determined by recipient carrier, so you should limit image size to 600kb where possible.

    While our asset library accepts files up to 3MB, and some providers allow attachments up to 5MB, the maximum image size for MMS is typically much smaller. Recipient carriers enforce their own size limits, many down to just 600kb. We recommend that you use the smallest possible images to ensure that your audience sees your image, regardless of their carrier and connection quality. If you use a short code or a toll-free carrier with Twilio, your image may be limited to 600kb. Your message can also include up to 1600 characters.

  • MMS messages are slightly more expensive than SMS messages.

    This is because MMS messages are typically larger than SMS messages; this pricing model isn’t unique to any provider. But you may want to reserve MMS messages for your most meaningful mobile interactions.

  • MMS messages are limited to the United States and Canada.

    MMS messages sent to someone in another country will fail. Through Vonage, MMS is limited to the United States.

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.

While link tracking is on by default, you’ll want to use a liquid tag to group personalized links. Learn more.

Link tracking
Link tracking

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 profiles log in so that you don’t risk exposing sensitive information to profiles that 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.

An SMS with under 160 characters showing 1 segment
An SMS with under 160 characters showing 1 segment

While each chat bubble can contain up to 160 characters, characters like emojis 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.

send-test-ds.png
send-test-ds.png

If the message includes redacted data (that is, an admin has hidden sensitive attribute values from you), then test sends will not show the values for those sensitive attributes.

Dynamically render a sender

This is currently only available for accounts that integrated with Twilio before July 30, 2026.

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}}
Copied to clipboard!