How to track Customer Satisfaction over time and make better decisions
Being a customer-centric company takes continuous effort. Your customers’ needs and preferences constantly change due to external (e.g., macroeconomic shifts, global pandemic, fashion trends) and internal (e.g., family dynamic changes, health developments) events. To succeed, a customer-centric organization needs to put a robust Voice of the Customer (VoC) program in place to drive innovation and customer service. My goal with this article is to explore the visualization of CX data (specifically a Simple Moving Average chart) to help decision-makers best leverage their customers’ voices.
As part of this article, I will be referencing a few different terms. I included definitions below, as well as external links in case you would like more information.
Voice of the Customer (VoC): a term that describes your customer’s feedback about their experiences with and expectations for your products or services. It focuses on customer needs, expectations, understandings, and product improvement.
Net Promoter Score: the percentage of customers who are promoters of a brand or company minus the percentage who are detractors — offers organizations a powerful way to measure and manage customer loyalty.
Simple Moving Average chart: a graph overlaying a rolling average over individual data points to help visualize trends and smooth data variations over time.
The ongoing nature of changing customers’ tastes required a scalable and easy to refresh model. Based on my previous research covering model types (found here), I decided to build it leveraging Jupyter Notebook. The steps below refer to my steps and folder structure; the databases and folder names may be different for you.
# import relevant libraries
import pandas as pd
from matplotlib import pyplot as plt
# pull data and setup DataFrame
df = pd.read_excel (‘Client Satisfaction Survey.xlsx’) # pull Excel data
df[‘Moving Average’] = df.rolling(window=5).mean() # create a new column to capture 5 entries moving average
# display the data
plt.title(‘Customer Satisfaction Trend’)
plt.plot(df.index, df[[‘CX Score’, ‘Moving Average’]])
plt.ylabel(‘Customer Satisfaction (1=lowest, 10=highest)’)
plt.legend((‘CX Score’, ‘Moving Average’), loc=’lower right’)
The output of the code is the above graph showing how individual variations impact the moving average. To quickly identify trend changes, think of anything below the orange line as bad and anything above it as good. The 20 to 30 gap is the most significant break in the moving average trend, as the CX scores drop close to 0.
A Simple Moving Average chart displaying customer satisfaction helps leaders quickly identify their teams’ performances. Any shifts above or below the rolling average could be an early indicator of a trend shift, to which the teams can immediately respond. By continuously capturing CX data and staying tuned to the VoC, customer-centric businesses will be in a better place to succeed.