Utilizing SMS Keywords in Salesforce Marketing Cloud for Enhanced Mobile Marketing

Utilizing SMS Keywords in Salesforce Marketing Cloud for Enhanced Mobile Marketing
Home Page

Utilizing SMS Keywords in Salesforce Marketing Cloud for Enhanced Mobile Marketing

The world of marketing is continually evolving, and the use of SMS (Short Message Service) as a communication channel has become an integral part of many marketing strategies. Salesforce Marketing Cloud (SFMC) is a powerful tool for orchestrating and managing marketing campaigns, including SMS marketing. One effective tactic within SMS marketing is the use of SMS keywords. In this blog, we'll delve into the technical aspects of SMS keywords and how they can be leveraged in Salesforce Marketing Cloud to enhance your mobile marketing efforts.

If you're new to Mobile Connect and want to get started, we recommend reading the Salesforce article first. You can find it at the following link Salesforce Mobile Connect.

Understanding SMS Keywords

Utilize a designated keyword to facilitate SMS and MMS message interactions between your account and mobile devices. In MobileConnect, the system identifies the content preceding the first space in inbound SMS or MMS messages as the keyword. For instance, if an incoming SMS message reads 'Add me to the list,' MobileConnect identifies 'ADD' as the keyword.

Components of SMS Keyword-Based Campaigns

To effectively implement SMS keywords in Salesforce Marketing Cloud, you need to understand and configure several components:

  1. Keywords: Choose the keywords you want subscribers to use in their text messages. These should be concise, relevant to your campaign, and easy to remember. For instance, a retail store might use keywords like "SALE," "DISCOUNT," or "VIP" for different promotions.
  2. Short Codes and Long Codes:
    • Short Codes: These are typically 5- or 6-digit phone numbers used for high-throughput, high-volume messaging. Short codes are excellent for large-scale campaigns where you expect many interactions.
    • Long Codes: Long codes are standard, full-length phone numbers. They are more suitable for one-to-one or low-volume messaging and may be preferred for personalized campaigns.
  3. Triggered Actions: Define the actions that should be triggered when subscribers use specific keywords. Common actions include subscribing to a list, receiving automated responses, or updating subscriber profiles. The possibilities are vast and can be tailored to your campaign's objectives.
  4. Opt-In and Opt-Out: SMS keywords are frequently used to allow subscribers to opt in or opt out of SMS communication. For example, using the keyword "STOP" can opt a subscriber out of future messages, ensuring compliance with regulatory requirements.
  5. Automation: SFMC provides tools like Automation Studio and Journey Builder to automate responses and actions when specific keywords are received. You can create intricate automation rules to deliver timely and personalized interactions with your subscribers.

Implementation in Salesforce Marketing Cloud

Here's a simplified example of how to set up SMS keywords in Salesforce Marketing Cloud:

  1. Keyword-Short Code Association: Associate your chosen keywords with a short code or long code within SFMC.
  2. Automation Rules: Create automation rules using Automation Studio or Journey Builder to define what should happen when a specific keyword is received. For instance, if a subscriber texts "MENU" to your designated short code, you can set up an automation to send them a link to your restaurant's menu.
  3. Opt-In and Opt-Out Management: Implement keywords for opt-in and opt-out functionality. Ensure that your system processes opt-out requests efficiently to comply with regulations.
  4. Personalized Campaigns: Leverage automation to provide personalized responses and offers when subscribers use specific keywords. For instance, if a subscriber texts "SALE," you can automate the delivery of information about ongoing sales and promotions.

Explanation of HELP and STOP Keywords in SMS Marketing

HELP Keyword

Purpose: The "HELP" keyword is used in SMS marketing campaigns to offer assistance and provide information to subscribers. When a subscriber sends "HELP" as a text message to the designated short code or long code, they typically receive an automated response that contains helpful information, such as instructions on how to interact with the SMS campaign, contact details for customer support, or frequently asked questions (FAQs).

Functionality: "HELP" serves as a user-initiated request for guidance. It allows subscribers to access essential information or support without having to contact customer service directly. This keyword helps create a positive subscriber experience, as it demonstrates that the sender cares about providing assistance and clear communication.

