Segmentation: strategy before algorithms

TL;DR

Difficulty: Intermediate

A segment is a group that responds differently to something you can actually change, not a cluster or a demographic bracket.

  • Start from a decision you would take differently, and set at least one of the four Ps per segment.
  • Five tests: identifiable, substantial, reachable, responsive, stable.
  • Do the obvious a priori split first (gift or self purchase), then look for structure inside each half.
  • Segment on behaviour, use demographics only as descriptors, and let eta squared show which variables separate the groups.
  • One churn model per segment beat the pooled model in the example, about 0.78 against 0.71 AUC, with no new data.

Most segmentation projects start with an algorithm and end with a slide of clusters nobody uses. Here I take an invented Cork hamper shop from one average customer to four real segments: the strategic question, the five tests, the a priori split, a little maths that settles which variables belong, a four Ps table and a churn model per segment. Chapter 13 of 21 in the Marketing Analytics series.

The hamper shop that thought it had one customer

Priya runs Northgate Hampers, an invented online hamper shop in Cork at northgatehampers.example. For its first year the reporting treated every buyer as the same person: one conversion rate, one average order value, one churn number.

That single customer was a fiction. Behind the average sat a woman in Cork ordering a cheese hamper for herself every seven weeks, an office manager in Limerick ordering 30 Christmas hampers on invoice in late October, and a man in Galway who orders exactly once a year, on 22 December at 11.40pm, with next day delivery and in a mild panic. Sending all three the same "10% off this weekend" email is not marketing. It is noise with a discount attached.

Segmentation is the discipline of admitting that your customers are not one person, and deciding on purpose how many people they are. This chapter is the strategy. The algorithms come in the next one. Start with the algorithm and you get clusters. Start with the strategy and you get segments. The difference costs real money.

Northgate Hampers, its customers and every number in this chapter are made up, so that I can show each step. The method is the one I use.

Where this chapter sits in the series

This is chapter 13 of 21 in my Marketing Analytics series, in part three, the interrelationship techniques, where no single variable is the target. The previous chapter, principal components and factor analysis for marketers, reduced many correlated variables to a few dimensions, often the preparation for this one. The next, tools of segmentation: k means, latent class analysis and going beyond RFM, gets into the machinery. This one is the thinking to do before you touch any of it. Every basic idea used here, from the mean to the spread, is built from scratch on the Foundations page.

What a segment is, and what it is not

The idea is older than any algorithm. Wendell Smith set out market segmentation as a deliberate strategy in the Journal of Marketing in 1956: instead of bending demand towards one product, you adjust the offer to the different groups inside the market.1

My working definition: a segment is a group of customers who respond similarly to the same marketing action, and differently from other groups.

"Respond" means the segment is defined by what people do when you act, not by what they look like. "The same marketing action" means the split must matter for a decision you can actually take: a different product, price, message or channel. "Differently from other groups" means that if two of your segments would react the same way to everything you might plausibly do, you have one segment with two names.

What a segment is not: a demographic bracket, a cluster an algorithm produced, a persona from a workshop, or a filter in your email tool. Any of these can become a segment. None is one by default. I go into the demographic trap in segmentation is not demographics. The short version is that age and Eircode describe who somebody is, not what they want from you.

The strategic reason to segment is that the four Ps, the marketing mix E. Jerome McCarthy laid out in 1960,2 can be set per segment:

  • Product: range, bundles, features.
  • Price: level, structure, the discounting rule.
  • Promotion: message, timing, offer.
  • Place: channel, checkout, sales route.

A business that cannot name one of the four Ps it would set differently for a segment does not need that segment. It needs a nicer chart.

An example: Priya considers "customers aged 35 to 44". Would she change the range, the price, the message or the channel for them? Four noes, so it is a descriptor, not a segment. "Customers who order within four days of an occasion" gets a yes straight away: they need a delivery promise on the product page.

Five tests before a segment deserves the name

