How to score customer health as DTC Brand Founders

Customer SupportFor DTC Brand Founders2 apps12 steps~24 min to set up

You have 4,000 Shopify orders from the last 90 days and no clean way to know which customers are slipping. Your best buyers from last spring haven't reordered. Your Klaviyo open rates look fine on the surface but you don't know if the people opening emails are actually buying or just clicking. You're manually tagging VIP customers in a spreadsheet, reconciling refund patterns in another tab, and still getting surprised when a loyal customer churns after a bad shipping experience. There's no score anywhere — just gut feel and whoever shouted loudest in your inbox this week.

Customer SupportFor DTC Brand Founders2 apps12 steps~24 min to set up
Outcome

What you'll set up

A live customer health scoring model that pulls Shopify order history, refund events, and email engagement into a single view — so you can see who's at risk before they stop buying
A triage layer that surfaces your top 20 at-risk customers each week and tells you why — declining order frequency, recent refund, no purchase after a major campaign
An alert automation that pings you on Slack when a high-LTV customer hits a risk threshold, so you can act before they're gone
The Starch recipe

Apps, data, and prompts

The combination of Starch apps, the data sources they pull from, and the prompts you use to drive them.

Data sources & config

Connect Shopify from Starch's integration catalog — the agent queries it live when the scoring app runs, pulling order history, refund records, and customer metadata. Connect Klaviyo from Starch's integration catalog to pull email engagement signals (opens, clicks, last engaged date) live. Starch syncs your Gmail data on a schedule so any direct customer replies surface in the CRM contact timeline. Slack is connected from Starch's integration catalog so the weekly risk digest lands in your channel automatically.

Prompts to copy
Build me a customer health scoring app that pulls in Shopify customers and orders. Score each customer on a 0–100 scale based on: time since last order, number of orders in the last 90 days, average order value trend, and whether they've had a refund in the last 60 days. Show me a ranked table with the score, the signals that drove it, and a risk tier: healthy, at-risk, churned.
Add a weekly automation: every Monday at 8am, identify the 20 customers with the biggest health score drop in the last 7 days. For each one, show me their LTV, last order date, the reason for the score drop, and a one-sentence suggested action. Send the list to my Slack.
Customer Support Agent — coming soon — will eventually feed support ticket data (refund requests, complaints, no-reply escalations) directly into the health score so a customer who filed two complaints in 30 days gets flagged automatically.
Run these in Starch → or paste them into your favorite agent
Walkthrough

Step-by-step

1 Connect Shopify from Starch's integration catalog. The agent will pull customer records, order history, refund events, and order frequency data live each time your scoring app runs.
2 Connect Klaviyo from Starch's integration catalog. This adds email engagement signals — last open date, click-through history, unsubscribe events — to each customer's health profile.
3 Tell Starch what a healthy customer looks like for your brand. For example: 'A healthy customer orders at least once every 60 days, has an AOV above $65, and has opened an email in the last 30 days.' Starch builds the scoring logic from your description.
4 Define your risk signals explicitly. Prompt Starch: 'Flag a customer as at-risk if they haven't ordered in 45 days, their order frequency has dropped more than 40% vs. the prior 90-day window, or they've submitted a refund in the last 60 days.'
5 Start from the CRM app in the App Store as your customer contact layer. Fork it to match your DTC workflow — swap out B2B deal stages for repurchase status, subscription tier, and acquisition channel.
6 Ask Starch to enrich each customer record with calculated fields: LTV to date, days since last order, refund count, health score. These become sortable columns in your customer table.
7 Build a 'At-Risk This Week' view: prompt Starch to show you only customers whose score dropped more than 15 points in the last 7 days, sorted by LTV descending. This is your weekly action list.
8 Set up the Slack automation. Prompt: 'Every Monday at 8am, run the customer health scoring model, pull the top 20 at-risk customers by LTV, and send a Slack message to #founder-alerts with each customer's name, LTV, last order date, and the primary reason they're flagged.'
9 Add a refund-pattern analysis layer. Prompt: 'Show me customers who have submitted 2 or more refunds in the last 90 days, grouped by refund reason if Shopify captures it. Flag any who are also in the at-risk tier.'
10 Wire in a re-engagement trigger. Prompt: 'When a customer's health score drops below 40, add them to a list called Re-engagement Queue. I'll use this list to manually kick off a Klaviyo win-back sequence.' Export or sync that list to Klaviyo from Starch's integration catalog.
11 Once Customer Support Agent launches — currently in development, request beta access — connect it so ticket data feeds the health score. A refund dispute or shipping complaint auto-adjusts the score without you touching anything.
12 Review the scoring model every 30 days. Tell Starch what you want to adjust: 'Increase the weight on refund recency — a refund in the last 2 weeks should matter more than one 55 days ago.' Starch rebuilds the logic from your updated description.