Compliance: Including "HELP" in your SMS campaign is not only beneficial for subscribers but also essential for regulatory compliance. It ensures that subscribers are informed about how to seek assistance or opt out of messages, which is a legal requirement in many regions.

STOP Keyword

Purpose: The "STOP" keyword is a critical component of SMS marketing campaigns, particularly for managing opt-outs and complying with regulations. When a subscriber texts "STOP" to the designated short code or long code, they are explicitly requesting to unsubscribe from further SMS communication from the sender.

Functionality: "STOP" serves as an opt-out mechanism that gives subscribers control over their messaging preferences. When a subscriber uses this keyword, the sender's system should immediately cease sending them any SMS messages. This action ensures that the sender complies with legal requirements and respects the subscriber's choice to discontinue receiving messages.

Compliance: The "STOP" keyword is a vital element for regulatory compliance, as many countries and regions require that subscribers have a straightforward method to opt out of SMS marketing. Failing to honor "STOP" requests can result in legal consequences and harm the sender's reputation.

Next Keyword

Purpose:

The "Next" keyword in Salesforce Marketing Cloud (SFMC) serves several crucial purposes in SMS messaging campaigns:

  • Message Sequencing: It enables marketers to control the order in which SMS messages are delivered, allowing for the creation of messaging flows and drip campaigns.
  • Timed Delivery: Marketers can schedule messages at specific intervals, optimizing engagement and response rates.
  • Personalization: The keyword empowers personalized SMS campaigns by referencing subscriber interactions and preferences.

Functionality:

The "Next" keyword provides the following key functionalities:

  • Sequencing Control: Marketers can specify which message follows the current one in a campaign.
  • Timed Delays: It allows for scheduling delays between messages.
  • Decision Points: Decision points can be introduced based on subscriber responses.
  • Dynamic Content: The keyword facilitates dynamic content delivery based on actions or preferences.

Compliance:

The "Next" keyword ensures compliance with SMS marketing regulations:

  • Opt-In and Consent: Messages are sent only to subscribers who have provided explicit consent or opted in to receive SMS communications.
  • Unsubscribe Management: SFMC includes unsubscribe options, respecting subscriber preferences.
  • Frequency Control: Marketers can control message frequency to adhere to regulations and prevent subscriber overload.
  • Data Privacy: "Next" can be used to respect data privacy and offer choices based on subscriber interactions.

Understanding Global STOP Keywords in MobileConnect

In MobileConnect, specific keywords are automatically recognized as STOP keywords. These keywords include STOP, QUIT, CANCEL, END, and UNSUBSCRIBE. If any of these words appear before the first space in a text message, the user is instantly unsubscribed from all keywords associated with the corresponding short or long code.

These STOP keywords serve as immediate requests for global unsubscription. When users send one of these keywords to a designated short or long code, they are promptly unsubscribed from all keywords linked to that particular code. While you have the option to use a default or custom response for these requests, it's important to note that the unsubscription process occurs automatically without any additional steps. This ensures a streamlined and compliant approach to managing opt-out requests within your MobileConnect campaigns.

For more details, you can refer to the Salesforce Help article.

Round Table Conference with Questions and Answers

The Gathering

Our round table conference was a delightful blend of friendship and professional collaboration. Friends from diverse backgrounds, all sharing a passion for marketing, came together with SFMC experts eager to share their knowledge and experiences. The result? A dynamic exchange of information that left everyone inspired and informed.

Sharing Insights

The SFMC geeks at our gathering were a treasure trove of knowledge. They provided answers to pressing questions, sharing insights into utilizing the potent tools within Salesforce Marketing Cloud. From journey automation and personalization to SMS and email marketing best practices, there was something for everyone. It was evident that SFMC was more than a platform; it was a gateway to unlock innovative marketing strategies.

Questions and Answers

Here are some of the questions and insights shared:

