WhatsApp Subscription Management

Learn to manage WhatsApp subscriptions effectively.

Overview

CleverTap, your partner in user engagement and marketing automation, offers a comprehensive solution for managing WhatsApp subscriptions for your business. With CleverTap, you can control who receives WhatsApp messages and effortlessly manage opt-ins and opt-outs. This is your guide to utilizing CleverTap to manage WhatsApp subscriptions effectively. It ensures that your communication on this influential platform is both compliant and engaging.

Advantages of WhatsApp Subscription Management

Managing user subscriptions actively for the WhatsApp Business API is crucial for several reasons:

  • Compliance with WhatsApp Policies: WhatsApp has strict policies and guidelines for businesses using their API. Managing subscriptions ensures that you comply with these policies, which can help you avoid potential penalties, account restrictions, or even suspension.
  • User Experience: Active subscription management allows you to respect users' preferences. By unsubscribing users who want to opt-out and resubscribing those who want to receive messages, you enhance the user experience and reduce the likelihood of annoying or spamming your audience.
  • Reduced Costs: Sending messages to users who have unsubscribed or are not interested can lead to unnecessary costs. By managing subscriptions, you can reduce messaging costs by targeting only engaged and interested users.
  • Relevance: Keeping your user base up-to-date ensures that your messages remain relevant. You can send timely information, promotions, and updates to users who have expressed interest, leading to higher conversion rates.
  • Legal Compliance: In many regions, there are laws and regulations governing electronic communications and user consent. Active subscription management helps you comply with these regulations and protects your business from legal issues.
  • Brand Reputation: Consistently respecting user preferences and managing subscriptions effectively contributes to a positive brand image. Users are more likely to trust and engage with businesses that respect their choices.
  • WhatsApp Number Quality: Customers can report a business number as spam and block the number. WhatsApp uses the count of spam reports and blocks to monitor the quality of messages sent. If the report/block rate goes beyond a certain threshold, then WhatsApp downgrades the quality rating of the Business’s WhatsApp, which results in downgrading messaging limits. If the business does not improve its engagements, this may lead to the business’s WhatsApp being blocked.

Best Practices for WhatsApp Subscription Management

Managing subscriptions for WhatsApp Business Messaging requires specific practices to ensure compliance and maintain a positive user experience. It plays a vital role in maintaining user trust, complying with regulations, and providing a positive messaging experience. It helps build a strong relationship with your audience using WhatsApp for Business communication.

Here are the best practices for managing WhatsApp Business Messaging subscriptions:

  • Obtain Clear and Explicit Consent: Before sending any messages via WhatsApp, ensure that users have given clear and explicit consent to receive messages from your business. Make the consent process transparent and easy to understand. You can ask for your user’s consent during important steps of their journey in your app.
    For example:
    • App’s Signup or sign-in flow.
    • Outflows in the app.
    • Any In-app engagement
  • Offer simple Opt-In and Opt-Out Mechanisms: Provide users with clear and simple opt-in and opt-out options. Users must know how to subscribe or unsubscribe from WhatsApp messages, and the process should be easy. CleverTap recommends using WhatsApp chats to allow users to opt in and out of WhatsApp communications.
  • Differentiate Message Types: Differentiate between utility and promotional messages. Utility messages are essential for user interactions (for example, order confirmations). However, the purpose of promotional messages is marketing and should only be sent to users who have explicitly opted in for such content.
  • Respect Opt-Out Requests: Honor opt-out requests immediately. Once a user unsubscribes from WhatsApp messages, stop sending them promotional content. However, transactional messages may still be sent for essential communication.
  • Update Subscription Preferences Regularly: Encourage users to update their subscription preferences anytime. This flexibility ensures that users receive the content they want.
  • Automate Subscription Management: Implement automation to manage user subscriptions. Automation ensures prompt and accurate updates, reducing the risk of manual errors.
  • Collect Feedback: Encourage users who opt out to provide feedback on their reasons. This feedback can guide improvements in your subscription management and messaging practices.

Subscription Flags

CleverTap provides the following two essential subscription flags to manage WhatsApp subscriptions:

MSG-whatsapp

The MSG-whatsapp flag allows you to control the subscription status of a single user profile. By setting this flag to false, you can unsubscribe a user from WhatsApp messages. Setting it to truesubscribes the user back to WhatsApp messages. The default value for this flag is false, so if businesses don’t set this flag, then users are considered as opted out.

MSG-dndWhatsApp

This flag allows businesses to unsubscribe all the profiles associated with a single phone number. This ensures that a customer does not receive any WhatsApp messages from CleverTap engagements, even when a user has multiple profiles with the same phone number.
When set to true, it sets the phone number to DND and unsubscribes all associated profiles. To resubscribe a user, you must set this flag to false. The default value for this flag is false, so if you do not set this flag, then users will not be considered to be added to the WhatsApp DND and will be considered opted-in if the msg-whatsapp flag is set to true for the user.

Both of the above flags work together with each other, and the user’s reachability depends on the values of both of these flags.

