> ## 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.

# Repeat Customer Rate, Shopify

> Customers with >1 order in the period. A retention barometer. DTC dies when this drops. 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 >1 order in the period. A retention barometer. DTC dies when this drops.

## At a glance

> Share of customers in the window who placed more than one order. The simplest retention barometer Shopify exposes, calculated from `Customer.numberOfOrders` aggregated across the indexed customer set.

|                               |                                                                                                                                                                                                                                                           |
| ----------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**            | `COUNT(distinct customers WHERE numberOfOrders > 1) ÷ COUNT(distinct customers in window) × 100`. A customer with 2+ lifetime orders, where at least one falls inside the window, contributes to the numerator.                                           |
| **VAT / tax treatment**       | Not applicable, the metric is a count ratio with no money in it.                                                                                                                                                                                          |
| **Shipping**                  | Not applicable, count ratio.                                                                                                                                                                                                                              |
| **Discounts**                 | Not applicable directly, but heavy first-order discounting often inflates the *new* customer count and drags this rate down.                                                                                                                              |
| **Refunds**                   | Refunded orders still count toward `numberOfOrders`. A customer who bought twice and refunded once is still "repeat" by Shopify's reckoning.                                                                                                              |
| **Cancelled / voided orders** | Included if Shopify counts them in `numberOfOrders` (it usually does, the customer-facing object is order-history, not financial-status filtered).                                                                                                        |
| **Currency**                  | Multi-currency safe, count ratio. A customer who paid USD on one order and GBP on another counts as one customer with two orders.                                                                                                                         |
| **Channels / sources**        | Cross-platform by default. POS, online, marketplace, B2B, all count toward `numberOfOrders` on the same `Customer` record (provided the email or phone matches). Guest checkouts without account-creation may NOT link, inflating the new-customer share. |
| **Time window**               | `90D` (default 90D rolling)                                                                                                                                                                                                                               |
| **Alert trigger**             | `<25%`, sustained repeat rate below 25% trips the `repeat_rate` sentiment key                                                                                                                                                                             |
| **Roles**                     | owner, marketing                                                                                                                                                                                                                                          |

## Calculation

```
COUNT(orders > 1 by customer.id) / CARDINALITY(customer.id)
  WHERE date BETWEEN [period_start, period_end]
```

## Worked example

A UK candle and home-fragrance brand on Shopify Plus, three years of trading, \~18,000 customers in the database. Period: 12 Feb 26 to 12 May 26 (rolling 90D).

| Customer cohort                         | Count      | Share    | Note                                                      |
| --------------------------------------- | ---------- | -------- | --------------------------------------------------------- |
| Customers with exactly 1 lifetime order | 11,820     | 65.7%    | First-time buyers, includes the last 90D acquisition wave |
| Customers with 2 lifetime orders        | 3,420      | 19.0%    | The classic "second-purchase test", brand has hooked them |
| Customers with 3 to 5 orders            | 1,860      | 10.3%    | Loyal but not core                                        |
| Customers with 6 to 11 orders           | 670        | 3.7%     | Subscribe-and-save habituals                              |
| Customers with 12+ orders               | 230        | 1.3%     | The VIP tier, gifters and refillers                       |
| **Total customers in window**           | **18,000** | **100%** | Denominator                                               |

```text theme={null}
Repeat customers (numberOfOrders > 1)  =  3,420 + 1,860 + 670 + 230 = 6,180
Repeat rate                             =  6,180 ÷ 18,000 × 100      =  34.3%
```

vs the prior 90D rate of 38.1%. The card reads `34.3%` and is **3.8 ppt below** the prior period, but still well above the 25% alert floor. Five things to notice:

1. **The first-order cohort is the leading indicator.** 65.7% of the base placed exactly one order; how many of those convert to a second order in the next 60 days determines next quarter's repeat rate. Pair with [Order Frequency](/nerve-centre/kpi-cards/shopify/customer-order-frequency) and the Klaviyo flow performance to see the second-purchase pipeline.
2. **The drop is structural, not catastrophic.** A 3.8 ppt decline often follows a heavy acquisition push (more new buyers in the denominator), not a real retention failure. Check [New Customers](/nerve-centre/kpi-cards/shopify/new-customers), if it's up 25%+, the repeat-rate dilution is mechanical.
3. **The 12+ tier is tiny but mighty.** 1.3% of customers (230 people) likely drive 15 to 25% of revenue at this kind of brand. Pair with [Top Customers by Spend](/nerve-centre/kpi-cards/shopify/top-customers) to see them by name.
4. **Subscription cohort distorts the picture.** If the brand has Shopify Subscriptions (refills), every cycle billing creates a new order on the same `Customer` record. Subscriber-heavy brands run 60%+ repeat rates, which look healthier than the underlying acquisition picture warrants. Worth segmenting.
5. **POS cross-shop matters.** Customers who first bought at a market or pop-up via Shop POS link to the online customer record only if email is captured at the till. Brands without till-side email-capture see lower repeat rates than reality.

## Sibling cards merchants should reference together

Repeat rate is a lagging summary. The drivers and consequences live in these:

| Card                                                                         | Why pair it with Repeat Rate                                                                                                                    |
| ---------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------- |
| [New Customers](/nerve-centre/kpi-cards/shopify/new-customers)               | The dilution lever. A heavy acquisition wave mechanically lowers repeat rate without any retention failure. Always read these two side-by-side. |
| [Order Frequency](/nerve-centre/kpi-cards/shopify/customer-order-frequency)  | The latency signal. Average days between orders predicts whether next quarter's repeat rate will rise or fall.                                  |
| [Customer Count](/nerve-centre/kpi-cards/shopify/unique-customers)           | The denominator. Sanity-check that the customer-base growth isn't just inflating a healthy-looking number.                                      |
| [Top Customers by Spend](/nerve-centre/kpi-cards/shopify/top-customers)      | The flip-side, who is actually doing the repeating. The repeat-rate champions usually drive disproportionate revenue.                           |
| [Average Order Value](/nerve-centre/kpi-cards/shopify/average-order-value)   | Repeat customers typically spend 20 to 40% more per order than first-timers. Rising repeat rate often correlates with rising AOV.               |
| [Churn Risk](/nerve-centre/kpi-cards/shopify/customer-churn-risk)            | Predictive flip-side, customers about to lapse. Acting on churn-risk customers is the highest-leverage way to lift this card.                   |
| [Customer Segments](/nerve-centre/kpi-cards/shopify/customer-spend-segments) | Cohort breakdown. Tells you which segment is repeating and which is leaking.                                                                    |

## Reconciling against the vendor's own dashboard

**Where to look in Shopify Admin:**

> **Shopify Admin → Analytics → Reports → "Returning customer rate"** (under the *Customers* category)

Pick the same 90-day window. Shopify's *Returning customer rate* is the closest equivalent and should match this card to within a couple of percentage points. If the report doesn't appear in the sidebar, click *View all reports* and search "returning".

Other Shopify Admin views that look similar but differ:

* **Customers → All customers**: a list of every customer record. Counts, but no rate. Use Shopify's filter `Number of orders is greater than 1` for the raw repeat count.
* **Analytics → Dashboards → Overview**: shows a *First-time vs returning* doughnut for the trailing 30 days. Different window, slightly different definition (Shopify's "returning" sometimes means "ordered before in their lifetime, not just before this period").
* **Apps like Loyalty Lion, Smile.io, Klaviyo**: each has its own definition of "repeat customer" tied to their loyalty or email cohort. Treat those as proxy metrics, not reconciliation candidates.

**Why our number may legitimately differ from Shopify's:**

| Reason                     | Direction              | Why                                                                                                                                                                                                                                                                                   |
| -------------------------- | ---------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **Time-window definition** | Either                 | Shopify's "Returning customer rate" report counts orders by *returning customers* in the period vs *all orders* in the period; this card counts *customers* with >1 lifetime order vs *customers* in the period. Different denominators, similar numerators. Expect 1 to 3 ppt drift. |
| **Customer linking**       | Ours lower             | Shopify links orders to a customer record on email + phone. Guest checkouts that fail to link are counted as new customers in both, but Shopify's identity-resolution edge cases (typo'd email, phone-only) sometimes resolve correctly in Admin and not in our index.                |
| **Time zone**              | Boundary days          | Shopify Admin uses store time zone; Vortex IQ uses UTC for window boundaries. The trailing-90D window can drift up to a day.                                                                                                                                                          |
| **POS link gaps**          | Ours lower             | POS sales without email capture stay as *anonymous* customers in our index; Shopify's identity-resolution layer is more aggressive about post-hoc linking.                                                                                                                            |
| **Sync lag**               | Ours lower for "today" | Customer object updates ride a separate webhook stream; the most recent 5 to 30 minutes of repeat-purchases may not be reflected. Yesterday and earlier are caught up.                                                                                                                |

**Cross-connector reconciliation:**

Repeat customer rate is Shopify-internal, the customer identity graph lives in Shopify's database. The closest cross-connector signal is from email and SMS platforms:

| Card                                                                                                | Expected relationship     | What causes legitimate divergence                                                                                                                       |
| --------------------------------------------------------------------------------------------------- | ------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- |
| [`klaviyo.kl_repeat_purchase_rate`](/nerve-centre/klaviyo/kl_repeat_purchase_rate) (when connected) | Should track within 5 ppt | Klaviyo measures *email-segment* repeat rate, not full-base repeat rate. Subscribers repeat more than non-subscribers, so Klaviyo's number runs higher. |
| [`google_analytics.ga_returning_users`](/nerve-centre/kpi-cards/google-analytics/returning-users)   | Indirect proxy            | GA4 measures returning *visitors*, not returning *purchasers*. Loose correlation only.                                                                  |

***

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

  The same retention metric exists on other commerce connectors. This is **not a reconciliation**, your Shopify customers don't appear on a parallel BigCommerce store. These cross-links exist so multi-platform agencies can navigate identical metrics across docs.

  * [`bigcommerce.repeat_rate`](/nerve-centre/kpi-cards/bigcommerce/repeat-customer-rate)
  * [`adobe_commerce.repeat_rate`](/nerve-centre/kpi-cards/adobe-commerce/repeat-customer-rate)