I run every proposed segment through five tests, strictly, because a segment that fails one of them quietly wastes budget for years. They follow the criteria for effective segmentation in Wedel and Kamakura's standard text on the subject.3

Identifiable. Can I tell, for each individual customer in the database, which segment they belong to, with a rule or a model that runs on the data I have every week? A segment called "people who value craftsmanship" is unidentifiable unless I can score it from behaviour.

Substantial. Is the segment big enough, in revenue or margin, to justify a different treatment, with its own creative, pricing debates and quality checks? A segment of 200 customers worth €40 a year does not pay for that, however distinctive it is.

Reachable. Can I get a different message or offer in front of this segment without also hitting the others? If your only channel is a homepage banner, you have one segment, whatever the model says.

Responsive. Does the segment react differently to the treatment I have in mind? This is the one people skip. It needs a test, or at least a natural experiment in the history, showing that segment A moved on delivery promises and segment B did not.

Stable. Does the segment stay recognisable for long enough to build something around it? If a third of the members move to another segment every month, the segment is a mood, not a market.

Worked example: one candidate, five tests

Priya's candidate is "corporate planners", businesses buying hampers in bulk for staff or clients.

  1. Identifiable: yes. Every corporate order carries a company name and a purchase order number.
  2. Substantial: yes. 992 customers, but half the revenue (the arithmetic is further down).
  3. Reachable: yes. They can be phoned and emailed without the private buyers ever seeing it.
  4. Responsive: not yet known. Priya believes a September call brings orders forward, but nobody has tested it against a holdout group, a random share of the segment that gets no call.
  5. Stable: yes. The same companies order in October and November year after year.

Four passes and one open question, so the first job is the test.

A priori or post hoc: two roads to the same place

Segmentation methods split into two families by when the segments are decided.4

An a priori segmentation is one you decide before looking at the data, because the strategy demands it. For a hamper shop the obvious a priori split is gift purchase versus self purchase. The business dictates it: a gift has a recipient, a deadline and a message card. A self purchase has none of those.

A post hoc segmentation is one you discover in the data. Inside the gift buyers, the a priori split says nothing about the man on 22 December versus the woman who orders her mother's birthday hamper in the same week every March. Those groups emerge from timing, frequency and basket, and they would not have occurred to anyone from strategy alone.

The two are not rivals. My rule: do the a priori split first when the business logic is overwhelming, then look for post hoc structure inside each half. Running an algorithm on everybody and hoping the gift versus self distinction falls out usually produces clusters that are half gift, half self and useless for both.

An example: Northgate Hampers flags an order as a gift when the delivery and billing addresses differ, or there is a gift message or a requested delivery date. The example assumes Priya checked that rule against an optional "Is this a gift?" question at checkout and found it right about nine times in ten. Good enough to split first, and the post hoc work then runs once on each half.

From strategy question to activation

Here is the process I follow. It ends where it starts, because the governance step feeds the next strategic question.

The segmentation processA top to bottom flow from the strategic question through the a priori split, basis variables, the customer table, the algorithm, profiling and the five tests, to naming, the four Ps per segment and governance, which feeds the next question.Write down the strategic questionIs there an obvious a priori split?yesSplit first, then work inside each halfChoose the basis variablesBuild one row per customerRun the algorithmProfile each groupDoes every group pass the fivetests?noNo: change the basis variables and goagainyesName, document and score every customerSet the four Ps per segmentGovern and rescore, then back to thequestion

The diagram reads from top to bottom: strategy first, the algorithm in the middle. A failed test sends you back to the basis variables, and governance sends you back to the question.

The strategic question has to be specific. "We want to understand our customers better" is not one. "Which customers should get a paid delivery promise, and which a loyalty perk instead of a discount?" is, and it already tells you which variables matter.

Basis variables are the ones you segment on. Descriptor variables describe and find the segments afterwards. Once the segments pass, name them, write a one page definition for each, score every customer, and only then talk about creative.

Which variables to segment on: behaviour first