Questions Answers
How is the functionality of SFMC's global STOP keywords designed to work? There are primarily two categories of STOP keywords: Global and custom. Both Global and custom STOP keywords initiate an immediate unsubscribe action from all keywords associated with the specific code. It's worth noting that Global STOP keywords may not function as expected in cases where your long or short code is shared. Additionally, generic keywords such as HELP, STOP, JOIN, and ENTER are typically unavailable for shared codes.
What role do keywords serve when sending SMS messages? Keywords play a crucial role in associating the messages sent to subscribers, akin to a sender profile in email marketing. They establish a link between a subscriber's subscription and the various SMS communications you intend to send. When used effectively, they can function much like a publication list does in email communications.
Is it advisable to depend solely on the global STOP keyword as a best practice? Relying on the global STOP keyword alone is not recommended as it can create confusion for subscribers. When subscribers use this keyword, it initiates an opt-out from all keywords associated with a specific long or short code, which can lead to a response stating that it's not recognized. Furthermore, when you have multiple keywords configured for SMS under a single code, the STOP keywords function as a master unsubscribe. However, in many cases, businesses may require more granular control over unsubscribes based on specific consents, rather than a broad, master-level unsubscribe.
How can we link a STOP keyword to a Subscription Keyword for effective management? Regrettably, associating a STOP keyword with a MobileConnect subscription is not a straightforward process, but there are alternative methods available. When dealing with unsubscriptions, it's important not to confuse them with demographic statuses in MobileConnect. Instead, focus on the MobileConnect subscription and look for attributes such as OptInStatusID and OptOutStatusID. For detailed guidance, please refer to the Salesforce support article linked below. In addition to the support article, you have other options at your disposal.Salesforce Help article

For more details, you can refer to Matesuz's Blog.

Codification - Mobile Connect


Mobile Connect Subscription

Generate a data extension for Mobile Connect subscriptions


var deObj = {
        "CustomerKey" : "MobileSubscription",
        "Name" : "MobileSubscription",
        "CategoryID":[CategoryID],
        "Fields" : [
          { "Name" : "SubscriptionDefinitionID", "FieldType" : "Text","MaxLength" : 50, "IsPrimaryKey" : true, "IsRequired" : true },
          { "Name" : "MobileNumber", "FieldType" : "Text", "MaxLength" : 50,"IsRequired" : true },
          { "Name" : "OptOutStatusID", "FieldType" : "Text", "MaxLength" : 50},
          { "Name" : "OptOutMethodID", "FieldType" : "Text", "MaxLength" : 50},
          { "Name" : "OptOutDate", "FieldType" : "Date"},
          { "Name" : "OptInStatusID", "FieldType" : "Text", "MaxLength" : 50},
          { "Name" : "OptInMethodID", "FieldType" : "Text", "MaxLength" : 50},
          { "Name" : "OptInDate", "FieldType" : "Date"},
          { "Name" : "Source", "FieldType" : "Text"},
          { "Name" : "CreatedDate", "FieldType" : "Date","IsRequired" : true},
          { "Name" : "CreatedBy", "FieldType" : "Text"},
          { "Name" : "ModifiedDate", "FieldType" : "Date","IsRequired" : true},
          { "Name" : "ModifiedBy", "FieldType" : "Text"}
        ]
    };

var myDE = DataExtension.Add(deObj);
            

For more details, you can refer to SSJS Data Views.

Mobile Connect Demographic

Compose SQL to retrieve Mobile Connect demographic data.


SELECT _CarrierID AS CarrierID,
_Channel AS Channel,
_City AS City,
_ContactID AS ContactID,
_CountryCode AS CountryCode,
_CreatedBy AS CreatedBy,
_CreatedDate AS CreatedDate,
_FirstName AS FirstName,
_IsHonorDST AS IsHonorDST,
_LastName AS LastName,
_MobileNumber AS MobileNumber,
_ModifiedBy AS ModifiedBy,
_ModifiedDate AS ModifiedDate,
_Priority AS Priority,
_Source AS Source,
_SourceObjectID AS SourceObjectID,
_State AS State,
_Status AS Status,
_UTCOffset AS UTCOffset,
_ZipCode AS ZipCode
FROM _MobileAddress          
        

Mobile Connect Subscription

Compose SQL to retrieve Mobile Connect subscription data.


