Long URLs can be difficult to read and manage in customer messages. Make every character count with Iterable shortlinks, which create shorter, trackable links without changing their destination.
Shortlinks offer important benefits:
Brand recognition - If you use a custom tracking domain for link shortening, your users see links that are associated with your organization, which can increase trust and engagement.
Click tracking - Iterable tracks clicks on shortlinks, so you can see how your users are engaging with your SMS, WhatsApp, and RCS messages.
Personalization - Shortlinks can redirect personalized URLs, URLs that contain UTM parameters, and URLs with Handlebars expressions, so you can track user engagement and personalize content without worrying about creating URLs that are too long.
Space-saving - Shortened links use fewer characters in your SMS messages than long, complicated URLs with personalized parameters, leaving more room for your content.
Deep linking - If you set up your tracking domain to support deep links, you can include deep links in your mobile messaging campaigns, which can open your app on a user's device.
In this article, you'll learn how link shortening works for RCS, SMS, and WhatsApp; how to set up a custom tracking domain; and how to add UTM parameters and deep links to your templates.
# In this article
# How shortlinks work for RCS, SMS, and WhatsApp
When you enable link shortening for an RCS, SMS, or WhatsApp template, Iterable replaces eligible links with unique shortlinks that track clicks and redirect users to the original destination URL. For RCS, Iterable shortens links in text messages and Open Website buttons.
For example, if you include a link to https://www.example.com/shoppingcart.htm?code=BLACKFRIDAY
in your SMS message, Iterable shortens it to a link like https://itbl.co/-KT~2NMwZ for organizations hosted in Iterable's US Data Center (USDC)
or https://eu.itbl.co/-KT~2NMwZ for organizations hosted in Iterable's European Data Center (EDC).
Iterable stores shortlinks for a minimum of 30 days. If a user clicks on an expired link, they will see a friendly 404 page.
Occasionally, Iterable may reuse shortlink keys, but only for the same project. To reduce the chances of a link being reused, you can increase the minimum key length for shortlinks in your project settings.
# Ways to customize shortlinks
There are several ways to customize shortlinks:
Custom tracking domain: Use a custom tracking domain for shortlinks that is associated with your organization. This can increase trust and engagement with your users.
Unique key length: Customize the length of the unique key for shortlinks in your mobile messaging campaigns. The longer the key, the more unique shortlinks you can generate, and the more secure your shortlinks are. The shorter the key, the more space you save in your messages.
Personalization: Shortlinks can redirect personalized URLs, URLs that contain UTM parameters, and URLs with Handlebars expressions. This allows you to track user engagement and personalize content without worrying about creating URLs that are too long.
UTM parameters: Automatically attach specific UTM parameters (and/or other URL parameters) to each link in your templates. This can help you track user engagement and campaign performance.
Deep links: Include deep links in your templates. When a user clicks a deep link, it opens in your mobile app (if it's installed on the user's device) or in a web browser. A custom tracking domain is required to send shortened deep links in RCS, SMS, and WhatsApp campaigns.
IMPORTANT
PII security considerations
When using link shortening with sensitive information or PII, always require a login. When a shortlink expires, its random characters can be reused for a new link (only by the same Iterable project). Authentication prevents a previous recipient from accessing sensitive content found at a reused link's new destination, should a user happen to click an old link that has since been reused.
# Parts of a shortlink
Each shortlink includes the following characters:
- The tracking domain (
https://itbl.co/for USDC-hosted organizations,https://eu.itbl.co/for EDC-hosted organizations, or a custom tracking domain) - A project connector followed by a tilde (example:
-KT~) (only for the default shortlink domain,itbl.co) - A unique key (example:
2NMwZ) that ranges in length by up to 6 additional characters from the minimum key length, which you can customize in your project settings.
Here is an example shortlink that uses the default configuration:
https://itbl.co/-KT~2NMwZ
# Character length of shortlinks for custom tracking domains
When you use the default settings and tracking domain, shortlinks vary between 26 and 35 characters in length. Here is the breakdown:
-
https://itbl.co/(16 characters) orhttps://eu.itbl.co/(19 characters) - Project connector (up to 5 characters) (example:
-KT~). Note that the tilde character (~) is included in all project connectors, and counts as two characters. - A unique key with the minimum character count set in your project settings
(default: 5 characters), up to 6 additional characters (example: as short as
2NMwZand up to as long as2NMwZAAAAAA).
When you use a custom tracking domain, the length of shortlinks vary depending on your configuration:
-
http://orhttps://, depending on your domain's configuration (7 or 8 characters) - Your custom tracking domain with a trailing slash (example:
exmpl.co/, 9 characters). - A unique key with the minimum character count set in your project settings,
up to 6 additional characters (example: as short as
2NMwZand up to as long as2NMwZAAAAAA).
For a custom tracking domain of https://exmpl.co/, an example shortlink
with a minimum key length of five characters would be:
https://exmpl.co/2NMwZ
In this example, the total length of the shortlink can vary from 22 to 28 characters.
# Default link tracking domain: itbl.co
By default, new projects use Iterable's shortlink domain. This domain is shared across all Iterable projects and varies by data center location.
- For USDC-hosted projects:
https://itbl.co - For EDC-hosted projects:
https://eu.itbl.co
Because itbl.co is shared across all Iterable projects, shortlinks that use
this domain include a project connector key, which is unique to each project
and up to five extra characters. Each project connector key is up to five
characters long and is followed by a tilde (~). The tilde character counts as
two characters.
For example, in https://itbl.co/-KT~2NMwz, the -KT~ prefix associates the
link with the template's Iterable project. However, the template preview
doesn't show the actual, project-specific extra characters that appear in your
messages (only an example).
itbl.co cannot be used to send deep links.
For link shortening, using Iterable's default domain is not a best practice for
production use. It's best to use a branded link tracking domain, instead of
itbl.co, when sending shortlinks to your audience. Users perceive links
associated with your organization to be more trustworthy and they are more
likely to click on them.
# Using a custom tracking domain for shortlinks
If you want brand recognition for your shortlinks, Iterable can use your custom domain for shortlinks. This way, your users see links that are associated with your organization, which can increase trust and engagement.
You can add multiple tracking domains to a project, but you can only use one tracking domain per template.
# Adding a custom tracking domain for shortlinks
To set up a link tracking domain for RCS, SMS, or WhatsApp link shortening:
Register a domain of your choice. The shorter, the better.
-
Enable HTTPS for all tracking domains. This is not an Iterable requirement, but it's highly recommended and widely considered a best practice.
To enable HTTPS for a tracking domain, you can use a service such as Amazon CloudFront or Cloudflare.
-
In the domain's DNS, set up a CNAME record that points to the Iterable tracking domain for your host datacenter — one of the following:
-
links.iterable.com(for a USDC-based project) -
links.eu.iterable.com(for an EDC-based project)
NOTE
Be sure to use the correct domain for your project. Keep in mind that an organization's data center location refers to where your org's data is stored and may not correspond to your company's physical location. For more information, see Iterable's European Data Center (EDC).
-
In Iterable, log in as a user with the Manage Project Settings permission and open the project you're setting up.
Go to Settings > Domains and add this new domain as a link tracking domain, making sure to enable HTTPS. For more information, read Email Setup.
Iterable automatically verifies DNS records. Check the status in the Verified column of the Domains page. DNS changes may take time to propagate (up to 48 hours).
Once Iterable has verified the domain, you can use it for RCS, SMS, or WhatsApp link shortening by enabling the Shorten and Track setting in the template and selecting the domain from the dropdown.
# Configuring a custom tracking domain to support deep links
To have your tracking domain support deep links:
- On the Settings > Domains page, add some destination domains to your tracking domain.
- For each destination domain, create an
apple-app-site-associationfile. These files specify the specific paths for which your app can handle deep links. - Create an
assetlinks.jsonfile, so that Android devices know that your app can be trusted to open links for your destination domains.
TIP
To learn more about these steps, read Sending Domains, Tracking Domains, and Deep Links.
# Setting the minimum unique key length for shortlinks
Each shortlink includes a unique key that has a minimum length (and ranges in length by up to 6 additional characters). This key is used to redirect users to the original destination URL when they click the shortlink.
You can customize the length of the unique key for shortlinks in your templates by changing the project setting, Shortlink character preference for RCS, SMS, and WhatsApp.
By default, keys are a minimum of five characters long and up to 11 characters long. You can change the minimum key length in your project's settings for transactional and marketing message channels to use different key lengths.
The longer the key, the more unique shortlinks you can generate, and the more secure your shortlinks are. However, longer keys take up more space in your SMS messages.
To learn how to change the minimum key length for shortlinks in your project, read Project Settings: Shortlink character preference for RCS, SMS, and WhatsApp.
# Shortlink key generation
For each link in your message, the actual number of characters used for each unique key is determined at send time and is always at least the minimum length you've set in your project settings, and at most the minimum length plus six additional characters.
Here's how it works:
- Iterable tries up to 5 times to find an available unique key of the minimum length set in your project settings.
- If it cannot find one, Iterable tries up to 5 times to find an available unique key with one additional character.
- This process continues, adding one character at a time, up to a maximum of 6 additional characters.
The longer the minimum key length, the easier it is for Iterable to find an available key. Each character in the shortlink key has 64 possible options, so as the key length increases, the likelihood of finding an available shortlink key within 5 tries also increases.
# Using shortlinks in RCS, SMS, and WhatsApp templates
To use link shortening, enable it in your RCS, SMS, or WhatsApp template. Iterable then uses the tracking domain you select to shorten eligible links, regardless of whether they come from manual entry in the message content, a Handlebars expression, or a snippet.
# Using Handlebars to insert URLs in SMS templates
If you're using Handlebars to insert a link into an SMS message, use triple curly bracesfavoriteItemURL profile field that you'd like
to use as a link in your message, enter {{{favoriteItemURL}}}, not
{{favoriteItemURL}}.
# Adding UTM parameters (and other custom parameters) to shortlinks
Iterable can automatically attach specific UTM parameters (and other URL parameters) to each shortened link in your template content.
When you enable UTM parameters in an RCS, SMS, or WhatsApp template, Iterable adds:
utm_source=Iterable-
utm_campaignwith a value set to the ID of your campaign () -
utm_mediumwith a value set to the channel used (rcs,sms, orwhatsapp)
For example, a WhatsApp message can include
utm_source=Iterable&utm_campaign=12345&utm_medium=whatsapp.
These parameters are added before the link is shortened. They won't appear directly in the message, but they are available after the shortlink is resolved to its intended destination (in your app, or in the browser).
For channel-specific instructions, see Creating an RCS Template, Creating SMS Templates, or Creating WhatsApp Templates.
IMPORTANT
Iterable only attaches UTM parameters (and other custom URL parameters) to shortened links.
If you don't enable link shortening and tracking for the template, URL parameters you configure for it won't be added to the sent message. Standard links with UTM parameters can get quite long, which is a problem for a character-constrained medium like SMS.
# Adding deep links to RCS, SMS, and WhatsApp templates
After creating a tracking domain, you can use it to include deep links in your RCS, SMS, or WhatsApp templates. When a user clicks a deep link, it opens in your mobile app (if it's installed on the user's device), or in a web browser.
You can recognize a deep link sent with Iterable by the /a in its URL. For
example, a template using itbl.info as a link tracking domain creates deep
links that look like this: https://itbl.info/a/2NMwZ.
To send a deep link from an RCS, SMS, or WhatsApp template:
In the template, enable Shorten and Track.
Select a tracking domain configured for deep linking (as described above).
Add a link to your message content, making sure that it matches a destination domain and path associated with the specific tracking domain you've selected.
To test that deep links are working as expected, send yourself a proof, inspect the link, and make sure that it opens in your app.
# Considerations for deep links
Keep these considerations in mind when sending deep links in RCS, SMS, and WhatsApp messages:
The default tracking domain,
itbl.co, cannot be used to generate and send deep links (since you can't create anapple-app-site-associationfile for this domain).If your mobile apps (iOS, Android, React Native) have been set up to handle deep links from emails and push notifications, you don't need to write any extra code to support deep links from RCS, SMS, or WhatsApp messages.
In SMS templates, the character count on the Preview with Data page does not account for the two characters added by the
/ain the deep link's URL.If the links you add to your message don't match the destination domains you've defined for the tracking domain you've selected (or the paths defined in their associated
apple-app-site-associationfiles), Iterable does not rewrite those links as deep links.To make sure that deep links are working as expected, always send yourself a proof before activating or sending the campaign.
Deep links can include UTM and other custom parameters. These URL parameters are added to your links before they're shortened and converted to deep links.
# Click tracking for RCS, SMS, and WhatsApp
When a recipient clicks a shortened link, Iterable records a channel-specific click event. You can use these events for segmentation, Journey entry and filtering, and system webhooks.
-
RCS: RCS Click (
rcsClick) -
SMS: SMS Click (
smsClick) -
WhatsApp: WhatsApp Click (
whatsAppClick)
For click rates and bot-filtered metrics, see SMS Campaign Metrics and Metrics Definitions.
# Want to learn more?
For more information about some of the topics in this article, check out these resources. Iterable Academy is open to everyone — you don't need to be an Iterable customer!
Iterable Academy
Support docs