Segment on what people did before what they said, and on what they said before what they are.

  1. Transactional behaviour: how often, how recently, how much, which categories, what time of year, whether it was a gift. The first three are the classic recency, frequency and monetary value (RFM) measures from direct marketing, and past behaviour of this kind is among the strongest predictors of future behaviour.5 It sits in every shop database.
  2. Engagement behaviour: opened, clicked, visited, abandoned, contacted support. Weaker and noisier, but useful for timing.
  3. Stated needs and attitudes: a short survey attached to a purchase. Needed when the strategy is about positioning, because behaviour only tells you what people did with the range you had.
  4. Demographics and firmographics: descriptors only, to help media buying find the segment. Never basis variables unless a law or a logistics constraint forces the split.

An example: for Priya's question, the basis is orders per year, average order value, units per order, days between order and occasion, December share of orders and the gift flag. Age band and region are computed afterwards, only to describe the segments.

Is the split real? A little maths

One ratio saves a lot of arguments. Take any basis variable, say orders per year. Its total variation across all customers splits cleanly into variation within segments and variation between segments:

∑i=1N(xi−xˉ)2=∑k=1K∑i∈Sk(xi−xˉk)2+∑k=1Knk(xˉk−xˉ)2\sum_{i=1}^{N}(x_i - \bar{x})^2 = \sum_{k=1}^{K}\sum_{i \in S_k}(x_i - \bar{x}_k)^2 + \sum_{k=1}^{K} n_k(\bar{x}_k - \bar{x})^2

Here xix_i is the value for customer ii, xˉ\bar{x} the overall mean, SkS_k the set of customers in segment kk, xˉk\bar{x}_k that segment's mean and nkn_k its size, with KK segments and NN customers in total. The left side is the total sum of squares, SStotalSS_{\text{total}}. The first term on the right is the within segment sum of squares, the spread the segments leave unexplained. The second is the between segment sum of squares, SSbetweenSS_{\text{between}}, the spread the segment labels account for. The groundwork is in Foundations: the mean and Foundations: spread.

The share explained is eta squared:6

η2=SSbetweenSStotal\eta^2 = \frac{SS_{\text{between}}}{SS_{\text{total}}}

Here η2\eta^2 (eta squared) is the share of the variation that segment membership explains, and SSbetweenSS_{\text{between}} and SStotalSS_{\text{total}} are the sums of squares from the formula above. It is the same idea as R2R^2 in regression, see Foundations: correlation and Foundations: spread.

Eta squared runs from 0 to 1. Near 0 the segments do not differ on this variable at all. Near 1, knowing the segment almost tells you the value. For a good behavioural segmentation I expect eta squared above 0.3 on the basis variables, and I am pleased above 0.5. If age band scores 0.03, age band is telling you it does not belong in the basis.

Worked example: eta squared for six customers

Six customers in two segments. Segment A orders 1, 2 and 3 times a year, a mean of 2. Segment B orders 5, 6 and 7 times, a mean of 6. The overall mean is 24/6=424 / 6 = 4.

The total sum of squares takes each value against the overall mean of 4: SStotal=9+4+1+1+4+9=28SS_{\text{total}} = 9 + 4 + 1 + 1 + 4 + 9 = 28. The between segment sum of squares takes each segment mean against 4, weighted by its three customers: SSbetween=3×(2−4)2+3×(6−4)2=24SS_{\text{between}} = 3 \times (2 - 4)^2 + 3 \times (6 - 4)^2 = 24. The within segment part is (1+0+1)+(1+0+1)=4(1 + 0 + 1) + (1 + 0 + 1) = 4, and 24+4=2824 + 4 = 28, so the decomposition holds. Eta squared is 24/28=0.8624 / 28 = 0.86.

The segment label explains 86% of the variation in orders per year. Give the same six customers ages of 34, 51 and 42 in A and 45, 38 and 49 in B, and eta squared for age comes out at 0.02. The segments are about behaviour, and age has nothing to say about them.

