Playbook
How duplicate customers distort your repeat purchase rate
Repeat purchase rate divides customers with two or more orders by customers with at least one. Duplicate profiles usually pull it down: one loyal shopper split across two profiles counts as two one-time buyers. Measure it twice, once by profile and once by person, and compare. The gap shows how much duplicates are hiding.
By MergeGuard team
Last updated
5 min read
On this page
Most repeat-customer numbers start with a count of customers. In Shopify, that count is a count of profiles, and a person with two profiles counts twice. This page shows the arithmetic, works through a small example, shows when duplicates push the rate the other way, and sets out how to measure the effect on your own store.
Key insight
Counting people usually raises the repeat rate. It can lower it when both profiles of a split person already had repeat orders.
The formulas
All three use the same period, for example the last 12 months.
- Repeat purchase rate = customers with 2 or more orders ÷ customers with at least 1 order
- Orders per customer = orders ÷ customers with at least 1 order
- Revenue per customer (a simple, historical CLV) = revenue ÷ customers with at least 1 order
Orders and revenue don’t change when you count people instead of profiles. The number of customers does, and so does who counts as a repeat buyer. Shopify’s own reports define their customer metrics in their own way, so check the definition before comparing a report with your own sums.
Where to find it in Shopify
Shopify’s customer reports use their own names. Its Returning customers report “displays data about all your customers whose order history includes two or more orders”, and its customer cohort report lists “customer retention rate” as a metric without defining the formula (Customers reports). The page gives no “repeat purchase rate” formula, so write down which formula you use before you compare a report with your own sums.
A worked example
Worked example (made up)
The table below is a made-up example. We invented the numbers to show how it works, and they don’t come from any store. Twelve profiles belong to ten people. Ava has two profiles with one order each, under a home and a work email that share a phone number. Cara has a second profile with a mistyped email.
| Profile | Person | Orders | What links it |
|---|---|---|---|
| ava@home | Ava | 1 | Same phone as ava@work |
| ava@work | Ava | 1 | Same phone as ava@home |
| ben | Ben | 2 | None |
| cara@gmail | Cara | 2 | Typo pair with cara@gmial |
| cara@gmial | Cara | 1 | Typo pair with cara@gmail |
| dan, eli, fay, hal, ivy, jo | Six people | 1 each | None |
| gus | Gus | 3 | None |
There are 16 orders in total. Say each order is worth $50, so revenue is $800.
| Measure | Counting profiles | Counting people |
|---|---|---|
| Customers | 12 | 10 |
| Repeat customers | 3 (Ben, Cara’s first profile, Gus) | 4 (Ava, Ben, Cara, Gus) |
| Repeat purchase rate | 3 ÷ 12 = 25% | 4 ÷ 10 = 40% |
| Orders per customer | 16 ÷ 12 = 1.33 | 16 ÷ 10 = 1.6 |
| Revenue per customer | $800 ÷ 12 = $66.67 | $800 ÷ 10 = $80 |
Two kinds of split cause the change. Ava’s 1 + 1 split hides a repeat buyer entirely, so the number of repeat customers goes up by one. Cara’s 2 + 1 split adds a one-time “customer” who doesn’t exist, so the number of customers goes down by one. In a small example the jump is large. On a real store it depends on how many people are split, and how.
Worked example (made up)
When counting people lowers the rate
Counting people doesn’t always raise the rate. It falls when every profile of a split person is already a repeat buyer. Here is a second made-up example, separate from the first one.
Worked example (made up)
Six profiles belong to five people. Mia has two profiles with two orders each, and four other people have one order each.
| Profile | Person | Orders |
|---|---|---|
| mia@home | Mia | 2 |
| mia@work | Mia | 2 |
| noor, omar, pia, quinn | Four people | 1 each |
| Measure | Counting profiles | Counting people |
|---|---|---|
| Customers | 6 | 5 |
| Repeat customers | 2 (both of Mia’s profiles) | 1 (Mia) |
| Repeat purchase rate | 2 ÷ 6 = 33.3% | 1 ÷ 5 = 20% |
Joining two repeat profiles removes one repeat customer and one customer, so the rate falls whenever it was below 100%. Orders per customer still rise in this example, from 8 ÷ 6 = 1.33 to 8 ÷ 5 = 1.6.
Wrong matches skew it too. Group two different people who live together and you invent a repeat buyer. That is why the steps above keep profiles that share only an address apart until someone has checked them, and why the result is a range.
What MergeGuard’s demo store shows
MergeGuard’s demo store (Northsail Supply) shows the same effect on lists that depend on order history:
- One customer: Amelia Hughes: 3 profiles with 4, 3 and 2 orders → one customer with 9 orders Demo store (Northsail Supply)
- Win-back, for customers who haven’t ordered in a while: 905 customers look like they stopped ordering → 842 really did; 63 still buy on another profile Demo store (Northsail Supply)
- VIPs: 18 VIPs on single profiles → 27 VIPs as people Demo store (Northsail Supply)
The win-back line is the costly one. Those 63 customers still buy, under a newer profile, yet counted by profile they look lapsed, as if they had stopped ordering, and would be offered a discount to come back.
Reading your result
A large gap between the two views tells you two things. First, your reports undercount loyalty, so decisions based on them, like how much to spend on winning new customers, rest on a low number. Second, your customer lists are wrong in the same direction: win-back lists include active buyers, and VIP lists miss real VIPs.
A small gap in the repeat rate does not show that duplicates are few. If both profiles of a split person already repeat, the rate stays put while their orders and spend sit on two profiles. Count the surplus profiles too (profiles minus people), and read orders per customer and revenue per customer beside the repeat rate. Cleanup is housekeeping only when the surplus is small.
Either way, merging is a separate decision. You can count people for reporting without merging anyone. Merging in Shopify is permanent, and if any profile in a group is subscribed to marketing, the merged customer stays subscribed. Read the guest checkout guide before you merge.
Step by step
Pick the period and the rules
Pick one period, such as the last 12 months, and write down which orders count. Leave out test orders, and decide once how to treat canceled, fully refunded and wholesale orders.
Export orders with contact details
Export the orders in that window with the customer ID, email, phone and shipping address for each order.
Calculate the profile view
Count orders per customer ID. Repeat purchase rate is the number of IDs with two or more orders divided by the number of IDs with at least one.
Group profiles into people
Group IDs that clearly match, such as the same phone or emails that differ only by a typo. Keep profiles that share only an address apart unless you have checked them.
Calculate the people view
Repeat the count with each group treated as one customer. Use the same window and the same order rules.
Report both numbers as a range
Give the profile view, a cautious people view built from clear matches only, and a wider view that adds the groups you reviewed. The truth for your store sits in that range.
Sources
Related
- Repeat purchase rateRepeat purchase rate is the share of customers who ordered two or more times in a period. Get the formula and see why duplicate profiles usually pull it down.
- Customer lifetime value (CLV)Customer lifetime value is what one customer brings in over their whole relationship with your store. See a simple formula and how duplicate profiles shrink it.
- Lapsed customerA lapsed customer has gone longer than usual without ordering. See how to judge it per customer and why shoppers buying under another profile only look lapsed.
- Guest checkout and duplicate customers in ShopifyWhy guest checkout splits one shopper across several Shopify profiles, how to find those duplicates safely, and what Shopify’s merge rules mean.
- Win-back listsMergeGuard’s win-back audience checks every Shopify profile a customer has before saying they stopped ordering, so your discount skips people still buying.
- VIP listsMergeGuard’s VIP audience builds your Shopify VIP customers list from each person’s spend across all their profiles, so split customers reach your threshold.