Hyperlinks are often used in marketing campaigns to drive traffic to landing pages from different channels. However, the number of characters in an SMS/MMS is limited and if you want to send personalized links, you will find out that these are too long and not very appealing in SMS/MMS messages. Link shortener automatically replaces all hyperlinks in the text of the campaign with its shortened version. Every click on the shortened link is automatically tracked as `
campaign` event with `
Campaign shortener is a paid feature with a flat fee pricing that needs to be enabled by your CSM. Contact your CSM for more information.
## How to use campaign link shortener
### Project settings
Once the module is enabled a new section in project settings appears. It can be found under Campaigns->General->General campaign settings. Here it is possible to select what channels will use an automatic link shortener (SMS, MMS) and select the domain that will be used for the shortener. Only one domain can be selected at one time for a specific project and all channels use the same domain. [More about domains](🔗).
Once you turn on the campaign link shortening in Project Settings, it will be turned on by default for every campaign. If you want to manage the shortener in a specific campaign, you can do this in the SMS/MMS action node in the given campaign Scenario. Click on the Settings tab, where you can turn on/off the link shortening. This will affect all links in that specific campaign only.
The preview in the scenario node highlights all parsed links (in green color). The final message with dummy shortened links is displayed on the right side. The character counter displays the real amount of characters used in the message including shortened links. Not all links can be identified during the preview phase (e.g. links that are stored in customer properties or are the result of Jinja rendering) and therefore will not be highlighted and counted into the final character counter. All special Jinja links that can be resolved (e.g. consent/unsubscribe page) are highlighted and counted properly.
**Link identification** - links should always contain protocol (http\:// or https\:// only). Otherwise, the links will not be recognized by the link shortener, and therefore will not be shortened (the preview will not work as well). If there is a specific link in your SMS/MMS text that you do not want to shorten, omit the protocol (http\:// or https\://).
Unmatched symbols in the URLs
Some links with special symbols might not be matched fully by the link shortener. In such case, we recommend URL to be encoding such symbols (e.g. by <https://toolbox.googleapps.com/apps/encode_decode/>). See the example picture below, where the semicolon symbol (;) is matched only once after it is escaped as %3B. In other words, first line in the picture shows an unmatched symbol in the URL and the second one shows the fixed link).
Expiration defaults to 3 months and can be configurable per instance. After this period the link will be deleted. Any user who will visit an expired (or non-existent) link will see a 404 not found page (see the preview below).
There are 2 types of domains you can use for the link shortener:
Shared Bloomreach Engagement domains
### Shared Bloomreach Engagement domains
Every multi tenant instance provides one default shortener domain that can be used for your campaigns right away e.g exp.cx.
We do not provide shared domains for single tenant instances, therefore, all single tenant instances need to use a custom domain.
### Custom domains
You can use your own domain for the link shortener. Custom domains can be used either on single or multi tenant instances. There are no requirements on the form of the domain but make sure that it is a dedicated domain for this purpose, its name is as short as possible and is matching your brand. One custom domain can be used by multiple accounts but they have to be on the same instance.
### Setting up the custom link shortener domain
To use a custom domain, you have to set it up in the account settings:
**1. Prepare your subdomain for the link shortener.**
a. Make sure that this is a dedicated domain used solely for those purposes.
**2. Add your domain to Account settings.**
a. Go to `
Account Settings` -> `
General` -> `
General account settings`.
b. Click on the `
Add link shortener domain` and save it. After that, we will generate the NS DNS records to be set for your domain.
**3. Set the DNS records as instructed in Account settings.** a. The NS DNS records might differ for every entered domain, so make sure to set it correctly. There are usually 4 records to be set. b. NS Example:
|Your Subdomain||Record Type||Destination Domain||TTL|
**4. Review DNS if they were created correctly.**
a. After setting up your DNS records, come back to the `
Project Settings` -> `
Account` -> `
General`. Here, if you see a confirmation message, everything was set up correctly. Please note that it might take a while till the DNS records are propagated and available for validation. It might take up to a few hours to see the confirmation.
b. After that, we will issue an SSL certificate for your domain which might take some time as well. When it is issued, the warning message should disappear as shown in the picture below. If the SSL certificate is not issued after one day, please contact our Support team.
**5. Configure your custom domain in Project Settings.** a. Once you set up your DNS records correctly and they are valid, you can select your domain for configuration in the Project Setting as mentioned in the Project Settings part of this article.
Manually added domains
Please note that if your domains were added by our IT team, prior to this setting being available, you will see the below information message. Such domains cannot be managed from the settings and any changes must be done by our IT team.
## Advanced configuration
There are 2 advanced configurations that can be changed on the instance level - entropy and link expiration.
**Entropy** By entropy, we mean the randomness of links our shortener is generating. It is very important that the strings are not sequenced (e.g. aaaaa00001, aaaaa00002, etc.) because of possible abuse of the links. This is especially important when generating unsubscribe or consent page links. Entropy is defined by the length of the string and can be configured on the instance level. Its default value is 10, meaning there are 10 random characters in each link (e.g. <https://exp.cx/pskE82In5h>). This means we can generate 64^10 different strings (allowed character set is: a-z, A-Z, 0-9, - and \_) = 2^60. If we plan to send and store 1B (roughly 2^30) links in SMS/MMS messages for 3 months (currently we send ca 2M SMS messages per month) we will still have 1B unused strings for every used string. This will be hard to crack for any possible abuser.