Is the segment worth treating differently?

The second formula is the substantiality test in one line. The value of treating segment kk differently is:

Vk=nk⋅mk⋅(rktreated−rkcontrol)V_k = n_k \cdot m_k \cdot \left(r_k^{\text{treated}} - r_k^{\text{control}}\right)

Here VkV_k is the value of the different treatment for segment kk, nkn_k the number of customers in the segment, mkm_k the margin per responding customer, rktreatedr_k^{\text{treated}} the response rate with the segment specific treatment and rkcontrolr_k^{\text{control}} the response rate with what you do today. The bracket is the lift. It is an expected value, response rate times margin times headcount, see Foundations: expected value.

If VkV_k does not comfortably cover the cost of building and running the treatment, merge the segment into its nearest neighbour. This formula is also why "responsive" needs a test: the bracket is the only part you cannot read from history.

An example, with the example's own assumptions. A restock email for the 3,348 regular treaters, people who buy for themselves, is expected to lift the response rate from 18% to 22%, at €12 margin per responding customer. A September phone call to the 992 corporate planners is expected to lift the share who reorder from 70% to 75%, at €300 margin per order. For the treaters V=3,348×12×0.04=€1,607.04V = 3{,}348 \times 12 \times 0.04 = €1{,}607.04. For the corporate planners V=992×300×0.05=€14,880V = 992 \times 300 \times 0.05 = €14{,}880.

The treater email pays if it costs less than about €1,600 to send. The corporate calls are worth nearly ten times as much and justify a person's time. Both brackets are guesses until a holdout group confirms them.

The four groups at Northgate Hampers

Two years of orders, 12,400 customers, one row each with the basis variables above. Four groups came out and survived the five tests.

SegmentCustomersShare of customersOrders per yearAverage orderShare of revenueTypical timing
Deadline gifters5,20842%1.3€6815%One to four days before an occasion, heavy in December
Occasion loyalists2,85223%2.6€5914%The same weeks every year
Regular treaters3,34827%5.8€3421%Every six to eight weeks, for themselves
Corporate planners9928%1.4€1,12050%October and November, on invoice

The revenue share follows from the other columns: customers times orders per year times average order. The deadline gifters bring 5,208×1.3×68=€460,3875{,}208 \times 1.3 \times 68 = €460{,}387 of the €3,113,566 total, 14.8%. The corporate planners bring 992×1.4×1,120=€1,555,456992 \times 1.4 \times 1{,}120 = €1{,}555{,}456, 50.0%.

Deadline gifters are the biggest group and the least valuable per head, about €88 a year each. They buy once, late, and pay for speed. They are not disloyal, they just do not think about hampers until the calendar forces them to. Occasion loyalists look similar on one order but come back, to the week, every year. Regular treaters are the self buyers: small baskets, high frequency. Corporate planners order in bulk with a purchase order number and a deadline of "before the office party".

Share of revenue by segmentShare of annual revenue by segment at the invented Northgate Hampers: deadline gifters 15%, occasion loyalists 14%, regular treaters 21%, corporate planners 50%.Share of revenue by segment0%25%50%75%100%15%Deadlinegifters14%Occasionloyalists21%Regulartreaters50%CorporateplannersShare of revenue in %Segment

The horizontal axis shows the four segments, the vertical axis each one's share of annual revenue. One customer in 12 carries half the money, and the biggest group carries the least. A single average order value hides both facts.

The eta squared values confirm that the split is real and show which variables do the work:

VariableEta squaredWhat it says
Orders per year0.61Frequency separates the groups strongly
Units per order0.58Mostly the corporate group standing apart
Days before the occasion0.44Deadline gifters versus everyone else
Average order value0.39Corporate high, treaters low
December share of orders0.33Seasonality is real, but not the whole story
Age band0.03A descriptor at best

Age was never in the basis. It is computed afterwards to show why it should not be.

One churn model for everyone, or one per segment

