Two-way messaging and keywords auto responses
Enable and automate two-way messaging with your customers through SMS and mobile messaging
Triggered two-way messaging allows your customers to reply directly to the text messages received from your campaign. This can be useful for use cases, such as collecting NPS responses or customer feedback by mobile message.
Paired with Keywords Auto Responses, such as the keyword opt-in and opt-out, two-way messaging provides customers with an easy and user-friendly way to unsubscribe, subscribe, or ask for help from all mobile communications by reply, such as “STOP”, “JOIN” or “HELP.” This is especially important for businesses based in the US that need to follow and understand TCPA and CTIA Compliance for SMS Marketing.
Supported channels
- SMS (requires Infobip SMS or Sinch SMS integration)
- MMS (requires Infobip MMS or Sinch MMS integration)
- RCS (requires Infobip Mobile Messaging or Sinch Mobile Messaging integration)
- WhatsApp (requires Infobip Mobile Messaging or Sinch Mobile Messaging integration)
How triggered two-way messaging works
When a customer replies to a message to the client's dedicated phone number, the mobile messaging vendor will forward the mobile-originated message to Bloomreach Engagement. Bloomreach Engagement then handles the incoming messages in near real time (subject to network operators) and tracks a campaign
event with the status incoming_message
to the customer profile.
The campaign events containing the reply message can be used in different ways based on the use case such as:
- Reporting of rating for the NPS Use Case
- Triggering an automated follow-up scenario based on the reply message
- which allows you to create the whole conversational journey
How keyword auto-responses work
When a customer replies to a message starting with one of the configured keywords, the corresponding auto-response is executed immediately. The auto-response consists of a consent action (revoke consent, grant consent, or no action) and a real-time auto-reply message. Based on the consent action type, different consent-related actions will be performed.
Revoke consent action (opt-out/unsubscribe)
A Revoke consent action will track two types of events to the customer profiles, which will be processed near real time (subject to network operators):
Event type | Parameter | Notes |
---|---|---|
consent | action=reject | When setting up the consent action, you must select consent categories. One consent event for each category will be tracked. |
campaign | status=incoming_message | N/A |
When the message is received by Bloomreach Engagement, the phone number is blocklisted immediately. Once a number is on a blocklist, it's not possible to send any more messages unless using General consent
for, for example, transactional messages or if a consent
event with action accept
is tracked with a later timestamp than the time of blocklisting.
Important
The system unsubscribes all customer profiles with the matching phone customer attribute.
Grant consent action (opt-in/subscribe)
A Grant consent action will track two types of events to the customer profile, which will be processed near real time (subject to network operators):
Event type | Parameter | Notes |
---|---|---|
consent | action=accept | When setting up the consent action, you must select consent categories. One consent event for each category will be tracked. |
campaign | status=incoming_message | N/A |
In case no existing customer profile with a matching phone number exists, the ID selected under Map new subscribers ID will be used to create a new profile. The phone number in the international format starting with "00" will be used as the ID value.
If Map new subscribers ID is not set, only known phone numbers will be subscribed. In this case, a grant consent message from an unknown phone number will be discarded, no profile will be created, and no events will be tracked.
Important
The system will track the consent and campaign events based on the customer profile handling rules.
No action
A No consent action will track only one type of event to the customer profile, which will be processed near real time (subject to network operators):
Event type | Parameter |
---|---|
campaign | status=incoming_message |
Important
The system will track the campaign event based on the customer profile handling rules.
How auto-reply works
If provided, an auto-reply message will be sent after receiving a message starting with the matching keyword. The auto-reply message will be sent immediately to any phone number without looking up the profile, which means that it will be sent regardless of whether it belongs to an existing customer profile or whether the customer has provided SMS or WhatsApp-related consent.
Sending an auto-reply will track a campaign event to the customer based on the customer profile handling rules. These events will also be processed near real time (subject to network operators).
To send the auto-reply message, Bloomreach Engagement will use the following:
- default SMS/MMS/RCS/WhatsApp provider to send the message
- recipient field (message.from) from the incoming webhook as a sender
- sender field (message.to) from the incoming webhook as a recipient
Customer profiles handling
Every inbound message is tracked in Engagement as a campaign
event with the status incoming_message
. Every consent information is tracked in Engagement as a consent
event with action accept
or reject
. These events are associated with a specific customer based on the following logic:
- Callback data (client reference)
Each outbound message sent from Engagement usually contains callback data (unique customer and campaign identifiers). The messaging vendor (Sinch/Infobip) returns this data as part of the inbound message. Based on this data, we are able to track events to the specific customer in near real time (subject to network operators).
In some specific cases, the callback data are not available, for example:- Customer proactively messaging without previously receiving a message from Engagement
- Lack of support on a particular carrier side
In these cases, Engagement follows the steps below:
- Latest SMS or mobile messaging recipient:
The system first links the inbound message to the customer who most recently received a campaign through the same channel (SMS or mobile messaging). - Newest customer by internal ID:
If the latest recipient criterion doesn't apply, the system associates the message with the newest customer based on their internal ID. - Creating Anonymous Profiles:
If no existing customer profile matches the phone customer attribute, an anonymous profile is generated. This profile is equipped with an inbound identifier (e.g. inbound-abcdefgh-1234-5678-9101-abc123def456
) within the SOFT IDcookie
. In cases where the cookie isn't accessible, an alternative SOFT ID is employed. The international-format phone number (beginning with "00" or "+") is also stored as the customer'sphone
attribute value.
Anonymous profile handling
Anonymous profiles are diligently managed throughout the process. Each time a
phone
customer attribute is updated in the database, the system cross-references with existing anonymous profiles. If an anonymous profile shares the samephone
customer attribute, it is intelligently merged into the profile that's receiving the phone attribute update.
Multiple profiles with the same phone number
To give an example, let's have two customer profiles with the same phone number. If the recipient replies with “STOP”, then both customer profiles are unsubscribed because both profiles have consent rejection tracked but only one profile has an incoming message tracked as an event based on the customer profile handling rules. In other words, you want to unsubscribe from all profiles but track messages for only one profile in order to not create duplicates.
How to set up two-way messaging and keyword auto-responses
Requirements
-
Sinch/Infobip integration for the relevant channels (SMS/MMS/RCS/WhatsApp) is necessary:
- Request Sinch or Infobip integration and Two-way messaging from your CSM or technical consultant.
- You must also request a short or long dedicated phone number (for customers to send messages to). Customers cannot reply to alphanumeric senders.
-
Consent categories for communication through the relevant channels (SMS/MMS/RCS/WhatsApp) are created:
- Define which consent categories are used for SMS/MMS/RCS/WhatsApp communication. A maximum of 5 categories can be selected.
-
Phone numbers must be in the international format (either starting with "00" or with "+").
Configuration
-
Contact your CSM to enable the "Two-Way Messaging" account module.
-
Go to Project Settings > Channels > SMS / MMS / RCS (or Project Settings > Channels > Mobile messaging for WhatsApp).
-
Make sure that Sinch or Infobip is set as your default provider for the relevant channels (SMS/MMS/RCS/WhatsApp).
-
Under Two-Way mobile messaging, enable Track incoming messages.
-
Configure your Keyword auto responses including keywords, consent actions, and auto-replies. To do so, start typing into the relevant text field, as shown in the screenshot below. When setting up your own keywords, make sure to read the guide below.
Important
It is recommended to use Consents, not Legitimate interest as a consent category for SMS campaigns. When legitimate interest is used the phone number blocking works also for newly created customers: if a new customer is created with a phone number that was unsubscribed, the sending messages will be blocked until explicit consent accept is tracked.
A guide to keywords
Opt-out keywords in Bloomreach Engagement have the following traits:
- Case insensitive
- Accents and whitespaces are ignored
- Match only if the message starts with the keyword
- Max 100 opt-out keywords allowed, each keyword up to 20 characters
- Regex is accepted as a keyword
In the case of MMS replies the message can contain multiple message parts. All parts are checked for a keyword based on the rules above.
Example with opt-out keywords: "stop" (English) , "arret" (French)
-
Messages that WILL trigger opt-out: "STOP", "Stop", "stop", " stop", "šťóp", "stopwatches", "Arret", "ARRET", "arret", "arrêt"
-
Messages that will NOT trigger opt-out: "Please stop", "Unsubscribe me", "Garret", "barret"
Test out the keyword auto-responses
Now that you set up all the necessary technicalities, you are ready to start using the keyword auto-responses within your campaigns. To test out if you set up keyword auto replies correctly, you can send some keywords - for example, STOP - to your dedicated sender number. You should immediately receive the auto-reply and see the events. Go to Data & Assets > Customers where you should find that the customer has a consent
event with action
= reject
, and campaign
event with status
= incoming_message
, as shown below.
Event tracking
Inbound message tracking
Incoming messages will be tracked as a campaign
event or custom event configured in mapping.
The action_type
property indicated the channel used (sms
, mms
, rcs
, whatsapp
).
Event property | Value | Description |
---|---|---|
status | "incoming_message" | / |
action_type | "sms" / "mms" / "rcs" / "whatsapp" | / |
timestamp (event timestamp) | timestamp e.g. 2020-09-04T07:59:43.580671+00:00 | When the system received the message. |
sender | phone number e.g. "00421905123456" | The sender's (customer's) phone number from which the message originates. |
recipient | phone number e.g. "00421911123435" or callback ID e.g. "b9804397-0321-44d9-9086-8645c88f89f7" | Your dedicated sender phone number (SMS/MMS) or callback ID (RCS/WhatsApp). |
message | e.g. “stop” | The text of the received message. In case of MMS, received message constructed from the MMS message parts received, included media will be attached in the form of a URL |
subject (MMS only) | e.g. “Hello!” | received message subject (MMS only) |
More technical information on inbound messages can be found within the external documentation: Sinch SMS or Infobip SMS.
Consent tracking
The consent
event is tracked to all customers with a phone number matching the sender's number.
The source
property indicates through which channel the consent was provided (sms_reply
, mms-reply
, rcs_reply
, whatsapp_reply
).
Event property | Value | Description |
---|---|---|
timestamp (event timestamp) | timestamp | The time at which the SMS was received by the operator. |
imported_timestamp | The time of consent is tracked. | |
action | "reject" | / |
source | "sms_reply" / "mms_reply" / "rcs_reply" / "whatsapp_reply" | / |
category | consent category | The consent category is specified in the SMS opt-out configuration. |
identification | phone number e.g. "00421905123456" | The sender's (customer's) phone number from which the message originates. |
identification_type | "phone" | / |
message | E.g. "stop" | The text of the received message that triggered the unsubscription. |
Auto-reply message tracking
An auto-reply action tracks a campaign
event or a custom event configured in mapping.
The action_type
property indicated the channel used (sms
, mms
, rcs
, whatsapp
).
Event property | Value | Description |
---|---|---|
status | "enqueued" / "enqueue_failed" | / |
action_type | "sms" / "mms" / "rcs" / "whatsapp" | / |
campaign_name | “Auto-reply keywords” | Static system-generated value |
action_name | e.g. “Opt-out keywords” | Name of the keyword response configuration. |
sender | phone number e.g. "00421905123456" | sender's (customer's) phone number from which the message originates |
recipient | phone number e.g. "00421911123435" | dedicated sender phone number requires setup on the service provider side (Sinch/Infobip) |
sent_timestamp | timestamp | timestamp of when the message was sent |
message | “You have unsubscribed from SMS…” | Text of the auto-reply message |
number_of_message_parts | e.g. 1 | Number of message parts sent. One message part is 160 characters. |
Blocklisted phone numbers
There is a delay between blocklisting a phone number and the related consent events being tracked to the corresponding customer profile. If a campaign runs during this small time window and attempts to send a message to the blocklisted phone number, a status
property with value enqueue_failed
is tracked.
Event property | Value | Description |
---|---|---|
status | "enqueue_failed" | / |
message | "Phone number is blacklisted by an opt-out keyword." | / |
Limitations
- You must have a dedicated phone number (short or long number) that is used for accepting incoming messages. Customers cannot reply to alphanumeric senders (for example "Kiwi.com").
- Customer phone attributes must be in string international format (either starting with "00" or with "+").
- A Revoke consent keyword unsubscribes only already existing customers, not customers who are created after the opt-out message is processed (in other words: unsubscribe only present customers, not future ones). It's recommended to use consent, not Legitimate interest as a consent category for SMS and mobile messaging campaigns. When a legitimate interest is used the phone number blocking works also for newly created customers: if a new customer is created with a phone number that was unsubscribed, the sending messages will be blocked until an explicit consent acceptance is tracked.
- Incoming messages are handled based on the customer profile handling rules.
- Revoke content and Grant consent actions apply to the consent categories selected in the auto-response settings, not the consent category that was used to send the campaign (SMS or Mobile messaging action node in scenarios).
- Blocklisting phone numbers by revoking the consent keyword overrides all consent categories and legitimate interests. While phone numbers are blocklisted, SMS and mobile messages can be sent only under General consent.
- If SMS campaign events are disabled, we do not track incoming messages as events.
- Limits:
- max 20 distinct keywords auto-response configurations
- max 100 distinct keywords per configuration, each keyword up to 20 characters
- max 5 consent categories can be selected
- max 10 customers are unsubscribed if there are more customer profiles matching the same phone number
Updated 5 days ago