# 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[](#add-smsmms-messages-to-your-workflow)

Before you can send messages, you need to [set up your Twilio account and enable SMS](/journeys/sms-get-started/#set-up-twilio) in your workspace.

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](/journeys/sms-link-shortening/).
    
4.  Click **Add Content** to write up your message.
    
    [![image.png](https://docs.customer.io/images/image%28331%29.png)](#8bd590738f0dcc3b4d2f1fc9d1cc6476-lightbox)
    
5.  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}}`.](/using-liquid) to send from different numbers based on attributes or other criteria. [Learn more](#to-address).
    
6.  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.
    
7.  (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.
    
8.  Enter the **body** of your message. SMS is limited to 160 characters per message, or 70 if you use [some special characters like emojis](/journeys/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.
    
    While link tracking is on by default, you’ll want to use a liquid tag to group personalized links. [Learn more](#tracking-links-in-messages).
    

[![Send an SMS or MMS message](https://docs.customer.io/images/mms-message.png)](#c6a832e1142c455316a1b0266ee8b16c-lightbox)

 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[](#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](/journeys/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.

[![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}}`.](/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 people log in** so that you don’t risk exposing sensitive information to people who click your links.

## SMS “segments” or “credits”[](#sms-segments-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](/journeys/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[](#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.

[![image.png](https://docs.customer.io/images/image%28334%29.png)](#764daea0db83c47c26faa0784593b533-lightbox)

If the message includes redacted data (that is, an admin has [hidden sensitive attribute values](/accounts-and-workspaces/add-remove-team-members/#hide-sensitive-attributes) from you), then test sends will not show the values for those sensitive attributes.

## Using liquid to select your sender[](#to-address)

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:

```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}}
```