Here segmentation starts improving the statistics. Take a single logistic churn model for all 12,400 customers, built the way the logistic regression chapter describes. In the example it reaches an AUC of 0.71 on a holdout year. The AUC, the area under the ROC curve, is the probability that the model ranks a randomly chosen churner above a randomly chosen customer who stays: 0.5 is a coin toss, 1.0 is perfect.7

The trouble is that "churn" does not mean the same thing in each group, and neither do the predictors. A regular treater who has not ordered in 120 days is gone. An occasion loyalist who has not ordered in 120 days is between birthdays. A corporate planner is only at risk if 15 December passes without an order. Pooling them forces one definition and one set of coefficients onto four different processes.

So the example fits four models, one per segment, each with its own churn window and predictors:

SegmentChurn definitionPooled model AUC within segmentSegment model AUCChurners in the top tenth, pooledChurners in the top tenth, segment model
Deadline giftersNo order within 14 months0.690.7424%29%
Occasion loyalistsLast year's occasion week missed by 60 days0.720.8127%38%
Regular treatersNo order within 120 days0.740.8329%41%
Corporate plannersNo order by 15 December0.660.7922%36%

The pooled model is weakest where the money is, in the corporate group, because 992 customers cannot pull the coefficients of a 12,400 row model their way. The corporate model uses variables the pooled one barely noticed: a quote requested in September, a new contact person, a complaint about last year's delivery. Its AUC rises by 0.13. For the treaters the gain comes from the short churn window.

The last two columns are the operational version. Take the riskiest tenth of customers by predicted risk. With no model it would hold about 10% of the leavers. The segment models put 29% to 41% of them there.

Churn model AUC, pooled versus one model per segmentAUC on the holdout year: the pooled model 0.71, the segment models 0.74 for deadline gifters, 0.81 for occasion loyalists, 0.83 for regular treaters and 0.79 for corporate planners.AUC on the holdout year0.000.250.500.751.000.71Pooled0.74Deadlinegifters0.81Occasionloyalists0.83Regulartreaters0.79CorporateplannersAUCModel

The horizontal axis shows the pooled model, then the four segment models. The vertical axis is the AUC on the holdout year, where 0.5 would be guessing. Every segment model beats the pooled one, most of all where the pooled model had the least data.

A size weighted blend of the segment AUCs is a rough summary, not a proper pooled statistic, but it gives the feel:

AUCblend=∑k=1KnkN AUCk\text{AUC}_{\text{blend}} = \sum_{k=1}^{K} \frac{n_k}{N}\,\text{AUC}_k

Here AUCblend\text{AUC}_{\text{blend}} is the blended score, KK the number of segments, nkn_k the number of customers in segment kk, NN the total number of customers, so nk/Nn_k / N is the segment's share, and AUCk\text{AUC}_k the segment model's AUC. It is a weighted mean, see Foundations: the mean.

With the example's shares:

0.42×0.74+0.23×0.81+0.27×0.83+0.08×0.79=0.7840.42 \times 0.74 + 0.23 \times 0.81 + 0.27 \times 0.83 + 0.08 \times 0.79 = 0.784

The same blend of the pooled model's within segment AUCs gives 0.42×0.69+0.23×0.72+0.27×0.74+0.08×0.66=0.7080.42 \times 0.69 + 0.23 \times 0.72 + 0.27 \times 0.74 + 0.08 \times 0.66 = 0.708. So like for like, from 0.71 to about 0.78, without a single new data source, only by admitting that four processes are not one.

The general lesson: when a model of a dependent variable underperforms on a mixed population, segment first and fit inside. I described the operational side of this in predictive automation using behavioural segments, where the segment scores drive the automations directly.

The four Ps per segment

This is the table the whole exercise exists to produce. If you cannot fill it in, the segmentation is not finished.

