> This page is part of the [Customer.io documentation](https://docs.customer.io). For the complete index, see [llms.txt](https://docs.customer.io/llms.txt).
> Last updated: August 5, 2026

# SMS/MMS: send messages

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](/messaging/channels/sms/get-started/#connect-your-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](/messaging/channels/sms/link-shortening/).
    
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](#classic-sms-composer). After this date, you’re using [Design Studio](#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](#manual-sender-id).
    
    [![Send an SMS or MMS message](https://docs.customer.io/images/mms-message.png)](#c6a832e1142c455316a1b0266ee8b16c-lightbox)
    
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](/messaging/channels/sms/character-encoding/). If you go over the character limit, your SMS will appear as multiple messages. See [SMS “segments” or “credits”](#sms-segments-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](#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](https://docs.customer.io/images/mms-message-design-studio.png)](#c7dc5882e411a6523ba3af9d7d418299-lightbox)
    
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](/messaging/channels/sms/character-encoding/). If you go over the character limit, your SMS will appear as multiple messages. See [SMS “segments” or “credits”](#sms-segments-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](/messaging/liquid/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](https://support.twilio.com/hc/en-us/articles/360018832773-Twilio-Programmable-SMS-Supported-File-Types-and-Size-Limits-for-MMS-Media-Messages), 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.
    

## 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](/messaging/channels/sms/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](/messaging/channels/sms/link-shortening/#group-personalized-links).

[![Link tracking](https://docs.customer.io/images/sms-link-tracking.png)](#23b85fd06d051d2d848513070db2a199-lightbox)

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}}`.](/journeys/liquid/using-liquid) tag. The `track` parameter is a boolean where `true` enables tracking and `false` disables it. It’s `true` by default.

```fallback
{% 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](https://docs.customer.io/images/sms-segments.png)](#eba5ae8701b35c06dd5d94c3faaea46d-lightbox)

While each chat bubble can contain *up to 160 characters*, characters like emojis limit your messages to 70 characters. We use [smart encoding](/messaging/channels/sms/character-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](https://docs.customer.io/images/send-test-ds.png)](#25abff4b17205ae013fec948b9a907af-lightbox)

If the message includes redacted data (that is, an admin has [hidden sensitive attribute values](/accounts/settings/team/intro-account-access/#hide-sensitive-attributes) 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](/messaging/channels/sms/sender-phone-numbers/#using-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:

```fallback
{% 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.

```fallback
{{customer.csm_phone}}
```

*   *   [Add SMS/MMS messages to your workflow](#add-smsmms-messages-to-your-workflow)
        *   [Classic SMS composer](#classic-sms-composer)
        *   [Design Studio](#design-studio)
    *   [MMS messages](#mms)
    *   [Tracking links in messages](#tracking-links-in-messages)
    *   [SMS “segments” or “credits”](#sms-segments-credits)
    *   [Send a test message](#send-a-test-message)
    *   [Dynamically render a sender](#manual-sender-id)

Copy page

Copy page [Download .md](/messaging/channels/sms/send-messages.md)

Is this page helpful?

![](https://docs.customer.io/images/export-success.png) ![](https://docs.customer.io/images/export-failure.png)

# How can we make it better?

Close

Do you need help from Customer.io support?  No  
 Yes

What part of Customer.io do you need help with? 

How can we improve this page?

Email (optional):  Please provide a valid email address

 I am not a bot

 

We appreciate your feedback!

Our support team will contact you as soon as possible
