> ## 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, Adobe Commerce

> Repeat Customer Rate for Adobe Commerce stores. Tracked live in Vortex IQ Nerve Centre. 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)

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

|                                      |                                                                                                                                                                                                                                                                        |
| ------------------------------------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **What it counts**                   | The set of distinct customers who ordered in the period; of those, how many ordered more than once. Aggregated by `customer_id` for registered customers, by `customer_email` for guests. B2B Companies are aggregated by `company_id` if the toggle is enabled.       |
| **API field**                        | `customer_id`, `customer_email`, `extension_attributes.company_attributes.company_id`, `created_at`, `entity_id` from `GET /rest/V1/orders`.                                                                                                                           |
| **In-window vs cohort framing**      | This is the **in-window** repeat rate: customers who placed 2+ orders within the 90-day window. Different from cohort retention which asks "of customers who first ordered in March, what % returned by April?". Both useful; this card is the simpler in-window view. |
| **VAT / tax / shipping / discounts** | n/a, the card is a customer count ratio.                                                                                                                                                                                                                               |
| **Refunds**                          | A refunded order still counts as an order placed; the customer is still counted.                                                                                                                                                                                       |
| **Cancelled orders**                 | Included by default. A customer who placed 1 captured + 1 cancelled order is "2 orders" → repeat. Toggle to exclude cancelled for "captured-only" repeat rate.                                                                                                         |
| **B2B Company toggle**               | Many B2B Companies have multiple buyers (head office + branch); aggregating to `company_id` reveals true Company-level repeat behaviour. Without the toggle, each buyer is counted separately, deflating B2B repeat rate.                                              |
| **Guest dedup caveat**               | Guests with two emails (work + personal, typo) appear as two distinct customers, deflating the rate. Real repeat rate is typically 5-10 percentage points higher than measured.                                                                                        |
| **Currency**                         | Unitless; no currency.                                                                                                                                                                                                                                                 |
| **Multi-store scope**                | All Store Views by default. A customer who shops on UK and US Store Views (same email) is counted once across views.                                                                                                                                                   |
| **Time window**                      | `90D` rolling. Shorter (30D) under-counts repeat (not enough time to repeat); longer (365D) over-counts (includes churned customers). 90D is the marketing standard.                                                                                                   |
| **Alert trigger**                    | `<25% (Tier-1 retention floor)`. Below 25% indicates an acquisition-heavy growth pattern with weak retention; over the long term, unsustainable.                                                                                                                       |
| **Sentiment key**                    | `repeat_rate`                                                                                                                                                                                                                                                          |
| **Roles**                            | owner, marketing                                                                                                                                                                                                                                                       |

## Calculation

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

## 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:**

| Slice                                    | Distinct customers | 2+ orders | Repeat rate                |
| ---------------------------------------- | ------------------ | --------- | -------------------------- |
| All customers (Company-aggregated)       | 9,820              | 2,640     | **26.9%**                  |
| DTC consumers only                       | 8,640              | 1,820     | 21.1%                      |
| B2B Companies only                       | 1,180              | 820       | 69.5%                      |
| Wholesale Customer Group (subset of B2B) | 950                | 740       | 77.9%                      |
| VIP Customer Group                       | 250                | 230       | 92.0%                      |
| Guest checkouts (by email)               | 1,840              | 110       | 6.0%                       |
| Excluding cancelled-only customers       | 9,720              | 2,610     | 26.9% (no material change) |

**Comparison to prior 90 days:**

| Window                 | Repeat rate | Threshold (25%) |
| ---------------------- | ----------- | --------------- |
| 13 Feb to 13 May 26    | 26.9%       | clean (above)   |
| 14 Nov 25 to 12 Feb 26 | 24.2%       | breached        |
| **Change**             | **+2.7 pp** | improving       |