SegmentProductPricePromotionPlace
Deadline giftersBestsellers held in stock, gift card included, nothing that slows dispatchFull price, paid next day and Saturday deliveryDelivery countdown on site, occasion calendar emails two weeks aheadSearch ads on urgency terms, mobile checkout with saved addresses
Occasion loyalistsLast year's hamper as a one click reorder, an upgrade suggestionFull price, a loyalty perk instead of a discountA reminder three weeks before last year's order date, naming the recipientEmail and the account page, nothing paid
Regular treatersSmaller boxes, new arrivals, a subscription optionBundle pricing and a subscription saving, the only segment where a price cut paysNew product news, tasting notes, restock alertsInstagram, newsletter, on site recommendations
Corporate plannersBranded cards, volume tiers, staggered delivery to many addressesVolume tiers, invoice payment, quote basedA call in September, a printed catalogue, a case studyLinkedIn, direct sales, a quote form

Read across a row and you see a coherent proposition for one kind of customer. Read down a column and you see why a single homepage cannot serve all four.

An example of the payoff: the discount decision alone pays for the analysis. In the example only the treaters respond to a price cut with more volume. For the other three, a discount is margin given away to people who were going to buy anyway. That is the "responsive" test in action, confirmed with a holdout group, not asserted.

Running it yourself

The data you need: two years of completed orders with a customer key, order date, total, item count, delivery versus billing address, and any gift flag or message. One row per customer is the target shape. In Solidus the orders table already holds the customer, state, completion date, total, item count and both address ids,8 so something like this builds the basis variables on PostgreSQL:9

with orders as (
  select o.user_id, o.completed_at, o.total, o.item_count,
         (o.ship_address_id <> o.bill_address_id) as is_gift
  from spree_orders o
  where o.state = 'complete'
    and o.user_id is not null
    and o.completed_at >= now() - interval '24 months'
)
select user_id,
       count(*) * 12.0 / 24 as orders_per_year,
       avg(total) as avg_order_value,
       avg(item_count) as units_per_order,
       avg(case when extract(month from completed_at) = 12 then 1 else 0 end) as december_share,
       avg(case when is_gift then 1 else 0 end) as gift_share
from orders
group by user_id;

Guest orders are left out, and comparing address ids is only a rough gift flag. The gift message is a better one.

Then the algorithm, which is the next chapter, then the profile, then eta squared per variable to check the split is real. Here is the eta squared function, run on the six customers from the worked example:

import pandas as pd

def eta_squared(df, var, seg):
    grand = df[var].mean()
    ss_total = ((df[var] - grand) ** 2).sum()
    groups = df.groupby(seg)[var]
    ss_between = (groups.size() * (groups.mean() - grand) ** 2).sum()
    return ss_between / ss_total

customers = pd.DataFrame({
    "segment":         ["A", "A", "A", "B", "B", "B"],
    "orders_per_year": [1, 2, 3, 5, 6, 7],
    "age":             [34, 51, 42, 45, 38, 49],
})

for var in ["orders_per_year", "age"]:
    print(var, round(eta_squared(customers, var, "segment"), 2))

It prints orders_per_year 0.86 and age 0.02, the figures worked out by hand above. The per segment churn models are the same loop again, one fit per group with its own churn flag.

How long it takes: with clean order data, the first defensible segmentation is two weeks of work, most of it profiling and the five tests rather than computation.

Checks before you trust it:

  • The segments reproduce on a random half of the customers.
  • Eta squared on the basis variables sits well above 0.3.
  • Every segment passes the five tests, in writing.
  • At least one four Ps difference per segment has been tested against a holdout group.

Segmenting customers is profiling

Sorting customers into segments from their personal data is profiling in the sense of Article 4(4) of the GDPR: automated processing of personal data to evaluate or predict aspects such as a person's preferences, interests or behaviour.10 In Ireland the regulator is the Data Protection Commission (DPC).11 The European guidance on profiling, written by the Article 29 Working Party and endorsed by the European Data Protection Board, describes profiling as placing people into a certain category or group, and its own example is a business that places people into segments.1213

