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-channel 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
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 |
34.3% and is 3.8 ppt below the prior period, but still well above the 25% alert floor. Five things to notice:
- 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 and the Klaviyo flow performance to see the second-purchase pipeline.
- 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, if it’s up 25%+, the repeat-rate dilution is mechanical.
- 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 to see them by name.
- Subscription cohort distorts the picture. If the brand has Shopify Subscriptions (refills), every cycle billing creates a new order on the same
Customerrecord. Subscriber-heavy brands run 60%+ repeat rates, which look healthier than the underlying acquisition picture warrants. Worth segmenting. - 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 | The dilution lever. A heavy acquisition wave mechanically lowers repeat rate without any retention failure. Always read these two side-by-side. |
| Order Frequency | The latency signal. Average days between orders predicts whether next quarter’s repeat rate will rise or fall. |
| Customer Count | The denominator. Sanity-check that the customer-base growth isn’t just inflating a healthy-looking number. |
| Top Customers by Spend | The flip-side, who is actually doing the repeating. The repeat-rate champions usually drive disproportionate revenue. |
| 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 | Predictive flip-side, customers about to lapse. Acting on churn-risk customers is the highest-leverage way to lift this card. |
| Customer 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 1for 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.
| 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. |
| Card | Expected relationship | What causes legitimate divergence |
|---|---|---|
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 | Indirect proxy | GA4 measures returning visitors, not returning purchasers. Loose correlation only. |
Known limitations / merchant FAQs
Why is my repeat rate dropping? Three usual culprits, in order of likelihood:- 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 for the offsetting wave.
- 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.
- 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 and falling Customer Lifetime Value. The hardest of the three to fix; usually requires product, not marketing, intervention.
- 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.
- Check New Customers. If acquisition is up sharply, accept the dilution and revisit in 60 days.
- 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?
- Pull Refund Rate. A rising refund rate on first orders is a leading indicator of repeat-rate decline (customers who refund don’t come back).
- 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.
- 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.
- 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.