Creating Customer Profiles
What is a customer profile?
A customer profile is a collection of interactions, cumulated over the course of your history with that person. Each interaction is representative of a single issue, and may contain multiple conversations.
Using customer profile logic in your Gnatta setup allows you to group everything you know about a customer into one place, so you can better understand them and handle the current issue accordingly. For example, you could choose to route VIP customers into a dedicated queue, or customers with concern flags from previous interactions into an escalations queue.
It also unlocks incredible reporting and BI possibilities!
We’ve used lots of Gnatta terms here! Try thinking of it like this:
Message: a single inbound SMS message
Conversation: a series of SMS messages create a conversation
Interaction: all conversations relating to the current issue - i.e. the SMS conversation, a phone call follow-up, and an email the agent sent to the courier
Customer Profile: every interaction (issue) over the course of your history with a customer - which could span years, and dozens of separate orders and issues!
Choosing a unique identifier
Customer profiles in Gnatta are typically matched using an email address - we’ll scan each new conversation or interaction for an email address, and if we find one, try to match it with an existing profile or create a new one.
An email address is a particularly good choice for match criteria in a contact centre because it’s likely to be found across multiple channels (built in to chat and email, for example!), and almost every customer will have one to hand.
However, any unique piece of data can be used to match a customer profile, depending on your use case. For example, you could create a custom data field for ‘Customer ID’, and only try to match interactions to a profile if the agent adds a Customer ID into that field.
Excluding suppliers from profiles
We strongly recommend you exclude addresses for third party suppliers from your profiles logic (see example below for a how-to!), to avoid individual messages from that supplier being grouped together.
For example, eCommerce retailers typically exchange dozens of messages every day with a courier or logistics supplier, using a generic email address like queries@mycourier.co.uk
.
If you did not exclude this email address from your customer profile logic, you’d find every message sent to and from that email address stored in one profile - and one interaction if they’re sent close enough together! An agent could find themselves the recipient of an interaction with dozens of messages (each relating to different parcels and orders) to respond to all at once - and more incoming with every second.
Most Gnatta domains use a standard of 7 days to split interactions, which means any new conversations discovered within 7 days will be assigned to the same interaction. Check out the Find or Create template for more information.
Creating flows for each queue
In order to implement effective customer profiling on your Gnatta domain, you’ll need to set up a new flow for each queue you’d like to be included in the profile.
Each of your queues should be mapped to a single channel type. For example, your ‘Facebook’ queue should only be receiving interactions from Facebook accounts.
Because each communication channel is slightly different in the data that is collected and available, the logic you need in order to group conversations into a customer profile is also slightly different.
We’ve created a specific template for each channel in the Flow Builder templates library. Be sure to create a new flow for each queue, using the relevant channel template. i.e. For your Facebook queue, you’ll need to use the ‘Add Facebook Customer Profile’ template.
The event these templates should be used on also varies depending on the channel in question. They should be mapped as follows
Chat >
Chat Started
Email >
New Message Received
All others >
Data Updated (Email Address)
This is because an email address is collected by default with chat and email, so the profile can be created straightaway. For all other channels and queues, you’ll need to wait until an email address is added to a custom data field - and therefore profiles should be added or updated on a Data Updated
event.
An example: Facebook Customer Profiles
Below, we’re going to work through the process of applying customer profiling logic to a Facebook queue. This means we’ll be checking an email field to see if an email address has been added (by workflow, or by the agent), and then checking those interactions to see if we have a customer profile to group them with, or creating new one. Later, you can roll out your profiling logic to include as many queues and channels as you like - the more you add, the more accurate your customer profiles will be!
We’re going to take the following steps:
Update the address book
The address book in Gnatta is used by agents to create manual conversations, typically in order to follow-up a customer query - for example, queries@mycourier.co.uk
. To ensure your profile logic is effective and doesn’t cause issues for your agents, ensure any 3rd parties and suppliers you frequently contact are included. It’s worth carrying out regular updates on your address book as business needs and partnerships change.
Navigate to the address book by going to Configuration > Advanced > Address Book
and adding any new contacts as needed. For a more detailed walkthrough, check out this article: Creating An Address Book
Identify an exclusion list
There are some email addresses or contacts that you’ll likely want to avoid creating profiles for, without putting them in the address book. For example, internal testers - you don’t want the personal email address for that tester in the address book as you don’t want agents to use it, but you also don’t want to group contacts from that person into a profile.
This list could include:
Known spam or junk addresses
3rd parties or supplier individual address (i.e.
joe.bloggs@mysupplier.com
)Internal email addresses (i.e.
@gnatta.com
)
You’ll need this list handy when you build your flow - you can jot it down into a single column CSV file, or a notepad with commas to separate each address.
Identify an email address field
As Facebook account email addresses are private and not exposed to 3rd parties (rightly so!), we’re going to attach our flow to a Data Updated
event mapped to the Facebook queue so we can wait for an email address to be mentioned by the customer in the interaction.
When the customer provides their email address in a message, it’ll be added to an Email Address field on the interaction. This can be done manually by the agent, but most Gnatta domains use a Detect and Update flow to do it automatically.
Check the dynamic data in your domain (Configuration > Advanced > Dynamic Data
) and identify or create an email address field you’d like to use. If you’re creating one, be sure to store it in a dataset that will be visible to the agent on the interaction, too.
Create (or locate) the event to trigger your flow
Because we can’t attempt to match a customer profile for Facebook until we detect an email address in our custom field, we want to trigger this flow using a Data Updated
event, mapped to your Facebook queue and email field.
Every time an agent (or workflow) updates a custom field on an interaction in that queue, this event will be triggered.
Use the Add Facebook Customer Profile template
With all of the previous steps complete - we’re now well equipped to set up our profiling flow! You should have everything you need to make this part a breeze.
Create a flow from the template
First, navigate to the builder, and open the templates library to find the ‘Add Facebook Customer Profile’ template.
Update the Decision action with your email field
The first action is a Decision
- it’s purpose is to check if the email address field has a value. You’ll need to go into this action, and tell Gnatta which email field to check.
Open the
Decision
actionClick the pencil icon on the branch ‘Email has value’
Expand the condition, then click ‘Explore’ under ‘Replace me!’
Select Interaction Data (
Interaction.Data
) - this is where your email field is storedSelect your email address field
Click submit on the action
This Decision
will now check interactions for a value in your email field, and if it doesn’t find one, it’ll stop the flow. if it does find one, it’ll progress to the next action.
Update the Check Address Book action with your email field
The next action is Check Address Book
. This action is going to do what it says on the tin, and compare your email address field to the contacts stored in your Address Book. Assuming that’s all up to date from the previous steps, this part is simple.
Open the Check Address Book action
Click ‘Explore’ underneath the Email input
Select Interaction Data (Interaction.Data) - this is where your email field is stored
Select your email address field
Click submit on the action
This action is followed by another Decision
, which we’ve already preconfigured to check whether the Check Address Book
action output contains ‘True’ or ‘False’. If the value is True, that means the email was one from your Address Book and the flow will be stopped. If the value is False, it’ll progress to the next step.
Update the Keyword Filter action with your exclusion list
This Keyword Filter
action is where you’re going to add in any other contacts or addresses you want to exclude from grouping logic that might not be caught by your Address Book.
Open the
Keyword Filter
actionUse the pencil to open the ‘Excluded contacts’ branch
Expand the condition, and use ‘Explore’ to insert your email field as you’ve done in previous steps. Remember, it’ll be stored under Interaction Data (
Interaction.Data
)Add your exclusion contacts as values - use ‘Add Value’ to type each contact manually, or the upload icon to bulk add your list
Set match criteria for the customer profile
In the Find Customer Profile
, Gnatta is going to use the match criteria you define to identify an existing customer profile before moving on to the next step (updating the one it’s found, or creating a new one). As discussed earlier in the article, we’re going to be using the email address as our match criteria.
Open the Find Customer Profile action
Open the Match criteria configuration panel
Select your email field - but don’t stop there!
Use the ‘Explore’ menu to find Interaction Data (Interaction.Data)
Select your email field again to insert the GUID
The next action is a Decision
, which is checking the output from Find Customer Profile
for a true/false value. If the value is True, the flow will go on to Update Customer Profile
, where it’ll connect that Facebook account to the customer profile it found. If the value is False, the flow will go on to Create Customer Profile
instead.
Create the customer profile, at last!
The flow has identified that there isn’t an existing customer profile, so in the Create Customer Profile
, it’s going to start a brand new one. It’ll connect the Person ID (Conversation.Person.Id
) to the profile. Any future conversations from that Facebook account will be added right in to the profile.
But first, you’ll need to complete the setup on your Create Customer Profile
action. We want to make sure the email address we’ve discovered on the interaction is stored against the customer profile, too, so you can use it in other flows!
Open the
Create Customer Profile
actionOpen the Preset data configuration panel
Select your email field - but don’t stop there!
Use the ‘Explore’ menu to find Interaction Data (
Interaction.Data
)Select your email field again to insert the GUID
Add the flow to your event
And that’s it! Give your flow a useful name, hit save and publish, then you can add it to your Data Updated
event. If your event is enabled, the next time it fires Gnatta will process your flow. Remember to check logs to see if your flows are working as expected when you test them!
What to do next?
Set up customer profiles for every queue, using the relevant channel template and event combination!
Chat >
Chat Started
Email >
New Message Received
All others >
Data Updated