The share of customers in the window who have placed more than one completed order, the single clearest signal of loyalty and retention health.
At a glance
Repeat Customer Rate is the proportion of your customers who have come back to buy again. It is the loyalty number that matters most because winning a repeat order is far cheaper than acquiring a new customer, and a healthy repeat rate is the foundation of predictable revenue. A falling rate is an early warning that something after the first purchase, product, delivery, email, or service, is failing to bring people back. This card reads the rate over a 30-day window against the prior period so you see the direction, not just the level.
Calculation
Worked example
A Dutch coffee-subscription-adjacent store on OpenCart 4.x selling beans and equipment. The 30-day window covers 16 Feb 26 to 17 Mar 26, compared against the prior 30 days. The store added a post-purchase email flow midway through.
What’s interesting here:
- 30.2% clears the 25% alarm, and the trend is the good news. The rate rose from 26.1% to 30.2% across the two windows. The vsP comparison is what turns a static “30%” into “improving”, which is the read the owner actually acts on.
- The blended rate masks two very different products. Consumable beans reorder at 45%; one-time equipment sits at 8%. A blended 30% is healthy precisely because the consumable base carries it. If beans loyalty slipped, the equipment drag would expose it fast.
- The email flow plausibly drove the lift. The post-purchase flow launched mid-window, and the repeat rate climbed in the same period. The card cannot prove causation, but it is the place the effect of a retention initiative shows up first.
- Guest checkouts could be hiding repeats. If the store accepts guest orders, a customer who bought twice as a guest may not be detected as repeat unless emails are matched. The owner encourages account creation partly to make this number trustworthy.
Sibling cards merchants should reference together
Reconciling against OpenCart
Where to look in the OpenCart admin: Customers → Customers lists registered accounts, the base for the denominator. Reports → Customers → Customer Orders shows orders and totals per customer, which is the closest native view to “who ordered more than once”. Reports → Customers → Customers Online and the Sales reports help you cross-check counts. Each customer’s order history (via Sales → Orders filtered by customer) confirms how many completed orders an account has, which is the qualifier this card uses. OpenCart admin views that look like the same number but aren’t:- Customers → Customers total counts all registered accounts, including those who never completed an order, so it is not the denominator of completed-order repeat rate by itself.
- Reports → Customers → Customer Orders can include all order statuses, not just completed ones; this card counts only completed orders toward “repeat”.
- A guest-order email appearing twice in the orders list is a repeat purchase, but if no
oc_customeraccount exists, the native customer reports may not link them as one repeating customer.
Cross-connector note: if you run an email platform, its “returning purchaser” or “second-purchase” segment should track this card. A divergence usually means the email tool is keying on a different definition of repeat (any order vs completed order) or is missing guest purchases that OpenCart records by email.
Known limitations / merchant FAQs
Why does my repeat rate drop when I run a successful acquisition campaign? Acquisition adds first-time customers to the denominator faster than they can become repeat. A big new-customer intake mechanically pushes the repeat rate down for a window even though loyalty has not worsened. Read it alongside New Customers (30D) to separate the two effects. Do guest checkouts count as repeat customers? Only if their orders can be matched, usually by email. OpenCart allows guest orders that may not create anoc_customer record, so a customer who bought twice as a guest can read as two separate one-time buyers unless email matching links them. Encouraging account creation makes this number more accurate.
What counts as a “repeat” order, exactly?
Two or more completed orders by the same customer. Orders stuck in Pending, or that were Cancelled or failed, do not qualify a customer as repeat. This keeps the loyalty signal clean: an abandoned second attempt does not inflate it.
Why is my rate lower than my email tool’s “returning customer” figure?
The two usually use different definitions. Email platforms often count any second order regardless of status, and may segment differently. This card counts completed orders only and matches OpenCart’s customer and order records. The gap is a definitional one, not an error.
Is a low repeat rate always bad?
Not for every catalogue. Stores selling durable, one-time goods (furniture, equipment) naturally run lower than consumables or replenishables. Judge the rate against your own category and trend, which is why the card shows 30D vsP rather than an absolute target alone.
How can I lift this number?
Post-purchase email flows, loyalty incentives, and reliable fulfilment are the usual levers. Watch the rate’s vsP trend after any retention initiative; this card is where the effect surfaces first. Pair it with High-Value Customers Unengaged on Email to target the customers most worth re-engaging.
Does it count across all my storefronts?
Yes by default. Customers and orders carry a store_id, and the rate is computed across the whole estate unless you filter to one store.