Two practical consequences. Your privacy notice should say that you group customers by their purchase behaviour, and what for. And an objection to direct marketing covers the profiling done for it as well, under Article 21(2) and (3), and the DPC's guidance says the processing has to stop as soon as the objection arrives.1415 An example: a corporate planner at Northgate Hampers asks for no more marketing calls. Her order history stays for invoicing, but she comes off the September call list and out of the scoring that feeds it. Where a segment decides more than marketing, for example who gets credit terms, get proper advice.

Governance: segments age

A segmentation is a living asset, and most die of neglect. Customers migrate: a deadline gifter becomes an occasion loyalist the moment she orders for the same birthday twice. The rules I put in place are dull and they work.

  • Every customer carries a segment ID and a segment version in the CRM, and the scoring runs monthly.
  • Migration between segments is a reported number. When more than about 10% move in a quarter, I look at whether the segments or the customers changed.
  • The definitions are refitted once a year, and a new version is only adopted if it beats the old one on eta squared and the five tests.
  • Each segment has an owner who can say in one sentence what it is for.
  • Segments get retired. If VkV_k drops below the running cost for two quarters, the segment merges into its neighbour and its creative stops.

An example: in Priya's quarterly report 9% of customers changed segment, mostly deadline gifters becoming occasion loyalists. Below the line and in the right direction, so no refit.

Pitfalls

Segmenting on what is available rather than what matters. Age, gender and county are in every export, so they end up in the basis, and nobody can later explain why the segments do not behave differently.

Too many segments. Eight segments feel thorough and are operationally impossible: four Ps times eight is 32 decisions to maintain. Three to five is the range where a small team can actually run different treatments. If the algorithm insists on more, the basis variables are probably noisy.

Confusing clusters with segments. An algorithm always returns groups, even on random data. A cluster becomes a segment only when it passes the five tests and has a row in the four Ps table.

Declaring responsiveness without a test. The four Ps table is a set of hypotheses until a holdout group says otherwise. I have seen "price sensitive" segments that bought more at full price once the discounts stopped. Test the bracket in VkV_k.

How I do this for clients

I need the order history with a customer key, two years if you have it, plus whatever your email or CRM tool exports. If you run Solidus or another Rails shop I can usually pull the one row per customer table myself in a day.

It starts with the free workshop: we write down the strategic question and the a priori splits the business already knows, and agree what "different treatment" would mean. Then two weeks of real work on me before you commit to anything: the customer table, the splits, the five tests and a first draft of the four Ps table. If you do not think the segments are real at the end of that, we part there.

If we continue, you get a one page definition for each segment, a scored customer list with segment ID and version that loads into your CRM, the scoring SQL or Python so it runs in your own warehouse without me, a decision memo per segment with one number (the value VkV_k) and one risk, and a dashboard that answers one question: how are the segments moving? Where it pays, per segment models replace the pooled ones, as in the churn example above.

Your raw data stays yours, and the terms for code and models are in the analytics and data science terms. The analytical work is described on the Data Science page, the activation side, where the four Ps become campaigns and tests, under growth hacking plus, and the commercial terms, including the commission based option, on the pricing page. One accountable person, honest numbers with error margins, no vanity metrics.

Questions to ask your team or agency

  • Which decision would you take differently for each segment, beyond the message?
  • Can every customer in the database be assigned to exactly one segment by a rule you can run next Monday?
  • What is eta squared on the basis variables, and did anybody compute it for the demographic variables as a control?
  • Which differences in response between segments have actually been tested against a holdout group, and which are assumptions?
  • What does churn mean for each segment, and does the churn model know the difference?
  • When were the segments last rescored, how many customers migrated, and who owns each segment?

The series is inspired by Mike Grigsby's Marketing Analytics.16 The explanations, examples and numbers here are my own.

