A Shopify store was sending the same offers to everyone. This project scored every customer on loyalty and buying frequency, and sorted them into 16 clear groups — each with its own plan.
RETENTION // SHOPIFY → SQL SCORING → LOOKER
The big grid is the main view: every customer sits in one of 16 boxes.
The highlighted boxes are the most valuable groups to target next.
The list on the right shows the marketing plan running for each group.
Over 8,000 customers were treated the same way. Loyal big spenders got the same 10% discount as one-time buyers, and customers about to leave heard nothing at all.
We scored every customer on loyalty and how often they buy, then placed them in a 4×4 grid. Each of the 16 boxes has a count, a value and a marketing plan.
Customer data comes from Shopify. SQL scores each customer on loyalty and buying frequency every night. The scores fill the 4×4 grid in Looker Studio, and the groups are sent to Meta and Klaviyo for targeting.
Customer-level orders, AOV, refunds, recency.
Loyalty + frequency scores, refreshed nightly.
4×4 crossing in BigQuery-style marts — counts, values, movement.
Matrix hero page + segment, behaviour and plays pages.
Segment exports to ads + email · pocket-shift alerts.
Two more pages: the group table and the alerts page. Built in HTML with sample data.
RETENTION // SIZE × VALUE × PLAY
| SIZE | AVG AOV | LAST ORDER | PLAY | ST | |
|---|---|---|---|---|---|
| HIGH LOY · LOW FREQ | 812 | $91 | 38D | BUNDLE OFFER | ● |
| HIGH AOV · 1 ORDER | 966 | $118 | 52D | WIN #2 FLOW | ● |
| LAPSED VIP | 214 | $132 | 96D | CONCIERGE | ● |
| AT-RISK | 1,240 | $64 | 74D | WINBACK | ● |
| DORMANT 90D+ | 1,604 | $58 | 140D | LAST-CHANCE | ● |
AUTOMATION // POCKET-SHIFT RULES → SLACK
96 customers slid from LOYAL to AT-RISK this week. Winback flow auto-enrolled.
18 lapsed VIPs reordered after the concierge touch; $2.4K recovered.
Nightly loyalty + frequency scoring ran 03:00. 8,412 customers rescored.
The matrix moved: VIP grew to 49 net adds while AT-RISK absorbed 96 sliders — winback caught them same-day.
High-AOV single buyers remain the richest pocket per head; the WIN #2 flow is out-earning every campaign per send.
One big customer list became 16 groups, each with a count and a plan.
Loyal-but-infrequent buyers and big one-time spenders — the most valuable groups — are now targeted directly.
Customers going quiet are caught by a set rule and an automatic email flow, not by luck.
NOTE: CLIENT DETAILS GENERALISED · ALL NUMBERS ARE SAMPLE DATA · DASHBOARDS ARE HTML RECREATIONS
If your whole list gets the same discount, this grid will show you who deserves better.