</details>

## Known limitations / merchant FAQs

**Why is my repeat rate dropping?**
Three usual culprits, in order of likelihood:

1. **Acquisition surge.** A heavy ad month, a viral moment, or a discount-led promo brings in a wave of first-time buyers. They sit in the denominator immediately but cannot contribute to the numerator until they buy a second time, typically 30 to 90 days later. The rate drops mechanically; it isn't a retention failure. Check [New Customers](/nerve-centre/kpi-cards/shopify/new-customers) for the offsetting wave.
2. **Email and retention programme stalls.** Welcome flows broken, post-purchase email cadence sluggish, loyalty-points expiring silently. Pair with Klaviyo flow performance (if connected) to see whether second-purchase nudges are firing.
3. **Product-market fit decay.** Genuinely fewer customers think the product was worth buying again. Shows up as rising one-star refund-reasons in [Refund Rate](/nerve-centre/kpi-cards/shopify/refund-rate) and falling [Customer Lifetime Value](/nerve-centre/kpi-cards/shopify/customer-spend-segments). The hardest of the three to fix; usually requires product, not marketing, intervention.

**Action:** identify which of the three first. The remedies are different (do nothing, fix the email flow, fix the product).

**What's a healthy repeat rate?**
Wildly category-dependent. Rough guides for DTC, 90-day window:

* **Consumables and refills (skincare, supplements, coffee, candles)**: 35 to 55%. The product itself runs out; repeat is structural.
* **Apparel and footwear (DTC)**: 20 to 35%. Style-driven, less natural repeat.
* **Furniture and homewares**: 8 to 15%. Long replacement cycles, low repeat is normal.
* **Subscription-led (boxes, food kits)**: 60%+. Recurring billing inflates the number.
* **Gifting categories (jewellery, flowers)**: 10 to 20%. Gift-buyers don't always come back; the recipient might.

The 25% alert floor in this card is a coarse default. Set it to your category's median in *Nerve Centre → Alerts → Thresholds*.

**Does Shopify Subscriptions inflate the repeat rate?**
Yes, significantly. Each subscription cycle billing creates a new order on the same customer record, so a 12-month subscription customer racks up 12 orders without ever "deciding" to repeat. For an honest read, segment subscribers and non-subscribers separately, the underlying organic-repeat rate is usually 15 to 25 ppt lower than the headline.

**My multi-currency store, does FX matter here?**
No. The metric is a count ratio. A customer who paid GBP on order one and EUR on order two still resolves to one customer with two orders. The only multi-currency gotcha is that some duplicate-customer-record bugs (one customer record per currency) inflate the customer count and depress the rate. Audit Shopify customer-merge tooling if you suspect this.

**How does this card handle B2B accounts?**
B2B Companies on Shopify Plus have their own customer-record structure. If you've enabled B2B, account-level orders link to the *Company contact* customer record, not the company itself. Repeat rate at the contact level looks high (the same buyer at the same company places monthly orders); rate at the company level requires manual aggregation. Currently this card uses the contact-level customer record by default.

**Is "repeat" the same as "loyal"?**
No. Repeat means "more than one order"; loyal usually means "more than 4-6 orders" or "active for over a year". Use [Customer Segments](/nerve-centre/kpi-cards/shopify/customer-spend-segments) for tier breakdowns. A repeat-rate spike could mean lots of new customers placing a second order (good early signal) or could mean an existing-customer flush (already loyal becoming more loyal). The cohort breakdown matters.

**Does Shop App / Shop Pay change anything?**
Customers who check out via Shop Pay accelerate their second-purchase: cards saved, addresses prefilled, the friction drops. Brands with strong Shop Pay adoption typically see 5 to 10 ppt higher repeat rates than peers. If you've recently enabled Shop Pay or rolled out the Shop App, watch this card 60-90 days out for the lift.

**What's the action playbook when this card alerts (\<25%)?**

1. Check [New Customers](/nerve-centre/kpi-cards/shopify/new-customers). If acquisition is up sharply, accept the dilution and revisit in 60 days.
2. If acquisition is flat, audit the welcome and post-purchase email flow. Are the second-purchase nudge emails sending? Are coupons inside them being redeemed?
3. Pull [Refund Rate](/nerve-centre/kpi-cards/shopify/refund-rate). A rising refund rate on first orders is a leading indicator of repeat-rate decline (customers who refund don't come back).
4. Segment by category. If repeat is fine on consumables but collapsing on apparel, the issue is fit/sizing/quality on apparel specifically; treat as a product, not marketing, problem.
5. Review the loyalty programme. Are points-balances expiring? Are tier-up nudges firing? Loyalty-app data sits outside Shopify natively; pull from the app's own dashboard.
6. Test a single-purchase reactivation campaign on lapsed first-time buyers (3 to 9 months old). The lift on this cohort is often the fastest move.

***

### Tracked live in Vortex IQ Nerve Centre

*Repeat Customer Rate* 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.
