Whether you've just started building an SMS audience or you're looking for an easier way to manage new opt-ins, Iterable's SMS Smart Opt-In feature can automate the sign-up process and gather proof of compliance. With SMS Smart Opt-In, you can:
- Spend less effort obtaining phone numbers and proof of opt-in compliance.
- Gather quality data with accurate phone numbers.
- De-anonymize your app users once they provide their phone number.
- Provide an intuitive opt-in flow so your users can start receiving SMS campaigns in just two clicks!
To use SMS Smart Opt-In, first go to Iterable's template builder and create a Smart Opt-In link. Next, add this link to a template and send it with a campaign. When your users click on the link from their smartphone, they're redirected to their default messaging app with a prefilled message:
Once they click Send, Iterable takes care of the rest!
NOTES
- Only existing users in Iterable can subscribe to your SMS channel using SMS Smart Opt-In. This feature isn't intended for text-to-join use cases that sign up new users.
- SMS Smart Opt-In is available for email and in-app templates.
In this article
How it works
SMS Smart Opt-In begins with a link. You can create any number of links, and use them to track subscriptions by message type.
- Each link connects to an SMS message type that has an opt-in subscription policy. Links can use the same message type, or they can be different.
- In campaigns, the links are dynamic and personalized to associate existing users (anonymous or not) with their actions.
- User identifiers (
userId
,email
) are anonymized, so the link doesn't contain sensitive information.
When your user clicks on this link from a mobile device, they're taken to their text message app with a pre-filled message.
Once the user pushes the send button, the pre-filled message is sent to your SMS sender, which is tracked on your Iterable account as a SMS reply event.
When Iterable receives this message:
- A subscribe event is recorded in the user's history.
- The
phoneNumber
field is updated in the user's profile. - The user is opted in to the SMS message type associated with the link.
Next, you can start using your SMS channel to communicate with your users. You might want to create a list of your SMS subscribers and send them a confirmation message.
TIP
SMS Smart Opt-In is intended for mobile phone users.
If a user isn't on a supported device, you can redirect them to a landing page that accepts SMS opt-in requests with a web form. First, create a web form on your company's website that gathers phone numbers and consent. Then, you can use that page URL as the redirect link when you create the SMS Smart Opt-In link.
For more information about setting up a custom preference center, read Creating a Subscription Preference Center.
Staying compliant with SMS opt-in practices
There are several compliance requirements and best practices that you should follow for your opt-in process, including:
- Including specific legal disclaimers related to your SMS communication practices.
- Gaining and retaining proof of consent to receive SMS communication.
Legal disclaimers
Alongside each opt-in link, you should provide a legal disclaimer with required information about your SMS campaigns. This includes:
- The frequency a user can expect to receive messages. For example, "3 messages per week".
- A statement that messaging rates may apply.
- A link to your privacy policy and/or terms of service.
- Opt-out instructions (such as texting the keyword "STOP").
- A help keyword (usually "HELP"), a number to text, a toll-free number, or an email address that the user can contact when they need help.
Iterable provides a recommended legal disclaimer that's customized based on your inputs. You can use this disclaimer as provided, modify it, or replace it with your company's own language.
Proof of consent
Getting permission from your users to send SMS is required for a compliant SMS strategy. As an SMS marketer, it's your responsibility to gain explicit consent before sending SMS and MMS messages.
Iterable's SMS Smart Opt-In provides a workflow that obtains express written consent directly from the user.
When you use SMS Smart Opt-In, your users send a pre-written text message that serves as express written consent to receive SMS communications from your organization.
Setting up your project for SMS Smart Opt-In
To get started, you need:
- An SMS channel with at least one message type that has an opt-in or double opt-in subscription policy. To learn more about message channels and their subscription policies, read Message Channels and Message Types Overview
- An email or in-app channel with at least one message type set up in the project.
- A redirect link for users who are not on their phone (for example, to a web form that accepts SMS opt-ins).
Creating and using SMS Smart Opt-In links
NOTE
To view, create, and edit SMS Smart Opt-In links, use Iterable's template builder. This feature isn't available in the campaign builder.
Step 1: Create a link
Go to Content > Templates and either create a new email or in-app template or edit an existing one.
When the template is open, click Edit Design.
Next, click SMS Opt-In in the bottom menu (available in any design mode).
Click Add SMS Opt-In Link.
-
Add the following link details:
- Name - A name for this link. For display in Iterable.
- Description (optional) - A description for this link. For display in Iterable.
- Brand Name - Name of the company the user is subscribing to. Iterable includes this name in the pre-filled opt-in text message and recommended legal disclaimer.
- SMS Message Type - The opt-in or double opt-in message type that this link subscribes users to. (If this drop-down is empty, make sure you have an SMS message type with an opt-in or double opt-in subscription policy.)
- Send Reply To - The SMS sender that the user's SMS message gets sent to.
- SMS Disclaimer Terms of Service Link (optional) - An HTTPS link that directs to your SMS Terms of Service. Iterable uses this in the recommended legal disclaimer.
- SMS Disclaimer Privacy Policy Link (optional) - An HTTPS link that directs to your SMS Privacy Policy. Iterable uses this in the recommended legal disclaimer.
- Redirect Link - A link that users are redirected to when they click on the link from a device that isn't a mobile phone (such as a laptop). A web form that accepts SMS opt-ins is a sensible use case for this link. To learn more about setting up a custom preference center, read Creating a Subscription Preference Center.
You can see a preview of the prefilled text and the response your user receives at the bottom of this screen.
Click Create Link to finish. Don't worry, you can always come back and edit the link later!
Step 2: Add the link to your template
Starting from the template you're working on, click SMS Opt-In in the bottom menu. (Note: This option isn't available from the campaign builder.)
Find the link you want to use and click on its name to view details.
-
Click Copy for the Handlebars expression, then close the opt-in link menu.
-
Add the Smart Opt-In Handlebars expression to a button or link in your design.
If you're using the Drag and Drop editor:
- To add a Button, select Open web page for the link type and paste the link's Handlebars expression into the URL field.
- To use the Insert Link tool, select the URL link type and paste the link's Handlebars expression into the URL field.
Step 3: Add a disclaimer
You can use Iterable's recommended SMS disclaimer, or you can add your own company's language.
To use Iterable's recommended SMS disclaimer:
- Starting from the template you're working on, click SMS Opt-In in the bottom menu.
- Find the link you just used, then find the disclaimer below it. Click Copy.
- Close the opt-in link menu and add the disclaimer text to your template design.
- Click Save Design.
Next steps
Now that you've prepared your template to gather SMS subscribers using the SMS Smart Opt-In link, here are some additional things you can do to enhance your SMS marketing program.
Find your SMS audience
To make a list of all users who have signed up using your SMS Smart Opt-In link, use segmentation to create a dynamic list of users who have the contact property Is Eligible to Receive Message Types equal to the message type associated with the SMS Smart Opt-In link.
Confirm new SMS subscriptions
To let your users know when they've subscribed successfully, create a journey for new subscribers that sends them an SMS campaign with a confirmation message.
Appendix: SMS Smart Opt-In reference
Handlebars expression
Each link that you create has a unique Handlebars expression that creates a dynamic link for each user.
Here's an example of Iterable's SMS Smart Opt-In link as a Handlebars
expression: {{smartOptInUrl 4}}
NOTES
You don't need to use the
{{#urlEncode}}
Handlebars helperwhen you use the Handlebars expression for the SMS Smart Opt-In link. -
Iterable previously provided a version of this URL that was much longer. You can continue using this version of the URL, or you can update your templates to use the newer, simplified version.
Previous version:
https://links.iterable.com/smartOptIn/click?_p=some-string&_i=00&_r={{#urlEncode}}{{#base64}}{{itblUserId}}{{/base64}}{{/urlEncode}}&_t={{templateId}}
Dynamic link format
When you send a campaign that includes the SMS Opt-In Handlebars expression, Iterable dynamically creates a personalized link for each user.
Typically, a user doesn't see this URL because they're redirected to their messaging app (if they're on a smartphone) or to the redirect URL you provided.
Here is an example of what that link looks like when it is personalized for a
user:
https://links.iterable.com/soi/ec/1ae5c581be8e433b85be321a00000vv/4/ 7HuLXzjm1zS000EJ8Bp9umWqSh2FxEK5UnM7k_Fy_10YNBOjx5gYObYcrQtc0oSShec5Htkh7i75ndu2 eqQJ8Xsl3lwutm8pyjM00000TdNLi3uNdAjPHMeiyuP12IZpKVB0YJBMylECLcUhTWvnHw==
You won't be able to see the link rendered in Preview mode, but you can see the full link when you send a proof.
Pre-filled opt-in text
When the SMS Smart Opt-In link redirects a user to their messaging app, the app opens a new message. The message includes the phone number for your SMS sender, and a pre-filled, personalized opt-in message body.
Here is the pre-generated text for an example brand, Fake Flights:
Send in this text to opt in to receiving recurring automated personalized marketing alerts from Fake Flights (itbl: gY3-4)"
This text includes a dynamic code (itbl: gY3-4
) that identifies the existing
user in Iterable and the SMS message type that they're subscribing to.
To customize this text, enter your brand name in the SMS Smart Opt-In link details. Only the brand name is adjustable — the rest of the message can't be changed.
Recommended disclaimer text
Here is an example of the pre-generated SMS disclaimer for Fake Flights:
By signing up via text, you agree to receive recurring automated promotional and personalized marketing text messages (e.g. Marketing message) from Fake Flights at the phone number used when signing up. Consent is not a condition of any purchase. Reply HELP for help and STOP to cancel. Msg frequency varies. Msg and data rates may apply. View Terms of Service or Privacy Policy.
The recommended disclaimer is provided in rich text. "Terms of Service" and "Privacy Policy" are links to URLs you provide when creating the opt-in link.
Iterable recommends including this disclaimer, or similar text, to make sure your opt-in process meets any legal requirements your organization may have to follow.
Tracked events
When you use SMS Smart Opt-In, Iterable tracks the following system events in each user's history:
- Send
- Open
- SMS received
- Subscribe
Note: Iterable doesn't track click events for the SMS Smart Opt-In link.
Continue reading this section for details and example JSON fields for each event.
Email send or in-app send
When you send a campaign to users with the SMS Smart Opt-In link and call-to-action to subscribe to SMS, Iterable tracks a send event.
Example email send event on the user profile:
{ "campaign": { "campaignAlertsEnabled": false, "campaignState": "Running", "createdAt": 1698365588959, "createdByUserId": "iterable-user@example.com", "dataScienceOptimizations": [], "id": 9999999, "ignoreFrequencyCap": false, "isArchived": false, "isDryRun": false, "labelIds": [], "messageMedium": "Email", "mobileAppIds": [], "name": "Email campaign with SMS Smart Opt-In Email link", "projectId": 99999, "teamId": 99999, "templateId": 99999999, "updatedAt": 1698768747195, "updatedByUserId": "iterable-user@example.com", "useCustomRateLimit": false, "wasEverRecurring": false }, "campaignId": 9999999, "catalogCollectionCount": 0, "catalogLookupCount": 0, "channelId": 99999, "contentId": 99999999, "createdAt": "2023-11-16T17:36:26.000Z", "email": "user@example.org", "esDocumentId": "6a60e7effe2000008f2edb7d5857aa5b", "espName": "SES", "eventType": "emailSend", "itblInternal": { "documentCreatedAt": "2023-11-16 17:36:26 +00:00", "documentUpdatedAt": "2023-11-16 17:36:26 +00:00" }, "itblUserId": "e54ac628-29d4-0000-877a-57d795e2h28de", "messageBusId": "0100018bd9349dae-0c73ebb8-0000-4a66-0000-ecc265622414-000000", "messageId": "6a60e7effe2e00000f2edb7d5875bb3a", "messageTypeId": 999999, "productRecommendationCount": 0, "templateId": 99999999, "transactionalData": "{}" }
Email open or in-app open
When a user opens the campaign message, Iterable tracks an open event.
(Note: Iterable doesn't track a click event for clicks made on the SMS Smart Opt-In link.)
Example email open event on the user profile:
{ "campaign": { "campaignAlertsEnabled": false, "campaignState": "Running", "createdAt": 1698365588959, "createdByUserId": "iterable-user@example.com", "dataScienceOptimizations": [], "id": 9999999, "ignoreFrequencyCap": false, "isArchived": false, "isDryRun": false, "labelIds": [], "messageMedium": "Email", "mobileAppIds": [], "name": "Email campaign with SMS Smart Opt-In Email link", "projectId": 99999, "teamId": 99999, "templateId": 99999999, "updatedAt": 1698768747195, "updatedByUserId": "iterable-user@example.com", "useCustomRateLimit": false, "wasEverRecurring": false }, "campaignId": 999999, "contentId": 99999999, "createdAt": "2023-11-16T17:40:33.000Z", "email": "", "eventType": "emailOpen", "ip": "198.51.100.11", "itblInternal": { "documentCreatedAt": "2023-11-16 17:40:33 +00:00", "documentUpdatedAt": "2023-11-16 17:40:33 +00:00" }, "itblUserId": "e54ac628-0000-4a2b-0000-57d795e1d16e", "messageId": "6a60e7effe2e00000f2edb7d5875bb3a", "proxySource": "Gmail", "templateId": 99999999, "userAgent": "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)", "userAgentDevice": "Gmail" }
SMS received
When the user sends the pre-filled SMS opt-in message to you, Iterable tracks a SMS received event.
Example SMS received event on the user profile:
{ "billingParty": "FirstParty", "createdAt": "2023-11-16T17:40:48.000Z", "email": "", "espName": "Telnyx", "eventType": "smsReceived", "fromPhoneNumber": "+14155550132", "itblInternal": { "documentCreatedAt": "2023-11-16 17:40:49 +00:00", "documentUpdatedAt": "2023-11-16 17:40:49 +00:00" }, "itblUserId": "e54ac628-0000-4a2b-0000-57d795e1d16e", "mmsReceiveCount": 0, "smsMessage": "send in this text to opt in to receiving recurring automated personalized marketing alerts from fake flights (itbl: gy3-4)", "smsReceiveCount": 1, "toPhoneNumber": "+14155550132" }
Subscribe
When Iterable receives an SMS that includes the pre-filled text and its unique code, Iterable automatically subscribes the user to the SMS message type associated with the SMS Smart Opt-In link.
SMS replies that don't include the unique code cannot be attributed to a user. If this happens, no subscribe event occurs.
Example subscribe event on the user profile:
{ "channelIds": [], "createdAt": "2023-11-16T17:40:48.000Z", "email": "", "eventType": "emailSubscribe", "itblInternal": { "documentCreatedAt": "2023-11-16 17:40:49 +00:00", "documentUpdatedAt": "2023-11-16 17:40:49 +00:00" }, "itblUserId": "e54ac628-0000-4a2b-0000-57d795e1d16e", "messageTypeIds": [ 999999 ], "profileUpdatedAt": "2023-11-16 17:40:48 +00:00", "signupSource": "Unknown", "templateId": 99999999, "userListIds": [] }
Notes on subscribe event fields:
-
eventType
is set toemailSubscribe
. Iterable uses this value for all subscribe events regardless of channel, not just for email. -
signupSource
is set toUnknown
. When on the user profile, this field indicates the original source when a brand new user subscribes. SMS Smart Opt-In only works for existing users in Iterable. Existing user profiles aren't updated to reflect this value.
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