Skip to main content
Metrics type: Supporting MetricsCategory: Ecommerce Platform

At a glance

Percentage of customers who placed more than one order during the rolling 90-day window. Defined as COUNT(customers WITH 2+ orders in window) ÷ COUNT(customers in window) × 100. Headline retention KPI. Industry-typical: 25-40% for DTC, 50-80% for B2B-leaning Adobe stores.

Calculation

Worked example

A B2B+DTC industrial-supplies merchant on Adobe Commerce 2.4.7. 90-day rolling, 14,420 orders, 9,820 distinct customers/companies (after Company aggregation). Customer-level repeat: Comparison to prior 90 days: Insight pattern:
  1. Headline 26.9% is just above the 25% floor. Healthy for a B2B+DTC mix. Below 25% would have triggered the sentiment alert.
  2. DTC repeat at 21.1% drags the headline down. This is the lever to pull, post-purchase email flows, second-order incentives, replenishment-product subscriptions.
  3. B2B repeat at 69.5% is healthy but should be 80%+ for industrial-supplies (where buyers reorder consumables). The 20-30% non-repeat B2B Companies are either: (a) one-off purchasers, (b) accounts that went silent (cross-link with B2B Account Silence), or (c) accounts that re-routed to a different supplier.
  4. VIP Customer Group at 92% is the loyalty cohort working as designed. Use this as the upper-bound benchmark.
  5. Guest 6% repeat is low because of email-dedup caveat. A guest using multiple emails appears as multiple “1 order” customers. The actual same-person repeat rate among guests is closer to 12-15%; the card under-counts.
  6. Improvement of +2.7 pp over the prior period suggests retention work is landing. Cross-link with klaviyo.flow_revenue_share for email-flow attribution.
  7. Cross-link with Customer Order Frequency for the per-bucket distribution that this rate is the headline of.

Sibling cards merchants should reference together

Reconciling against the vendor’s own dashboard

Where to look in Adobe Commerce Admin:
Reports > Customers > Customers by Number of Orders. Lifetime view of repeat behaviour. Lifetime ≠ in-period; use as a directional check.
For the in-period customer set:
Sales > Orders filtered to the period; export to CSV; group by Customer Email; count distinct emails with 2+ orders. Compare to total distinct emails. Tedious; the card is faster.
For B2B Companies:
Customers > Companies > [Company] > Orders tab for each Company. Manual, only practical for spot-checks.
Why our number may legitimately differ from a manual Admin computation: Internal identity: repeat_rate = COUNT(customers in period WITH 2+ orders) ÷ COUNT(customers in period) × 100 Component cards (self-consistency): Cross-connector reconciliation (when these connectors are connected for this merchant):

Known limitations / merchant FAQs

My DTC repeat rate is 21%, is that bad? Below the 25% Tier-1 floor, yes. DTC ecommerce typically should run 25-40%. Below 25% suggests acquisition is winning new customers but they’re not coming back, classic “leaky bucket” growth. Investigate post-purchase email flows, second-order incentive thresholds, and product-quality (refund rate, NPS). B2B repeat at 70% but I think it should be higher, why? Two main causes: (1) Companies that went silent (cross-link B2B Account Silence); (2) buyers within a Company who place once-per-quarter, falling outside the 90-day window. For B2B-heavy industrial supply, target 80%+. Use Company aggregation toggle for the right number. Why use 90 days and not 30 or 365? 30 days under-counts repeat (not enough time for a second purchase). 365 days over-counts (includes anyone who bought 11 months ago who may have churned by now). 90 days is the marketing-standard balance for ecommerce. Guest dedup is undercounting my repeat rate, can I fix? Vortex IQ supports identity-resolution as an opt-in feature: matches guests by IP + credit-card-fingerprint + email-similarity to dedupe. Adds 5-10 percentage points to most merchants’ apparent repeat rate. Contact support to enable. Wholesale Customer Group at 78% repeat, should we leave it? B2B Wholesale should approach 90%+ for healthy retention. 78% means ~20% of Wholesale accounts didn’t repeat in 90 days, that’s a churn risk. Cross-link with B2B Account Silence for the at-risk list. A customer placed 1 order, refunded the next day, do they count as 1 or 0 customers? 1 customer (they ordered). They count for 1 in the denominator. If they later return for a 2nd order, they’d count for the numerator (2+ orders). Refund is a creation-time event; this card uses creation-time identity. My multi-store, can I see repeat per Store View? Yes. Filter by store_id. UK and US have very different repeat patterns (UK B2B-heavy, US DTC-heavy in this hypothetical). Why does the rate sometimes go down day-to-day? The denominator includes new customers who are inherently “1 order” until they return. A burst of new acquisition (e.g. a successful PR placement) deflates the rate temporarily. Use 7-day rolling on the rate itself for trend; the underlying retention behaviour didn’t change. Klaviyo says my repeat rate is 35%, this card says 26.9%, gap? Klaviyo computes repeat from placed_order events; if event sync from Adobe to Klaviyo is incomplete, Klaviyo sees fewer customers and inflates the rate. Or Klaviyo uses a different window. The card uses Adobe’s order index directly, more reliable. Cancelled-only customers, are they “real”? A customer who only ever placed cancelled orders (no captured) is debatable. The card includes them by default in the denominator, which slightly deflates the rate. Toggle to exclude for “captured-only” view; usually changes the rate by <1 pp.

Tracked live in Vortex IQ Nerve Centre

Repeat Customer Rate is one of hundreds of KPI pulses Vortex IQ tracks across Adobe Commerce 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.