LifeCycle Grid
Multiple hurdles on a Recency × Frequency map. Novo’s point: look at the data first, then place walls where the LifeCycle actually shifts — not a generic 30/60/90 template pretending to be “custom.”
CSV the scorer can actually read
One rolled-up row per customer (not raw order lines). Header row required. Column names are flexible.
Recency
Last value-event date or days since that event.
last_activity_date · last_order_date · last_purchase_date
— or — recency_days · days_since_last_order
Use YYYY-MM-DD (e.g. 2026-07-15). Signup date alone is wrong — Recency = last purchase/visit/gift.
Frequency
Count of repeating value events for that customer.
frequency · orders · order_count · number_of_orders · visits · units
Integer. Lifetime or consistent window — just be consistent across rows.
Customer ID
customer_id · id · email · user_id
Optional for the grid math; required if you’ll export / act on names.
Monetary
monetary · revenue · ltv · total_spend · total_spent · sales
Not required for R×F LifeCycle Grid walls. Handy if you continue into RFM tools.
customer_id,last_activity_date,frequency,monetary C001,2026-07-20,12,4200 C002,2026-06-01,4,680 C003,2025-12-15,1,49
- Roll up first: each customer once — max(last date), sum(orders), sum($).
- Headers: case-insensitive; spaces/dashes OK (Last Order Date works).
- Not order-line exports unless you aggregate offline first.
- Shopify-ish names accepted: Number of Orders, Total Spent, Last Order Date.
Natural: Fisher–Jenks (Recency) + gap/Jenks (Frequency) on this file. Manual: you type walls (defaults are only a starting template).
Ch 22: place boundaries where behavior shifts. Predefining walls before seeing the file is a template grid — not a LifeCycle Grid. Scoring needs a readable Recency + Frequency file first.