msg-whatsappmsg-dndWhatsAppSubscription status
Not setNot setUnsubscribed
Not setTrueUnsubscribed
Not setFalseUnsubscribed
TrueNot setSubscribed
TrueTrueUnsubscribed
TrueFalseSubscribed
FalseNot setUnsubscribed
FalseTrueUnsubscribed
FalseFalseUnsubscribed

Set Up Subscription Flags

CleverTap provides multiple methods to set up and manage these subscription flags:

Using App or Web SDK

You can use CleverTap's App and Web SDKs to send the values of these flags directly from your application or website. This allows you to manage WhatsApp subscriptions in real time based on user actions.

// Do not call onUserLogin directly in the onCreate() lifecycle method


HashMap<String, Object> profileUpdate = new HashMap<String, Object>();
profileUpdate.put("Name", "Jack Montana"); // String
profileUpdate.put("Phone", "+14155551234"); // Phone (with the country code, starting with +)
profileUpdate.put("MSG-whatsapp", true); //Optional Flag. Enable WhatsApp notifications
profileUpdate.put("MSG-dndWhatsApp", true); // Optional Flag. Add selected profile/ phone number to the DND list.
CleverTapAPI.getInstance(getApplicationContext()).onUserLogin(profileUpdate);

// each of the below mentioned fields are optional
// with the exception of one of Identity, Email, or FBID
NSDictionary *profile = @{
@"Name": @"Jack Montana", // String
@"Phone": @"+14155551234", // Phone (with the country code, starting with +)
@"MSG-whatsapp": @YES,  //Optional Flag. Enable WhatsApp notifications
@"MSG-dndWhatsApp": @YES,  // Optional Flag. Add selected profile/ phone number to the DND list.
};
[[CleverTap sharedInstance] onUserLogin:profile];


// each of the below mentioned fields are optional
// with the exception of one of Identity, Email, or FBID
let profile: Dictionary<String, AnyObject> = [
"Name": "Jack Montana", // String
"Phone": "+14155551234", // Phone (with the country code, starting with +)
"Gender": "M", // Can be either M or F


// optional fields. controls whether the user will be receive WhatsApp .
"MSG-whatsapp": true,  //Optional Flag. Enable WhatsApp notifications
"MSG-DNDwhatsapp": true,  // Optional Flag. Add selected profile/ phone number to the DND list.
] 
CleverTap.sharedInstance()?.onUserLogin(profile)

// each of the below mentioned fields are optional
// with the exception of one of Identity, Email, or FBID
clevertap.onUserLogin.push({
"Site": {
"Name": "Jack Montana", // String
"Phone": "+14155551234", // Phone (with the country code


// optional fields. controls whether the user will be sent email, push etc.
"MSG-whatsapp": true,  //Optional Flag. Enable WhatsApp notifications
"MSG-DNDwhatsapp": true,  // Optional Flag. Add selected profile/ phone number to the DND list.
}
});


Using Subscription APIs

The Subscribe APIs provide the ability to set a WhatsApp phone number status as subscribed or unsubscribed. This is important so that you do not send a message to your users accidentally unless they have explicitly opted for it. There may be cases when multiple users share a WhatsApp phone number; however, once a phone number is marked as unsubscribed (DND), communication is stopped for all users using the specified number.

For example, a user opts out of receiving messages. You can pass the phone number and the status as Unsubscribe in the Subscribe API. After the user opts to receive messages again, the phone number can be changed back to Resubscribe.

{
	"d": [
		{	
			"type": "whatsapp",
			"value": "+919213231415",
			"status": "Unsubscribe"
		},
		{
			"type": "whatsapp",
			"value": "+919213231416",
			"status": "Resubscribe"
		}
	]
}

Using APIs

CleverTap offers APIs that enable you to send the values of subscription flags programmatically. This method is useful for automating the subscription management process and integrating CleverTap with your existing systems. For more information, see upload user profiles. Following is an example of subscribing a user for WhatsApp messaging:

{
"d": [
{
"identity": "1189549",
"type": "profile",
"profileData": {
"MSG-whatsapp": true,//Optional Flag. Enable WhatsApp notifications
"MSG-dndWhatsApp": true  // Optional Flag. Add selected profile/ phone number to the DND list.
}
]
}


Using CSV Upload

For a manual and bulk update of subscription flags, you can upload a CSV file. This is particularly useful for managing subscriptions in bulk or performing one-time updates. The following are the conditions for updating the flags:

  • The objectId or identity must be the first column in the uploaded CSV file.
  • The Phone column is mandatory, and phone numbers must have the country code. For example, +14155551234. Following is a table that displays the CSV columns:
IdentityEmailPhoneMSG-whatsappMSG-dndWhatsApp
[email protected]14155551234FALSEFALSE
14155551235FALSEFALSE
1415555123414155551234FALSEFALSE
_234853412[email protected]14155551234FALSEFALSE
[email protected][email protected]14155551234FALSEFALSE
[email protected][email protected]FALSEFALSE

Using WhatsApp Messages

CleverTap's Journeys feature allows you to set and manage subscription flags using the Update User Profile node. You can create dynamic user journeys that automatically handle subscription changes based on how your users engage with your notifications.

The following use cases will help you visualize the possibilities:

Use case 1: Automatically Opt-out Users Basis User Replies

WhatsApp recommends an easy way for users to opt out of WhatsApp communication. This is usually done by asking users to send a keyword such as STOP in the WhatsApp chat window. This reply is then captured in CleverTap as a Notification replied event along with the incoming text. This event can qualify the users in the journey and use the update profile node to manage the WhatsApp subscription. The following sections provide information about how your users can opt-out based on their replies:

Prerequisites

You need the following to opt-out users:

  • Access to WhatsApp add-ons
  • Approved Opt Out acknowledgment message template
Steps

Follow the steps to create a journey and opt-out users:

  1. Go to Messages > Journey and create a new journey.

  2. Go to the Setup section and change the following configuration:

    1. Entry criteria: Change to event trigger.
    2. Journey entry timelines: Select the start time as Now and the end time as Never. Also, allow users to re-enter the journey.
    3. DND & Timezone: Do not select any boxes.
    4. Control group: Clear the option.
    5. Timeout: Keep the time out as low as possible, preferably in minutes.
      The following image shows the setup:
      Journey setup for use case 1
  3. After setup, drag an Action node from the Segments section in the journey canvas and configure it as follows:

    1. Use the Notification Replied event and incoming text as a property filter.
    2. Enter the keywords you want to use as opt-out keywords. For example, STOP, or Stop promotions. We recommend always using Stop promotions in the opt-out Journey as this is the button text used in Marketing opt-out buttons. The following image shows the final setup:
      Opt Out Segment
  4. Once done with the action node, drag a WhatsApp engagement node in the Journey canvas and connect with the Yes path from the previous action node.
    This node will acknowledge the user’s opt-out request, confirm that they have opted out, and share the steps with the users if they want to re-subscribe. The following image displays the node setup:
    Opt out in whatsapp engagement node

  5. Once the acknowledgment message has been configured successfully, drag a user profile update node in the journey canvas and connect the sent, unreachable, and failed path to this user profile update node. Once you have connected the user profile update node with the WhatsApp engagement node, configure the profile update node as below:

    1. Click + User property, select MSG-whatsapp and set the value to FALSE.
      The following image shows the final setup:
  6. Once the User profile update node is configured, drag a Force exit node and connect it with the user profile node to force exit the users from this journey. The final Journey setup will look as below.
    Opt out Journey

After the configuration of the Journey has been done and reviewed by your peers, publish the journey. This journey automatically qualifies the users that reply with defined Keywords and opts out those users from future WhatsApp campaigns.

Use case 2: Automatically Opt-in Users Basis User Replies

Similar to Opt-out, you can also prompt your users to subscribe or resubscribe to your updates on the WhatsApp channel by sending specific keywords, such as START, Subscribe, OPT IN, and so on.

This reply is then captured in CleverTap as a Notification replied _event along with the _incoming text. This event can qualify the users in the journey and use the update profile node to manage the WhatsApp subscription. The following sections provide information about how your users can opt-in on the basis of their replies:

Prerequisites

You need the following to opt-in users:

  • Access to WhatsApp add-ons
  • Approved Opt-in or welcome message template.

Steps

Follow the steps to create a journey and opt-in users:

  1. Go to Messages > Journey and create a new journey.
  2. Go to the Setup section and change the following configuration:
    1. Entry criteria: Change to event trigger.
    2. Journey entry timelines: Select the start time as Now and the end time as Never. Also, allow users to re-enter the journey.
    3. DND & Timezone : Do not select any boxes.
      Control group: Clear the option.
    4. Timeout: Keep the time out as low as possible, preferably in minutes.
      The following image shows the setup:
  3. After setup, drag an Action node from the Segments section in the journey canvas and configure it as below:
    1. Use the Notification Replied event and incoming text as a property filter.
    2. Enter the keywords you want to use as opt-out keywords. For example, START, Subscribe, OPT IN, and so on. The following image shows the final setup:
  4. Once the Action node has been configured successfully, drag a user profile update node in the journey canvas and connect the Yes path to the user profile update node. After you have connected the user profile update node with the Action node, configure the profile update node as follows:
    1. Click the + user property, select the MSG-whatsapp flag and set its value toTRUE.
      The following image shows the final setup:
  5. Once done with the user profile update node, You must drag a WhatsApp engagement node in Journey canvas and connect with the updated path from the previous node.
    This node will acknowledge the user’s opt-in request, confirm that they have been subscribed or resubscribed, and share the steps with the users if they want to unsubscribe. The following image shows the WhatsApp node setup:
    Opt in
  6. Once the WhatsApp node is configured, drag a Force exit node and connect the Sent, Failed, and Unreachable paths with the user profile node to force exit the users from this journey. The following image shows the final Journey setup:

After the configuration of the Journey has been done and reviewed by your peers, publish the journey. This Journey will automatically qualify the user to reply with the defined keywords and opt-out those users from future WhatsApp campaigns.