SELECT 
_CreatedBy AS CreatedBy,
_OptOutMethodID AS OptOutMethodID,
_MobileNumber AS MobileNumber,
_OptInDate AS OptInDate,
_Source AS Source,
_OptOutStatusID AS OptOutStatusID,
_OptOutDate AS OptOutDate,
_ModifiedBy AS ModifiedBy,
_SourceObjectId AS SourceObjectId,
_SubscriptionDefinitionID AS SubscriptionDefinitionID,
_CreatedDate AS CreatedDate,
_OptInStatusID AS OptInStatusID,
_OptInMethodID AS OptInMethodID,
_ModifiedDate AS ModifiedDate
FROM _MobileSubscription
        

Unsubscribe from a keyword subscription

Compose SSJS code snippet to Opt-Out a phone number from a keyword



        

Resubscribe from a keyword subscription

Compose SSJS code snippet to Opt-In a phone number from a keyword


<script runat="server">    
  Platform.Load("core", "1.1");
  // Resubscription of Mobile Subscription
  try {
    var payload = [
        {
            "_OptOutStatusID": 0,
            "_OptInStatusID": 2,
            "_OptInMethodID": "2"
        },
        ["_MobileNumber", "_SubscriptionDefinitionID"],
        [44xxxxxxxxx0, "45xxxxx1-xxxx-xxxx-xxxx-xxxxxxxxxFE"]
    ]
     /* Subscription change returns 2 for change, 1 for no change, 0 for no object to update */
     var mobileSubscriptionDataView = DataExtension.Init("_MobileSubscription");
     response = mobileSubscriptionDataView.Rows.Update(payload[0], payload[1], payload[2]);
     Write(response);
  }
  catch(e){
    Write(e.message);
  }
</script>
        

Mobile Connect SMSMessageTracking

Compose SQL to retrieve SMSMessageTracking data.


 SELECT
      smsTracking.MobileMessageTrackingID
    , smsTracking.EID
    , smsTracking.MID
    , smsTracking.Mobile
    , smsTracking.MessageID
    , smsTracking.KeywordID
    , smsTracking.CodeID
    , smsTracking.ConversationID
    , smsTracking.CampaignID
    , smsTracking.Sent
    , smsTracking.Delivered
    , smsTracking.Undelivered
    , smsTracking.Unsub
    , smsTracking.OptIn
    , smsTracking.OptOut
    , smsTracking.Outbound
    , smsTracking.Inbound
    , smsTracking.CreateDateTime
    , smsTracking.ModifiedDateTime
    , smsTracking.ActionDateTime
    , smsTracking.MessageText
    , smsTracking.IsTest
    , smsTracking.MobileMessageRecurrenceID
    , smsTracking.ResponseToMobileMessageTrackingID
    , smsTracking.IsValid
    , smsTracking.InvalidationCode
    , smsTracking.SMSJobID
    , smsTracking.SMSBatchID
    , smsTracking.SendID
    , smsTracking.SendSplitID
    , smsTracking.SendSegmentID
    , smsTracking.SendJobID
    , smsTracking.SendGroupID
    , smsTracking.SendPersonID
    , smsTracking.SubscriberID
    , smsTracking.SubscriberKey
    , smsTracking.SMSStandardStatusCodeId
    , smsTracking.Description
    , smsTracking.Name
    , smsTracking.ShortCode
    , smsTracking.SharedKeyword
    , smsTracking.Ordinal
    , smsTracking.FromName
    , smsTracking.JBDefinitionID
    , smsTracking.JBActivityID
FROM _SMSMessageTracking AS smsTracking           
        

Mobile Connect Data via API

Compose REST API to update mobile connect data via Contact Update


Host: https://YOUR_SUBDOMAIN.rest.marketingcloudapis.com
PATCH /contacts/v1/contacts
Content-Type: application/json
Authorization: Bearer YOUR_ACCESS_TOKEN

