Why your POS keeps creating duplicate customers

A customer pays by card at your counter, and a new customer profile appears with nothing on it but a name. The next time they pay, another. It is Shopify POS doing what it was built to do with the name the card network sends back — and one of the steadiest sources of duplicate customers in a store with a till.

Shopify POS makes a customer profile out of the name on a card. When someone pays by card, "the card network might return the cardholder's first and last name as part of the payment transaction", and POS files the order under a new profile with that name on it. Nothing else — "Automatically created profiles include only the name returned from the card transaction."

No email. No phone number. And that is exactly why they multiply.

Why the same person turns up ten times

Shopify will not let two customers share an email address or a phone number, which is what normally stops duplicates. These profiles have neither, so there is nothing for the new one to collide with. Every card payment by a regular who was not attached to the sale can produce another profile with their name on it, and none of them is connected to the online account they may already have.

The effect is felt everywhere downstream. Your best in-store customer looks like a dozen one-off shoppers. Their online and in-store spending never adds up in one place. And any segment built on order count or total spend quietly undercounts the people you most want to reach.

Stopping them at the counter

Shopify documents no setting that turns this off, so prevention happens at the till.

Attach the customer before they pay. Shopify describes the card-name profile as what appears when a sale has no customer on it — "a customer name can be displayed on an order even if staff didn't add one during checkout." A sale that already carries a customer has no gap for it to fill. It is a habit rather than a setting, which is why it slips on a busy afternoon.

On POS Pro, make it a requirement rather than a habit. "If you use Shopify POS Pro, then you can set customer details as recommended or required during checkout to ensure your staff captures customer information consistently." Set to required, a sale cannot finish until customer details are on it — the closest thing to a switch Shopify offers, set per location. Shopify's own caveat is worth weighing: "If you set customer details collection to Required, then staff can't complete checkout when customers don't consent to providing their information. This might reduce your store's sales."

Card-name customers piling up in your store? Describe how they should be handled →

Finding the ones you already have

For once, Shopify can do the finding. Card-name profiles share two tells, and a customer segment can select on both: created by the Shopify POS app, and no email address at all. That segment is every card-name profile you have today, in one list. It is worth checking once in your own admin that both filters behave as described before you rely on the count.

And Shopify Flow can label each new one as it appears — a workflow started by Customer created, a condition that the email is empty, and the action Add customer tags. Flow is free on Basic, Grow, Advanced and Plus; it is not available on Starter.

Merging them is where it gets easier than most duplicates, because of how Shopify chooses which profile survives: "If only one profile has an email address, then that profile remains." Merge a card-name profile into the customer's real one and it disappears into it, taking its orders along.

Which route is yours

What you need Where it comes from
Stop POS making a profile for a sale Native — attach the customer before payment
Make that impossible to skip Native on POS Pro — require customer details, per location
Turn off card-name profiles altogether Shopify documents no setting for it
Find all the card-name profiles at once Native — a customer segment: created by POS, no email
Label each new one as it appears Native — Shopify Flow, Basic and above
Fold a card-name profile into the real one Native — merge; the profile with the email survives
Match hundreds to the right real customers Not native — nothing decides which customer is which

What Shopivibe does

For stopping them and finding them: Shopify has both. POS Pro's required details, a segment for the backlog, Flow for each new one — none of that needs us.

Where this becomes worth asking for is the step after the list: deciding which real customer each card-name profile belongs to, and folding hundreds of them in — "for every card-name profile whose name matches exactly one customer with an email, merge it into that customer." That is two jobs Shopify does not do, matching and merging at scale, and merging duplicates in bulk is its own page.

Two things to say plainly. The matching rule is agreed with you first — J. Smith at the counter is not necessarily the J. Smith online, and that judgement is yours to set before anything is merged. And a merge cannot be undone, which is why that rule comes first. A person here takes it on straight away and has it working in your store within 24 hours.

Shopivibe solves the problem in your store and keeps what it adds maintained, including when Shopify changes something underneath. Shopivibe is free during early access, with 3,500 credits included. Credits beyond the included 3,500 cost $0.06 each.

Know which of your in-store customers are really regulars? Describe it in your own words →

Checked against Shopify's documentation and the App Store on 22 September 2026.