Best practices for creating two-way conversations with reply matching

Angel Cheung
Angel Cheung
  • Updated

When creating flows that contain complex rules in the Conversation Node or Inbound SMS triggers, it's important to consider how to handle both free replies and expected responses. Leverage how reply matching works and optimise your flows with the tips and tricks below.


How do I reply to customers dynamically and sensitively in workflow?

In use cases such as survey flows, you can leverage the Natural Language Processing node paired with the Criteria split to determine the sentiment and branch off different experiences depending on how your customers reply.

How do I best include emojis in my reply matching configuration?

When you are creating reply matching rule with emojis, we recommend using only the Contains (anywhere) rule type, and the default emoji variation to ensure all skin tone variations are matched. 

For example:

  • "Contains (anywhere) "👍" will match to any reply containing any of these variations: 👍 👍🏻 👍🏼 👍🏽👍🏾 👍🏿".
  • "Contains (anywhere) "👍🏾" will only match replies containing "👍🏾". All other skin tone variations will not be matched.

How do I make sure customers don't upgrade or purchase something by accident?

You can leverage exact matches as a double opt-in method or final purchase confirmation. Exact matches should be used sparingly as it anticipates the exact keywords you specify. Any variation to the keyword, including punctuation will not be matched. 

For example, the exact-match keyword UPGRADE123 can be used as a double opt-in or a final purchase confirmation. Other rules such as 'contains' should not be used in this scenario to prevent accidental purchases.

How do I extract as much information as possible in an opt-out?

Consider having 1 global opt-out flow, 1 global opt-in flow and have each marketing flow have an opt-out path for detailed reporting on customer activity.

In each Conversation node of a marketing flow, we recommend having an opt-out path using the opt-out recipe. Configuring your flows this way will ensure an "opt-out" request contains maximum contextual information, such as which flow or message prompted this action. You can then send this opt-out prompt to your platform, complete with its context.

The global opt-out and opt-in flows serve as the 'catch all' for these requests, but will only contain limited context (mobile number, timestamp and message body). Information such as which flow or message prompted this action will not be captured.

How do I create custom rules?

The pre-written recipes are designed to be all-purpose, however depending on the context of your flow you can also add additional rules to capture a customer's intention.

For example, in an appointment confirmation flow, words like "Attend" and "Confirm" are specific to the nature of an appointment and can be added to the 'Yes' path.

How do I ensure unexpected replies are captured in a flow?

A customer may reply with something irrelevant to the flow experience they are in. These can be captured by adding a free reply path for re-prompting or to pass this information to your platform. It's important to set the reply expiry on this node in consideration of other active conversations the customer may be in. This is because any reply from the customer (other than an exact keyword match) will be matched to this conversation. Read more about reply matching here. 

For example, a customer may reply with a support request to an appointment confirmation. If configured to the image below, any unexpected reply will be matched to the Free Reply path. For this reason, the reply expiry is set to 1 day to prevent any potential mismatched messages.

Known limitations: Configuring Reply Matching for Apple and Android reactions

When customers may 'react' to a message, this reaction counts as a reply, and is reflected in History.

For example, when a recipient clicks on a message reaction, it's returned as an inbound message containing the reaction and original content of the SMS. In History, you would expect to see the image below:

This means Pendula will attempt to match the message according to the Reply Matching rules.

Currently, there is no way to include the full message with merge fields and the line breaks in the rule builder. However, we can suggest using the last few words of the original SMS content as a workaround.

How to set up the work-around

In the Conversation node, you can configure the following rules as the first path in the Replies tab:

Rule Value Notes
Ends with [Last few words of the Outbound SMS]'

Insert the last few words of the Outbound SMS from the corresponding Conversation node. Make sure the words from the Outbound SMS do not contain merge fields or line breaks.

For example, Please reply 'YES' to confirm.'

This rule will match any reaction reply from an Android device.

Ends with [Last few words of the Outbound SMS]”

Insert the last few words of the Outbound SMS from the corresponding Conversation node. Make sure the words from the Outbound SMS do not contain merge fields or line breaks. Take note end quotation mark is used, not the inch mark ".

For example, Please reply 'YES' to confirm.”

This rule will match any reaction reply from an Apple device.

This will match reaction messages and continue the experience as configured in the workflow.

While this particular limitation is currently present, we will be addressing this as an item on our roadmap for future development. Subscribe to What's New at Pendula to be notified of it's release.

As best practice, we also suggest having an active Unmatched flow as the fallback to mitigate any more unexpected replies.