Customer lifetime value (CLV) prediction sample guide
This guide walks you through an end-to-end example of Customer lifetime value (CLV) prediction in Dynamics 365 Customer Insights - Data using sample data. We recommend that you try this prediction in a new environment.
Scenario
Contoso is a company that produces high-quality coffee and coffee machines. They sell the products through their Contoso Coffee website. The company wants to understand the value (revenue) that their customers can generate in the next 12 months. Knowing the expected value of their customers in the next 12 months will help them steer their marketing efforts on high value customers.
Prerequisites
- At least Contributor permissions.
Task 1 - Ingest data
Review the articles about data ingestion and connecting to a Power Query data source. The following information assumes you are familiar with ingesting data in general.
Ingest customer data from eCommerce platform
Create a Power query data source named eCommerce and select the Text/CSV connector.
Enter the URL for eCommerce contacts https://aka.ms/ciadclasscontacts.
While editing the data, select Transform and then Use first row as headers.
Update the datatype for the columns listed below:
- DateOfBirth: Date
- CreatedOn: Date/Time/Zone
In the Name field on the right-hand pane, rename your data source to eCommerceContacts
Save the data source.
Ingest online purchase data
Add another data set to the same eCommerce data source. Choose the Text/CSV connector again.
Enter the URL for Online Purchases data https://aka.ms/ciadclassonline.
While editing the data, select Transform and then Use first row as headers.
Update the datatype for the columns listed below:
- PurchasedOn: Date/Time
- TotalPrice: Currency
In the Name field on the side pane, rename your data source to eCommercePurchases.
Save the data source.
Ingest customer data from loyalty schema
Create a data source named LoyaltyScheme and select the Text/CSV connector.
Enter the URL for loyalty customers https://aka.ms/ciadclasscustomerloyalty.
While editing the data, select Transform and then Use first row as headers.
Update the datatype for the columns listed below:
- DateOfBirth: Date
- RewardsPoints: Whole Number
- CreatedOn: Date/Time
In the Name field on the right-hand pane, rename your data source to loyCustomers.
Save the data source.
Ingest customer data from website reviews
Create a data source named Website and select the Text/CSV connector.
Enter the URL for website reviews https://aka.ms/CI-ILT/WebReviews.
While editing the data, select Transform and then Use first row as headers.
Update the datatype for the columns listed below:
- ReviewRating: Decimal number
- ReviewDate: Date
In the Name field on the right-hand pane, rename your data source to Reviews.
Save the data source.
Task 2 - Data unification
Review the article about data unification. The following information assumes you are familiar with data unification in general.
After ingesting the data, begin the data unification process to create a unified customer profile. For more information, see Data unification.
Describe the customer data to be unified
After ingesting the data, map contacts from eCommerce and Loyalty data to common data types. Go to Data > Unify.
Select the tables that represent the customer profile – eCommerceContacts and loyCustomers.
Select ContactId as the primary key for eCommerceContacts and LoyaltyID as the primary key for loyCustomers.
Select Next. Skip duplicate records and select Next.
Define matching rules
Choose eCommerceContacts : eCommerce as the primary table and include all records.
Choose loyCustomers : LoyaltyScheme and include all records.
Add a rule:
- Select FullName for both eCommerceContacts and loyCustomers.
- Select Type (Phone, Name, Address, ...) for Normalize.
- Set Precision Level: Basic and Value: High.
Add a second condition for email address:
- Select Email for both eCommerceContacts and loyCustomers.
- Leave Normalize blank.
- Set Precision Level: Basic and Value: High.
- Enter FullName, Email for the name.
Select Done.
Select Next.
View unified data
Rename the ContactId for loyCustomers table to ContactIdLOYALTY to differentiate it from the other IDs ingested.
Select Next to review and then select Create customer profiles.
Task 3 - Create transaction history activity
Review the article about customer activities. The following information assumes you are familiar with creating activities in general.
Create activities with the eCommercePurchases:eCommerce table and the Reviews:Website table.
For eCommercePurchases:eCommerce, select SalesOrderLine for the Activity Type and PurchaseId for the Primary key.
For Reviews:Website, select Review for the Activity Type and ReviewID for the Primary key.
Enter the following information for the purchase activity:
- Activity name: eCommercePurchases
- TimeStamp: PurchasedOn
- EventActivity: TotalPrice
- Order line ID: PurchaseId
- Order date: PurchasedOn
- Amount: TotalPrice
Enter the following information for the web review activity:
- Activity name: WebReviews
- Timestamp: ReviewDate
- Event activity: ActivityTypeDisplay
- Additional detail: ReviewRating
Add a relationship between eCommercePurchases:eCommerce and eCommerceContacts:eCommerce with ContactID as the foreign key to connect the two tables.
Add a relationship between Website and eCommerceContacts with UserId as the foreign key.
Review your changes and then select Create activities.
Task 4 - Configure customer lifetime value prediction
With the unified customer profiles in place and activity created, run the customer lifetime value (CLV) prediction. For detailed steps, see Customer Lifetime Value prediction.
Go to Insights > Predictions.
On the Create tab, select Use model on the Customer lifetime value tile.
Select Get started.
Name the model OOB eCommerce CLV Prediction and the output table OOBeCommerceCLVPrediction.
Define model preferences:
- Prediction time period: 12 months or 1 year to define how far into the future to predict CLV.
- Active customers: Let model calculate purchase interval which is the time frame in which a customer must have had at least one transaction to be considered active.
- High value customer: manually define high value customers as top 30% of active customers.
Select Next.
In the Required Data step, select Add data to provide the transaction history data.
Select SalesOrderLine and the eCommercePurchases table and select Next. The required data is automatically filled in from the activity. Select Save and then Next.
The Additional data (optional) step allows you to add more customer activity data to get more insights for customer interactions. For this example, select Add data and add the web review activity.
Select Next.
In the Data updates step, select Monthly for the model schedule.
Select Next.
After reviewing all the details, select Save and Run.
Task 5 - Review model results and explanations
Let the model complete the training and scoring of the data. Review the CLV model results and explanations.
Task 6 - Create a segment of high value customers
Running the model creates a new table, which is listed on Data > Tables. You can create a new customer segment based on the table created by the model.
On the results page, select Create segment.
Create a rule using the OOBeCommerceCLVPrediction table and define the segment:
- Field: CLVScore
- Operator: greater than
- Value: 1500
Select Save and Run the segment.
You now have a segment that identifies customers who are predicted to generate more than $1500 of revenue in the next 12 months. This segment gets updated dynamically if more data is ingested. For more information, see Create and manage segments.
Tip
You can also create a segment for a prediction model from the Insights > Segments page by selecting New and choosing Create from > Insights. For more information, see Create a new segment with quick segments.