Footnotes

  1. Wendell R. Smith, Product Differentiation and Market Segmentation as Alternative Marketing Strategies, Journal of Marketing, vol. 21, no. 1, 1956, pp. 3 to 8 (EconBiz record), https://econbiz.de/Record/product-differentiation-and-market-segmentation-as-alternative-marketing-strategies-smith-wendell/10002821218

  2. E. Jerome McCarthy, Basic Marketing: A Managerial Approach, Richard D. Irwin, 1960 (Internet Archive), https://archive.org/details/basicmarketingma0000mcca_n8s6

  3. Michel Wedel and Wagner A. Kamakura, Market Segmentation: Conceptual and Methodological Foundations, second edition, chapter 1, The Historical Development of the Market Segmentation Concept (the criteria for effective segmentation), Springer, 2000, https://link.springer.com/chapter/10.1007/978-1-4615-4651-1_1

  4. Michel Wedel and Wagner A. Kamakura, Market Segmentation: Conceptual and Methodological Foundations, second edition, chapter 3, Segmentation Methods, Springer, 2000, https://link.springer.com/chapter/10.1007/978-1-4615-4651-1_3

  5. Peter S. Fader, Bruce G. S. Hardie and Ka Lok Lee, RFM and CLV (iso value curves for customer base analysis), Journal of Marketing Research, 2005 (authors' working paper), https://www.brucehardie.com/papers/rfm_clv_2005-02-16.pdf

  6. Daniël Lakens, Calculating and reporting effect sizes to facilitate cumulative science: a practical primer for t tests and ANOVAs, Frontiers in Psychology, vol. 4, 2013, https://www.frontiersin.org/articles/10.3389/fpsyg.2013.00863/full

  7. Google, Classification: ROC and AUC, Machine Learning Crash Course, Google for Developers, https://developers.google.com/machine-learning/crash-course/classification/roc-and-auc

  8. Solidus contributors, core database schema (spree_orders), Solidus source code on GitHub, https://github.com/solidusio/solidus/blob/main/core/db/migrate/20160101010000_solidus_one_four.rb

  9. PostgreSQL Global Development Group, Date/Time Functions and Operators, PostgreSQL documentation, https://www.postgresql.org/docs/current/functions-datetime.html

  10. Regulation (EU) 2016/679 (General Data Protection Regulation), Article 4, definitions, point 4 (profiling), EUR Lex, https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679

  11. Data Protection Act 2018 (Ireland), section 10, establishment of the Data Protection Commission, Irish Statute Book, https://www.irishstatutebook.ie/eli/2018/act/7/section/10/enacted/en/html

  12. Article 29 Data Protection Working Party, Guidelines on Automated individual decision making and Profiling for the purposes of Regulation 2016/679, WP251rev.01, section II.A (Profiling), revised and adopted 6 February 2018, endorsed by the European Data Protection Board, European Commission, https://ec.europa.eu/newsroom/article29/items/612053

  13. European Data Protection Board, Endorsed WP29 Guidelines, EDPB, https://www.edpb.europa.eu/our-work-tools/general-guidance/endorsed-wp29-guidelines_en

  14. Regulation (EU) 2016/679 (General Data Protection Regulation), Article 21(2) and (3), right to object to direct marketing, EUR Lex, https://eur-lex.europa.eu/legal-content/EN/TXT/HTML/?uri=CELEX:32016R0679

  15. Data Protection Commission, Right to object to processing of personal data (Article 21 GDPR), dataprotection.ie, https://www.dataprotection.ie/en/individuals/know-your-rights/right-object-processing-personal-data-article-21-gdpr

  16. Mike Grigsby, Marketing Analytics: A Practical Guide to Improving Consumer Insights Using Data Techniques, Kogan Page, 2022, ISBN 9781398608191, https://www.netgalley.co.uk/catalog/book/267990

If your customer base is still one average and one churn number, bring two years of order data, or just the question you are trying to answer, to my free workshop. We write down the decision you would take differently per segment and the splits you already know about. Then I put two weeks of work in on me, building the segments, running the five tests and drafting the four Ps table. If the groups are not real, you hear it from me first, with the numbers.