See this running on Starch

Connect your tools, describe what you want, and the agent builds it. Closed beta is free.

Try it on Starch →
Worked example

Q1 2026 At-Risk Review — DTC Skincare Brand

Sample numbers from a real run
Customers scored healthy (score 70–100)1,840
Customers scored at-risk (score 40–69)412
Customers scored churned (score below 40)290
High-LTV customers in at-risk tier (LTV > $300)38
Refund events in last 60 days driving score drops74
Average LTV of at-risk segment187

Running a Q1 review on 2,542 active Shopify customers, the scoring model flagged 412 in the at-risk tier. Of those, 38 had LTV above $300 — customers who'd spent real money but hadn't ordered since before Black Friday. The primary driver for 22 of them: purchase frequency dropped sharply after a delayed shipping window in January, and 9 had also filed a refund. Without the score, these customers looked fine in Klaviyo because they still opened promotional emails — they just stopped buying. The Monday Slack digest surfaced the top 10 by LTV with a one-line reason for each. The founder personally emailed 5 of them with a replacement offer; 3 placed a new order within a week. The refund-pattern analysis also revealed that 41 of the 74 refund events were tied to a single product SKU — data that fed directly into a sourcing conversation with the supplier.

Measurement

How you'll know it's working

Repeat purchase rate by customer cohort (first 90 days after first order)
Average days between orders for healthy vs. at-risk segments
LTV at risk — dollar value of customers currently in the at-risk tier
Refund rate by SKU and by acquisition channel (Meta vs. organic)
Win-back conversion rate from re-engagement sequences triggered by health score drops
Comparison

What this replaces

The other ways teams handle this today, and how the Starch version compares.

Klaviyo segments + manual tagging
Klaviyo can segment on email behavior but has no native order-frequency scoring or refund signals — you're building the logic manually in segment conditions and it doesn't surface LTV-weighted risk in one ranked view.
Gorgias + Shopify analytics
Gorgias is strong on support ticket history but doesn't combine support data with purchase frequency and email engagement into a unified health score — you'd still be reconciling two dashboards.
Triple Whale
Triple Whale is built for blended ROAS and ad attribution; it surfaces customer LTV but isn't designed to score individual customer health or trigger re-engagement workflows based on behavioral signals.
Custom Google Sheet with Shopify export
Flexible but manual — the export goes stale the moment you download it, scoring logic breaks when someone edits a formula, and there's no automated alerting when a high-LTV customer drops.
On Starch RECOMMENDED

One platform — crm, customer support agent all running on connected data. Setup in plain English; numbers stay current via scheduled syncs and live agent queries.

Try it on Starch →
FAQ

Frequently asked questions

Does Starch actually connect to Shopify, or do I need a developer to set up a custom integration?
No developer needed. Connect Shopify from Starch's integration catalog and the agent queries your order, customer, and refund data live when your scoring app runs. Takes a few minutes to authorize.
Can I use Klaviyo engagement data in the health score, or just Shopify order data?
Both. Connect Klaviyo from Starch's integration catalog and tell Starch which signals to include — open recency, click history, unsubscribe events. The scoring model can weight email engagement alongside purchase behavior however you describe it.
What about the Customer Support Agent — can I use that to feed refund and complaint data into the score right now?
Customer Support Agent is currently in development. You can request beta access to get notified when it launches. In the meantime, you can use Shopify refund data (available through the integration catalog) and manually note complaint patterns in the CRM contact timeline.
Is my customer data stored in Starch, or does it stay in Shopify?
When you connect Shopify as a live-query app, data is queried when your app runs — it's not archived in a long-horizon data warehouse inside Starch. If you want persistent snapshots for historical trend analysis, that's worth knowing upfront: Starch is built for live data surfaces, not multi-year archived analytics.
Can I change the scoring weights over time without rebuilding everything?
Yes. Just describe the change in plain language — 'put more weight on recency, a customer who hasn't ordered in 30 days should score lower than someone at 60 days used to' — and Starch rebuilds the logic. You don't edit formulas or rewrite queries.
Will this work if some of my customers are on Recharge subscriptions and some are one-time buyers?
You can build separate scoring logic for each cohort. Tell Starch: 'For subscription customers, score on active status and churn risk signals from Recharge. For one-time buyers, score on repurchase frequency.' Connect Recharge from Starch's integration catalog and describe the segments — Starch builds the model to match.

Ready to run score customer health on Starch?

Request closed-beta access. Everything is free during beta.

You're on the list! We'll be in touch soon.