Best practices for creating two-way conversations with reply matching

Angel Cheung
Angel Cheung
  • Updated

Quick links

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

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

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

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

How do I create custom rules?

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


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.