Overview
Customer base · purchase frequency · new vs returning trend
Customers
—
Orders
—
Revenue
—
AOV
—
Orders / Customer
—
One-time vs Repeat
Share of customer base by lifetime order count
Purchase Frequency Buckets
How many customers fall into each lifetime-order range
New vs Returning — last 24 months
Each month: first-time buyers vs returning buyers
Year × Month — active customers
Distinct customers who ordered in each month, with the new-customer share shaded in.
Full history — the date range does not apply to this grid (a year × month grid clipped to the
selected window is just a table). Page / product / TMC still scope it. Web & direct only,
identity-deduped.
Yearly customer performance
The customer-side companion to Executive's Yearly Performance table.
Retained = of the previous year's active customers, the share that ordered again this year;
churn is its complement. Repeat counts customers with 2+ orders within that year.
The first year has no retention figure, and the current year is partial.
Segments
RFM grades + 16 behavioral segments · click any to drill in
RFM Grades
Recency × frequency · 6 buckets matching the customer-grading spec
Behavioral Segments
16 groups across Active · At-Risk · Cooling · Dormant · Lost · Click to view customers
Retention & Cohorts
Quarterly cohort heatmap · share of each cohort still buying N quarters later
⚠️ Waiting for stock, not churned
Every other card on this tab treats a long gap since the last order as churn. For a large share of
customers that is wrong: the product they bought was not on sale. A product with no order line for
60+ days was not sellable, so a customer whose last order contained it has had nothing to come back for.
Read this card before acting on any churn number. Out-of-stock windows are derived from sales gaps,
not a stock feed — expected return dates are a business fact this dashboard does not hold.
Lapsed >90d
—
Waiting for stock
—
Real churn
—
Value waiting
—
Avg LTV · waiting
—
Avg LTV · real churn
—
By purchase grade
If the better grades skew higher, our best "lost" customers were blocked, not disloyal
What they are waiting for
Lapsed customers whose last order contained a product that is still unsellable
Currently unsellable products
Days since the last order line. Past gaps that later recovered are listed too — those were stockouts, and the customers behind them did come back.
Quarterly cohort retention
Rows = quarter of first order · columns = quarters since · all cohorts (small cohorts show volatile rates)
💎 TMC members by purchase year × recency
Rows = year the member bought · columns = how long ago their most-recent order was · TMC · web/direct only · independent of the filter bar
Non-TMC members by purchase year × recency
Rows = year the member bought · columns = how long ago their most-recent order was · non-TMC · web/direct only (excludes Shopee/Lazada) · independent of the filter bar
Customer product profile · selected date range
Customers who ordered within the filter-bar date range · categories/products/revenue scoped to that range · web/direct · units & customers only
Loading…
Acquisition
Lead funnel → customers actually acquired · which channel and which product buys customers who come back
Inbox leads
—
Quality
—
Closed
—
Customers acquired
—
Avg LTV
—
Repeat rate
—
Lead funnel → customers acquired
The lead side comes from leads; the customer side counts people whose first ever order
falls in the range. They are not joined per person — leads.mobile is masked (populated on 0.8% of
rows), so these are two independent counts of the same channel and window. Closed leads include
returning customers, so closed ÷ acquired is not a conversion rate.
By channel — lead funnel vs customer quality
Left block is leads, right block is the customers acquired on that page. A channel appears even if only one side has data.
By lead source
Ads / Walk-in / BC / LIVE. Lead-side only — source exists on leads and has no counterpart on orders.
Leads in vs customers acquired
Monthly. Bars are leads and closed leads; the line is customers whose first order landed that month.
Acquisition product — which product buys customers who come back
The acquisition product is the base SKU with the most units in the customer's first order.
Repeat and timing are measured all-time from that first order, not clipped to the date range.
Groups under 10 customers are hidden. On this tab the product filter selects the acquisition
product, not "ever bought". Units-based label — never a per-SKU revenue split.
By first category
Same cohort, grouped by the category of the acquisition product
By acquisition page
The page the customer's first order came from
Cohort maturity — repeat within 90 days
One row per acquisition month. immature means fewer than 90 days have passed since the month ended, so its 90-day figure can still rise — it is not a collapse.
What they buy second
First-order product → second-order product, for customers who came back. Reorder = same product again; anything else is a genuine cross-sell. Pairs under 5 customers are hidden.
Product journey — who acquires, who attaches
For every product, what originally acquired the repeat customers buying it now. Products that
mostly acquired their own buyers bring people in; products fed almost entirely by others live off
customers something else won. Repeat customers only (2+ orders — with one order the acquisition
product is the current product, which would tell us nothing). A customer is counted once per
product they bought, so the bars each total 100% but the products do not sum to a customer count.
Web & direct only, identity-deduped. Products under 20 buyers are hidden.
Loading…
Gateway or dead end — per acquisition product
For each product: of the customers it brought in, how many came back, how many rebought
that same product, and how many ever moved into another category. A gateway does all three;
a dead end only sells itself once. Status is derived from sales gaps — no order line for 60+ days
means it was not sellable, so a high repeat rate on a stopped product is a door that is now shut.
Products under 50 acquired customers are hidden.
Gateway by category
The same question rolled up. SKUs stopped shows how much of each category is currently unsellable — a category can look like a weak gateway simply because its products are gone.
First product → latest product
Rows = the product that acquired them, columns = what they bought most recently.
The diagonal never switched. One thread per customer (the top-units product of the first and of the
latest order), so unlike the bars above these rows and columns do sum. Lifetime, not windowed.
Cells under 5 customers are hidden.
Value & LTV
Where the money actually sits · the distribution behind the single "LTV" and "Repeat rate" numbers
Customers
—
Avg LTV
—
Median LTV
—
P90 LTV
—
Top 10% share
—
Repeat rate
—
LTV deciles
Customers split into ten equal groups by lifetime value — decile 1 is the top 10%.
All-time figures: the date range does not apply on this tab, so LTV matches the customer profile
exactly. Page / product / TMC choose which customers are in the population; they never re-scope the money.
Web & direct only — marketplace buyers have no phone and so no identity.
The repeat ladder
Two different percentages, on purpose. Went on to next is the step-to-step conversion — it
rises, because it only counts people who already survived. % of order 1 is the survival
curve — it falls, because it does not. Together: each step gets easier, but very few people are
still on the ladder.
LTV by acquisition year
Older cohorts have had longer to spend, so avg LTV falling by year is expected — compare repeat % instead
TMC vs non-TMC
Membership matched on the identity's primary mobile against dimtmc
LTV by acquisition product
Lifetime value of customers grouped by the product that acquired them. Groups under 10 customers are hidden.
🎯 Win-back queue
Who to contact, why now, and through which channel — tiered so cost per head matches value per head
Asleep window
Customers whose last order sits inside this window and who have not come back.
This tab ignores the shared date filter — the window below is its own rolling control, so the
queue stays usable next month instead of being a snapshot. Web & direct only, identity-deduped.
days
days
In queue
—
Lifetime value
—
TMC members
—
Stock-blocked
—
Tiers — and what to do with each
Sorted by value, not headcount. The top two tiers are a small share of people and most of the money,
which is the whole reason to treat them differently. Tiers are named rather than lettered on
purpose: the GRADE tags already use A–D for different bands, so each customer row carries its GRADE tag
too. Click a tier to filter the queue below.
What each tier actually buys
Turns each tier's play into an opening line. Only X = that customer has never bought outside one
category. Mostly X = they range, but one category is 70%+ of their units. Mixed = they range
with no dominant category. Lifetime categories, so only + crosses categories add to 100%.
Loading…
The queue
Click a row for the full customer profile · Next is the product most people buy after this customer's last one
—
Not in this queue — and why
Chat leads who never bought. The source analysis found ~2,863 such leads (mostly ProbioKhlear and
Thaithon Mall pages) with one phone number between them — the admin flow does not capture a number
unless a sale closes, so they cannot be called or texted and are reachable only by replying in the original
platform chat. That is a data-capture fix at the source, not a queue, so it is deliberately not listed here.
Marketplace buyers. Shopee/Lazada orders carry a platform buyer id and no phone, so they can never enter a call list. Stock-blocked customers are hidden by default — asking someone to return for a product we cannot sell wastes the contact.
Marketplace buyers. Shopee/Lazada orders carry a platform buyer id and no phone, so they can never enter a call list. Stock-blocked customers are hidden by default — asking someone to return for a product we cannot sell wastes the contact.
Channels & Products
Channel mix · channel × grade · top products · cross-sell pairs
Categories
Click a category to scope the entire dashboard to its customers · or drill into the customer list
Loading…
Products
Click a product to drill into its customers · bundles, samples (S), and freebies (F) excluded
Loading…
Channel breadth — single vs multi-channel customers
How many distinct channels each customer has actually ordered through.
All-time; the date range does not apply to this card and the two below it.
Web & direct channels only — see the marketplace note at the bottom.
Loading…
First channel → latest channel
Rows = where they were acquired, columns = where they bought most recently. The diagonal never moved.
Acquisition channel quality
Multi = share that later used a second channel · active = ordered in the last 180 days
Marketplace — counted, never joined
Shopee and Lazada orders carry a platform buyer id and no phone, so a marketplace buyer cannot be
linked to a web customer or to another marketplace account. They are counted here as buyers, not
customers, and are deliberately absent from the migration matrix above — folding them in would invent
channel migrations we cannot observe.
Channel mix
Orders, customers, revenue, AOV per channel
Channel preference by RFM grade
% of customers in each grade that have used each channel
Top products by channel
Top 10 SKUs ranked by units sold within each channel
Product pair behavior
Pairs of SKUs bought by the same customer — top 30 cross-sell candidates
Customer × product matrix
One row per customer · profile (TMC · orders · spend · AOV · avg gap · last order & the page it came from ·
grade · most-used page), then orders per category, then units bought of every base product.
Lifetime figures — the date range does not apply here, so grade and totals match the customer profile.
Page / product / category / TMC filters choose which customers are listed. Web & direct orders only
(marketplace buyers have no phone). Category columns overlap — one order can hold several categories, so
they do not add up to the order count. Click a row for the full profile.
—
Loading…
Geography
Region → Province → Amphoe → Tambon · click any row to drill deeper
Loading…