{
    "contactKey": "contactKey",
    "contactId": 12345678,
    "attributeSets": [
    {
        "name": "MobileConnect Demographics",
            "items": [{
                "values": [{
                        "name": "Mobile Number",
                        "value": "555-555-5555"
                }]
            }]
    },
    {
        "name": "MobileConnect Subscriptions",
        "items": [{
            "values": [{
                "name": "Mobile Number",
                "value": "555-555-5555"
            },
            {
                "name": "Keyword",
                "value": "xxxx-xxxx-xxxxxxxxxxx-xxxx"
            },
            {
                "name": "Opt In Status",
                "value": 1
            },
            {
                "name": "Opt Out Status",
                "value": 0
            },
            {
                "name": "Opt In Method",
                "value": 0
            }]
        }]
    }]
}           
        

For more details, you can refer to Greg's Blog.

Text Response

Utilize the Text Response template within Marketing Cloud MobileConnect to automatically reply to incoming SMS messages containing a designated keyword.Also, Refactor the SSJS code for managing SMS keyword subscriptions by incorporating the Text Response with opt-out/opt-in functionality.

The Future of Marketing

As the Mobile Connect guide book has been concluded, we couldn't help but ponder the future of marketing and how SFMC would continue to evolve. The consensus was clear: it's an exciting journey. With data-driven insights, AI and automation, and ever-advancing technologies, the horizon is bright for marketers willing to embrace change.

A Shared Vision

Our Mobile Connect round table conference was not just about learning but also about building a community of like-minded individuals. We shared a vision of using SFMC to drive innovation and deliver exceptional customer experiences. We left the conference room inspired and ready to implement new strategies in our marketing campaigns.

In the world of marketing, change is constant. Our round table conference reminded us that by staying connected, sharing knowledge, and embracing the power of SFMC, we can navigate this ever-changing landscape and create marketing success stories together.

As I bid adieu to our guide book, we look forward to the next gathering, knowing that it will bring even more exciting discussions, insights, and opportunities for growth. Until then, let's continue our journey to shape the future of marketing with SFMC at our side.

If you had a good read, am attaching a video tutorial form Youtube which is highly underrated but highly productive. Watch it!

Known Issues:

For SMS/Mobile known issues, you can refer to Adam's Blog.

For IdeaXchange, you can refer to IdeaXchange



Comments


Knowledge Article

Most Viewed

CLOUD PAGE ENABLEMENT - PART 1

EMAIL NOT SENT IN JOURNEY BUILDER

CONSIDERATIONS FOR JOURNEY BUILDER

Journey Builder REST API Documentation

Preference Center Demystified

Popular Posts

CLOUD PAGE ENABLEMENT - PART 1

EMAIL NOT SENT IN JOURNEY BUILDER

CONSIDERATIONS FOR JOURNEY BUILDER

Journey Builder REST API Documentation

Preference Center Demystified

SEND LOG EANBLEMENT

Share with Friends

Disclaimer:

The information provided on this technical blog is for general informational purposes only. As a SFMC (Salesforce Marketing Cloud) Technical Architect, I strive to offer accurate and up-to-date content related to SFMC and its associated technologies. However, please note that technology is constantly evolving, and the information provided may become outdated or inaccurate over time.

The content published on this blog represents my personal views and experiences as a SFMC Technical Architect and does not necessarily reflect the official views or opinions of any organization or employer I may be affiliated with.

While I make every effort to ensure the accuracy and reliability of the information presented, I cannot guarantee its completeness, suitability, or applicability to your specific circumstances. Therefore, it is essential to verify any information provided and make your own independent assessments or seek professional advice if needed.

Furthermore, any actions taken based on the information provided on this blog are at your own risk. I shall not be held liable for any damages, losses, or inconveniences arising from the use of the information presented here.

Please keep in mind that SFMC and its associated technologies are complex and require technical expertise for proper implementation and management. It is recommended to consult with qualified professionals or official SFMC documentation for comprehensive guidance.

Finally, please note that any product or company names mentioned on this blog are trademarks or registered trademarks of their respective owners. The mention of these trademarks or registered trademarks does not imply any endorsement or affiliation with the blog.

By accessing and using this blog, you agree to the terms of this disclaimer. If you do not agree with any part of this disclaimer, please refrain from using this blog.