Skip to main content
Card class: Non-HeroCategory: Ecommerce Platform
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 countsCOUNT(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 treatmentNot applicable, the metric is a count ratio with no money in it.
ShippingNot applicable, count ratio.
DiscountsNot applicable directly, but heavy first-order discounting often inflates the new customer count and drags this rate down.
RefundsRefunded orders still count toward numberOfOrders. A customer who bought twice and refunded once is still “repeat” by Shopify’s reckoning.
Cancelled / voided ordersIncluded if Shopify counts them in numberOfOrders (it usually does, the customer-facing object is order-history, not financial-status filtered).
CurrencyMulti-currency safe, count ratio. A customer who paid USD on one order and GBP on another counts as one customer with two orders.
Channels / sourcesCross-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 window90D (default 90D rolling)
Alert trigger<25%, sustained repeat rate below 25% trips the repeat_rate sentiment key
Rolesowner, 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 cohortCountShareNote
Customers with exactly 1 lifetime order11,82065.7%First-time buyers, includes the last 90D acquisition wave
Customers with 2 lifetime orders3,42019.0%The classic “second-purchase test”, brand has hooked them
Customers with 3 to 5 orders1,86010.3%Loyal but not core
Customers with 6 to 11 orders6703.7%Subscribe-and-save habituals
Customers with 12+ orders2301.3%The VIP tier, gifters and refillers
Total customers in window18,000100%Denominator
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 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, 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 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:
CardWhy pair it with Repeat Rate
New CustomersThe dilution lever. A heavy acquisition wave mechanically lowers repeat rate without any retention failure. Always read these two side-by-side.
Order FrequencyThe latency signal. Average days between orders predicts whether next quarter’s repeat rate will rise or fall.
Customer CountThe denominator. Sanity-check that the customer-base growth isn’t just inflating a healthy-looking number.
Top Customers by SpendThe flip-side, who is actually doing the repeating. The repeat-rate champions usually drive disproportionate revenue.
Average Order ValueRepeat customers typically spend 20 to 40% more per order than first-timers. Rising repeat rate often correlates with rising AOV.
Churn RiskPredictive flip-side, customers about to lapse. Acting on churn-risk customers is the highest-leverage way to lift this card.
Customer SegmentsCohort 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:
ReasonDirectionWhy
Time-window definitionEitherShopify’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 linkingOurs lowerShopify 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 zoneBoundary daysShopify Admin uses store time zone; Vortex IQ uses UTC for window boundaries. The trailing-90D window can drift up to a day.
POS link gapsOurs lowerPOS sales without email capture stay as anonymous customers in our index; Shopify’s identity-resolution layer is more aggressive about post-hoc linking.
Sync lagOurs 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:
CardExpected relationshipWhat causes legitimate divergence
klaviyo.kl_repeat_purchase_rate (when connected)Should track within 5 pptKlaviyo 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_usersIndirect proxyGA4 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:
  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 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 and falling Customer Lifetime Value. 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 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. 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. 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 or book a demo to see this metric running on your own data.