**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](/nerve-centre/kpi-cards/adobe-commerce/b2b-accounts-gone-quiet)), 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`](/nerve-centre/klaviyo/flow_revenue_share) for email-flow attribution.
7. **Cross-link with [Customer Order Frequency](/nerve-centre/kpi-cards/adobe-commerce/customer-order-frequency)** for the per-bucket distribution that this rate is the headline of.

## Sibling cards merchants should reference together

| Card                                                                                        | Why pair it with Repeat Customer Rate                                       |
| ------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------- |
| [Customer Order Frequency](/nerve-centre/kpi-cards/adobe-commerce/customer-order-frequency) | The per-bucket distribution this rate summarises.                           |
| [New Customers](/nerve-centre/kpi-cards/adobe-commerce/new-customers)                       | The first-time-buyer cohort; the conversion-to-repeat target.               |
| [Customer Count](/nerve-centre/kpi-cards/adobe-commerce/unique-customers)                   | The denominator.                                                            |
| [Customer Trend](/nerve-centre/kpi-cards/adobe-commerce/customer-acquisition-trend)         | Customer count over time; pair with this card for retention vs acquisition. |
| [B2B Account Silence](/nerve-centre/kpi-cards/adobe-commerce/b2b-accounts-gone-quiet)       | B2B-specific retention card; flags the silent accounts.                     |
| [Churn Risk](/nerve-centre/kpi-cards/adobe-commerce/customer-churn-risk)                    | The forward-looking version of repeat rate.                                 |
| [Customer Segments](/nerve-centre/kpi-cards/adobe-commerce/customer-spend-segments)         | Customer Group breakdown.                                                   |
| [`shopify.repeat_rate`](/nerve-centre/kpi-cards/shopify/repeat-customer-rate)               | Cross-platform peer.                                                        |
| [`klaviyo.flow_revenue_share`](/nerve-centre/klaviyo/flow_revenue_share)                    | Email-flow attribution; pair to attribute repeat-rate lift.                 |

## 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:**

| Reason                                                                                                                                                                                                                  | Direction of divergence       |
| ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------- |
| **Lifetime vs in-period framing**. Reports > Customers > Customers by Orders is lifetime; this card is 90D rolling. A customer with 50 lifetime orders but only 1 in the last 90 days is "repeat" lifetime, "new" here. | Material difference           |
| **B2B Company aggregation**. Default in this card is per-Company; Admin doesn't aggregate.                                                                                                                              | Card higher when toggle is on |
| **Guest dedup**. Card aggregates guests by email; multiple emails inflate the unique-customer count.                                                                                                                    | Card under-counts repeat      |
| **Cancelled inclusion**. Card includes by default; manual count usually excludes.                                                                                                                                       | Standard                      |
| **Time-zone, sync lag**. Standard.                                                                                                                                                                                      | Minor                         |

**Internal identity:**

`repeat_rate = COUNT(customers in period WITH 2+ orders) ÷ COUNT(customers in period) × 100`

Component cards (self-consistency):

* [`adobe_commerce.customer_count`](/nerve-centre/kpi-cards/adobe-commerce/unique-customers)
* [`adobe_commerce.order_frequency`](/nerve-centre/kpi-cards/adobe-commerce/customer-order-frequency) (sum of "2 orders" + "3-5" + "6-10" + "11+" buckets ÷ total = repeat rate)

**Cross-connector reconciliation (when these connectors are connected for this merchant):**

| Card                                                                                                 | Expected relationship                                                                                             | What divergence tells you                                                              |
| ---------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------- | -------------------------------------------------------------------------------------- |
| [`klaviyo.repeat_segment_size`](/nerve-centre/klaviyo/repeat_segment_size)                           | Klaviyo's "2+ orders" segment should match this card's repeat-customer count                                      | Material gaps mean the order-event sync from Adobe to Klaviyo has data quality issues. |
| [`google_analytics.ga_returning_users_rate`](/nerve-centre/google_analytics/ga_returning_users_rate) | GA4 returning-user % is session-cookie based; usually higher than this card (sessions repeat more than orders do) | Don't reconcile directly; treat as directional.                                        |

***

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

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

## 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](/nerve-centre/kpi-cards/adobe-commerce/b2b-accounts-gone-quiet)); (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](/nerve-centre/kpi-cards/adobe-commerce/b2b-accounts-gone-quiet) 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](https://app.vortexiq.ai/login) or [book a demo](https://www.vortexiq.ai/contact-us) to see this metric running on your own data.
