Understanding the value of loyal customers

Understanding the value of loyal customers

Today our Senior Data Analyst, Corinne Petroschke, shares some insights into her recent work on customer acquisition costs.

...

The goal of every company is to pay less for the acquisition of customers than it will earn from those same customers. In this article, I will explain how we analysed customer acquisition costs at GetYourGuide and what we learned from this analysis. I will begin by digging into the value of a customer then illustrate how we determine the cost required to generate this value. Finally, I’ll explore the model we built and our results.

The Revenue Side

A prerequisite for the acquisition cost analysis is our internal marketing attribution model which was built by the Data Platform team. The internal marketing attribution model looks at our marketing efforts spread across various channels (like paid search, newsletter, and affiliates). Usually customers visit us through several of these channels before they make a purchase. Each of these visits or touchpoints contributes to the final buying decision, so we want to assign some value to all of them — this is the purpose of attribution. Various attribution models exist and each has its own advantages and disadvantages; choosing a suitable attribution model depends on your specific business and needs.

For each transaction at GetYourGuide, we check all touchpoints the customer had in the past X days and assign them a weight depending on their position in the conversion path. By multiplying the net revenue from the purchase with the assigned weight, we get the net revenue for each touchpoint.

The numbers in the image above are for illustrative purposes only and do not represent our actual weights nor actual value.

The numbers in the image above are for illustrative purposes only and do not represent our actual weights nor actual value.

The Cost

The attribution model covers the revenue side of the customer acquisition. Next, we identify the cost associated with each touchpoint. We get daily aggregated cost reports from partners like Google, Bing, or Facebook. From our tracking setup, we know where each click came from. We can track if a visitor searched for “Eiffel Tower Tickets” on Google and clicked on a paid-search ad, followed a partner link on a travel blog, or typed getyourguide.com directly into a browser.

In the case of the Google search, the link below is an example of how it could look:

Screen Shot 2019-01-15 at 08.51.16.png

Using the highlighted tracking parameters, we can match each paid visit to the reported cost. This relies heavily on a proper setup of all tracking parameters. Building the attribution as well as the cost assignment required some heavy data engineering work which was done using Databricks Notebooks running on Spark. At GetYourGuide, each Analyst can choose to code in Scala, Python, R or SQL. For this project, along with many others, I used Scala.

Bringing it together

For the final analysis of the customer acquisition costs, we decided to look at the behaviour of different cohorts. Cohorts are great to analyze development over time and see if certain measures have a positive or negative impact on the business (checkout my colleague Dima’s article to learn more about cohort analysis). We also want to distinguish between the cost for acquiring new customers vs. the cost to re-engage with them over time. We decided to group customers into quarterly cohorts depending on their very first date of purchase at GetYourGuide. Each transaction was marked as either acquisition, short-term repeat, or long-term repeat. Short-term repeat means the customer made additional purchases shortly after the initial acquisition for the same holiday. All subsequent future transactions are considered long-term repeat. Because customers won’t have the same number of repeat transactions and because the transactions will happen at very different times, we decided to group the repeat purchases also by quarter and not by number (Repeat purchases in Q1, Q2, ... instead of 1st, 2nd, … repeat purchase).

While it’s very straightforward to assign all the clicks that led to a conversion, the rest is a bit trickier. To get a more accurate picture of our cost to re-engage existing customers, we had to link all clicks not resulting in a purchase to the correct customer cohort and quarter. For a platform like GetYourGuide where logging-in isn’t necessary to browse the website, this can be challenging and requires us to link other identifiers, like device IDs.

The results

The chart below summarizes the findings. The chart shows the development of our return on spend over time for different cohorts. It clearly demonstrates that re-acquiring existing customers becomes cheaper over time but reaches a plateau after some period. This makes sense because as customers get to know the company and its product over time, they require less engagement via paid channels.

Numbers are removed for confidentiality.

Numbers are removed for confidentiality.

As mentioned earlier, GetYourGuide uses various paid and unpaid marketing channels to engage people. While a large share of acquisition comes through paid channels, ideally customers come back to our website through different channels over time reducing the acquisition cost. The following graph shows the share of the different channels from the initial acquisition and a long-term period across 3 cohorts. The graph clearly illustrates the shift between the channels. While the channel corresponding with the orange section is the most important for initial acquisition, the channels corresponding with the green and blue sections gain a much higher share in the long run.

Numbers are removed for confidentiality.

Numbers are removed for confidentiality.

With this analysis, we have a clear picture of what we pay for our customers over time and through which channels they visit our website. With a certain profitability level in mind, this allows us to adjust marketing measures accordingly and be more aggressive or conservative for different customer groups. We can also monitor the channel mix and react quickly in case it deviates from the plan.

Next to the analysis of the overall visitor and customer base, we also broke the data down by different dimensions, for example by the channel through which customers came to our website for the first time or by the country the customer lives in. Indeed, customers from developing markets are more expensive to re-acquire than customers in our mature markets, but those who become acquainted with GetYourGuide through our amazing mobile app tend to come back to us without many additional marketing activities.

The knowledge of acquisition costs for different customer segments allows for more detailed steering of marketing activities. We can also identify the segments that need more focus and model future company performance under the assumption that our less-developed markets will catch up with the mature markets.

Final notes

Having a clear picture of customer acquisition costs — both overall and broken down by relevant segments — is necessary for our internal marketing and operations specialists to optimize their efforts and increase profitability. They can allocate budget to those ads, keywords, campaigns, or channels that work well and remove or improve those that don’t. Increased profitability allows the company to invest more which results in greater customer value. Furthermore, knowledge of customer acquisition costs helps our investors gain a better picture of the performance and value of the company.

And it doesn’t stop here. There are still many great follow-up topics for Data Analysts and Scientists like extending the analysis from a single purchase to the whole estimated lifetime value of a customer or creating more detailed customer segments for even better optimization and an overall profitability increase.

Interested in joining Corinne on our Data team? Check out our open positions.





Paris: working in an iconic city

Paris: working in an iconic city

Come to our meetup with Kotlin User Group Berlin

Come to our meetup with Kotlin User Group Berlin