> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vortexiq.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Customer Churn Risk, Shopify

> Customers with no order in 2× their typical cadence. Early-warning for retention spend. How to read it, why it matters, and how to act on it.

**Metrics type:** [Supporting Metrics](/nerve-centre/overview#metrics-types-explained)  •  **Category:** [Ecommerce Platform](/nerve-centre/connectors#connectors-by-type)

> Customers with no order in 2× their typical cadence. Early-warning for retention spend.

## At a glance

> The percentage of repeat customers whose latest order is more than 2× their personal average inter-order interval ago. The early-warning signal: customers who *should* have ordered again by now but haven't. Targetable for retention spend before they fully lapse.

|                                   |                                                                                                                                                                                                                                                                              |
| --------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**                | For each customer with at least 2 orders: compute the personal average inter-order interval (`days_between_orders`). If `days_since_last_order > 2 × personal_avg_interval`, the customer is "at risk". The card returns `at_risk_customers ÷ total_repeat_customers × 100`. |
| **API endpoint**                  | `Admin GraphQL. Customer.id, Customer.numberOfOrders, Customer.lastOrderId, Order.createdAt`. Computed in OpenSearch from the order index, joined back to customer.                                                                                                          |
| **First-time customers excluded** | A customer with 1 lifetime order has no inter-order interval to compute. Such customers are excluded from both numerator and denominator. They appear instead in [New Customers](/nerve-centre/kpi-cards/shopify/new-customers).                                             |
| **VAT / tax treatment**           | Not applicable (count metric).                                                                                                                                                                                                                                               |
| **Shipping**                      | Not applicable.                                                                                                                                                                                                                                                              |
| **Discounts**                     | Not applicable.                                                                                                                                                                                                                                                              |
| **Refunds**                       | Customers whose orders were fully refunded still count if they were paid orders. The model uses order-placed not order-survived.                                                                                                                                             |
| **Cancelled / voided orders**     | Excluded. Cancelled orders do not contribute to the customer's inter-order cadence.                                                                                                                                                                                          |
| **Currency**                      | Multi-currency safe (count ratio, no FX).                                                                                                                                                                                                                                    |
| **Channels / sources**            | Customer-level metric, channel-blind. A customer who ordered POS once and online once has a valid inter-order interval.                                                                                                                                                      |
| **Time window**                   | `90D` (the at-risk threshold uses the customer's full history, the 90D window is the snapshot date)                                                                                                                                                                          |
| **Alert trigger**                 | `>30%` of repeat customers at risk; sustained at-risk share above 30% indicates a retention problem                                                                                                                                                                          |
| **Roles**                         | owner, marketing                                                                                                                                                                                                                                                             |

## Calculation

Calculated automatically from your Shopify data. See the At a glance summary above for what the metric tracks and the worked example below for a typical reading.

## Worked example

An AU SMB skincare brand on Shopify, 60-day typical replenishment cycle. Snapshot date: 12 May 26.

| Customer | Orders to date | Avg interval | Last order | Days since last | At risk?             |
| -------- | -------------- | ------------ | ---------- | --------------- | -------------------- |
| Aisha L. | 8              | 58 days      | 12 Mar 26  | 61              | No (within 2×)       |
| Ben H.   | 4              | 70 days      | 02 Feb 26  | 99              | No (within 2× = 140) |
| Carla S. | 12             | 32 days      | 22 Feb 26  | 79              | YES (79 > 64)        |
| Dev R.   | 3              | 90 days      | 10 Jan 26  | 122             | No (within 2× = 180) |
| Eli T.   | 6              | 45 days      | 06 Mar 26  | 67              | No (within 2× = 90)  |
| Fran K.  | 5              | 50 days      | 18 Jan 26  | 114             | YES (114 > 100)      |
| Gita M.  | 9              | 40 days      | 14 Mar 26  | 59              | No                   |
| Hugh B.  | 2              | 60 days      | 02 Feb 26  | 99              | No (within 2× = 120) |
| ...      |                |              |            |                 |                      |

Of 1,840 repeat customers in the database, 612 fit the at-risk definition: **33.3%**. The card alerts (`>30%`).

Five things to notice:

1. **The threshold is personal, not global.** A customer who orders every 30 days is at risk after 60 days; a customer who orders every 120 days is at risk after 240. This catches truly lapsing customers without false-flagging slow-cadence buyers. Industry-blunt churn definitions ("no order in 90 days") miss the second cohort entirely.
2. **At-risk share is the alert.** The list of 612 at-risk customers is the action list, ranked by historical lifetime value (highest LTV first = most worth saving). A win-back email or SMS targeting the top 200 typically recovers 8 to 15% within 30 days.
3. **Carla S. is the high-priority save.** 12 orders, 32-day cadence, lapsed 79 days = 47 days overdue. She is a power-user pattern; either the brand has a new product issue, or she switched to a competitor. A personal email from the founder (not a discount) often outperforms automated offers for these customers.
4. **The 33% rate is concerning but not catastrophic.** Skincare DTC typically runs 20 to 28% at-risk in steady state. A 33% reading suggests a recent issue: a stockout on a hero SKU, a quality complaint cohort, a price increase, or a competitor launch. Cross-reference [Repeat Rate](/nerve-centre/kpi-cards/shopify/repeat-customer-rate) and [Order Frequency](/nerve-centre/kpi-cards/shopify/customer-order-frequency) for the underlying drivers.
5. **First-time customers are invisible here.** The brand may have 800 first-time buyers in the last 90 days but they do not contribute to this card. A growing first-time cohort with rising churn is the classic acquisition-without-retention scenario; pair this card with [New Customers](/nerve-centre/kpi-cards/shopify/new-customers) to see the full picture.

## Sibling cards merchants should reference together

Churn-risk is a leading indicator. Pair with these to find the cause and the targeted save play:

| Card                                                                             | Why pair it with Churn Risk                               | What the combination tells you                                                                                       |
| -------------------------------------------------------------------------------- | --------------------------------------------------------- | -------------------------------------------------------------------------------------------------------------------- |
| [Repeat Rate](/nerve-centre/kpi-cards/shopify/repeat-customer-rate)              | The reverse view, share of customers who *did* come back. | Falling repeat rate + rising churn risk = retention engine breaking. Same problem from two angles.                   |
| [Order Frequency](/nerve-centre/kpi-cards/shopify/customer-order-frequency)      | Average inter-order interval across the customer base.    | A lengthening frequency average is a slower form of the same alert.                                                  |
| [New Customers](/nerve-centre/kpi-cards/shopify/new-customers)                   | Acquisition counterpart.                                  | Acquisition-without-retention is visible only when both move together: rising new + rising at-risk = leaking bucket. |
| [Customer Trend](/nerve-centre/kpi-cards/shopify/customer-acquisition-trend)     | Net customer movement over time.                          | If overall customer count is rising but at-risk is rising faster, growth is structurally fragile.                    |
| [Customer Segments](/nerve-centre/kpi-cards/shopify/customer-spend-segments)     | Who is at risk: VIP, mid, low-tier?                       | VIP at-risk is the highest-priority list. Always sort the at-risk list by LTV before acting.                         |
| [Top Refunded Products](/nerve-centre/kpi-cards/shopify/top-refunding-customers) | Quality / sizing complaints predict churn.                | If at-risk customers' last orders correlate with high-refund SKUs, that is the cause.                                |
| [Email Health](/nerve-centre/kpi-cards/shopify/email-health)                     | Can you actually reach these customers?                   | A 33% at-risk share + 60% bounced-email share = no recovery channel. Fix the email file first.                       |

## Reconciling against the vendor's own dashboard

**Where to look in Shopify Admin:**

Shopify Admin does not natively compute personal-cadence-based churn risk. The closest views:

* [Customers](https://admin.shopify.com/customers) → segment by *Last order date is more than X days ago* and *Number of orders is greater than 1*. You can build at-risk segments at fixed intervals (60d, 90d, 180d) but they use a global cutoff, not a personal cadence.
* **Analytics → Reports → "Customer cohort analysis"**: Shopify Plus only. Shows retention by month-of-first-order. Useful as a sanity check on cohort retention; not a per-customer at-risk list.
* **Apps like Klaviyo, LoyaltyLion, Yotpo**: have native predicted-churn features. Their algorithms use richer signals (browse, email-open, on-site behaviour) than this card. Expect 20 to 40% overlap; treat each as complementary.

**Why our number may legitimately differ from Shopify Admin:**

| Reason                        | Direction                          | Why                                                                                                                                                                                             |
| ----------------------------- | ---------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Cadence model**             | Big difference vs Shopify segments | Shopify Admin uses fixed-day segments (60d, 90d). This card uses personal 2× cadence. The two definitions intersect but do not match; expect 30 to 60% overlap with any single Shopify segment. |
| **First-time exclusion**      | Ours lower numerator               | This card excludes 1-order customers (no cadence to compute). Shopify segments include them.                                                                                                    |
| **Cancelled order treatment** | Ours slightly different            | The card excludes cancelled orders from the cadence calc. Shopify Admin includes order-placed events regardless.                                                                                |
| **Customer merging**          | Either                             | If a customer placed orders under two different email addresses and Shopify hasn't merged them, both this card and Shopify see two separate customers (each invisible to the other's cadence).  |
| **Time zone**                 | Boundary days                      | Daily snapshot uses store time zone; orders near the snapshot boundary may bucket differently from Shopify.                                                                                     |

**Cross-connector reconciliation:**

| Card                                                                                              | Expected relationship                                     | What causes legitimate divergence                                                                                                                                                   |
| ------------------------------------------------------------------------------------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`klaviyo.klaviyo_inactive_subscribers`](/nerve-centre/klaviyo/klaviyo_inactive_subscribers)      | Strong overlap; different inputs                          | Klaviyo's churn model uses email-engagement decay, this card uses purchase-cadence. Customers who open emails but stop buying appear here, not in Klaviyo's signal, and vice versa. |
| [`google_analytics.ga_returning_users`](/nerve-centre/kpi-cards/google-analytics/returning-users) | Inverse signal (fewer returning users implies more churn) | GA4 sees returning *visits* not returning *buyers*. A churned customer can still browse without buying.                                                                             |

***

<details>
  <summary><em>Same-metric documentation cross-reference (for agencies running multiple platforms)</em></summary>

  The same definition lives on other commerce platforms. This is **not a reconciliation**, your Shopify store does not have a parallel store on BigCommerce or Adobe Commerce. These cross-links exist for cross-platform navigation only.

  * [`bigcommerce.churn_risk`](/nerve-centre/kpi-cards/bigcommerce/customer-churn-risk)
  * [`adobe_commerce.churn_risk`](/nerve-centre/kpi-cards/adobe-commerce/customer-churn-risk)
</details>

## Known limitations / merchant FAQs

**Why is the at-risk percentage rising?**
Three usual causes:

1. **Cohort coming due.** A successful acquisition wave 3 to 6 months ago means a wave of repeat-customers is now hitting their personal 2× threshold. Mechanical, not a problem unless the wave is fully lapsing.
2. **Quality / experience issue.** A complaint cohort, a recent stockout on a hero SKU, a price increase, or a competitor launch is driving customers away. Cross-reference [Top Refunded Products](/nerve-centre/kpi-cards/shopify/top-refunding-customers).
3. **Email-channel decay.** Win-back campaigns are not landing because the email file is decayed (high bounce, low open). Pair with [Email Health](/nerve-centre/kpi-cards/shopify/email-health).

**What is "at risk" exactly?**
A customer is at risk if their `days_since_last_order > 2 × personal_avg_inter_order_interval`. This personalises the threshold per customer. A 30-day-cadence customer becomes at risk at 60 days; a 180-day-cadence customer becomes at risk at 360 days.

**Why are first-time customers excluded?**
A customer with one lifetime order has no inter-order interval to compute. Including them would force a global default (e.g. 90 days) and dilute the personal-cadence value of the metric. First-time customers are tracked in [New Customers](/nerve-centre/kpi-cards/shopify/new-customers); their retention is best measured via cohort analysis once they have a second order.

**My subscription store, does this card work?**
Yes, well. Subscription customers have very tight cadence (30 / 60 / 90 day plans) so their 2× threshold is precise. A subscription customer 75 days past their 60-day cadence is a 25-day overdue cancellation in disguise. Subscription stores often see the at-risk rate spike right after a billing failure cohort.

**Multi-channel: do POS-only customers appear?**
Yes, if they have a customer record. Shopify creates customer records for both online and POS purchases. A POS-only customer with multiple visits has a valid cadence. The card is channel-blind.

**B2B vs DTC?**
B2B cadence is structurally longer (90 to 365 days between orders) and lumpier. The 2× rule still works (a 180-day-cadence B2B customer is at risk at 360 days) but the at-risk list is smaller and individually more valuable. For B2B-heavy stores, sort the at-risk list by LTV and act on the top 20 manually rather than running a generic win-back campaign.

**Multi-currency, any impact?**
None on the at-risk computation (which uses dates, not currency). The save-play economics differ by region: a £15 win-back voucher is meaningful in the UK, less so in the US, and may not even cover acquisition cost in some markets. Tune the offer per region.

**Shopify Plus vs basic?**
No definitional difference. Plus stores typically have richer customer-history depth (longer-tenure customers, multiple stores via Shopify Plus organizations). The card behaves identically; the at-risk list on Plus stores is often longer and higher-LTV.

**Refresh cadence?**
Daily snapshot. The personal-cadence calculation is expensive (per-customer computation across full order history) so the card refreshes once per 24 hours. Real-time variant is on the roadmap.

**The card alerted, what should I do?**

1. Sort the at-risk list by LTV (highest first).
2. For the top 5%, send a personal email from the founder or account manager. No discount; ask why they have not been back.
3. For the next 20%, send a 15-20% win-back voucher with a 14-day expiry.
4. For the long tail, run an automated win-back flow (Klaviyo, Mailchimp, native Shopify Email).
5. Measure recovery rate at 30 / 60 / 90 days. Industry-typical is 8 to 15% reactivation on the targeted top tier.
6. Diagnose the root cause: stockout, quality complaint, price increase, competitor. Fix the input, not just the symptom.

***

### Tracked live in Vortex IQ Nerve Centre

*Customer Churn Risk* is one of hundreds of KPI pulses Vortex IQ tracks across Shopify and 70+ other ecommerce connectors. Nerve Centre runs the detection layer; Vortex Mind investigates the cause when something moves; Ask Viq lets you interrogate any number in plain English.

[Start for free](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
