← back to field notes
research DISPATCH Nº 108 · · 10 MIN READ ·

How to stop fake customer accounts and spam signups on Shopify

Captcha is on, double opt-in is on, and the fake accounts keep coming: gibberish names, template addresses, every one of them subscribed to your newsletter. Prevention lives at a layer only Shopify controls. Containment does not. Here is what the bots actually cost, why exact-match Flow rules keep losing, and the playbook that reads every new profile before it reaches your email list.

The count is there when you open the admin Monday at 6:12 am: 340 new customers overnight. It would be the best night in the store's history except that analytics logged 19 sessions, the first names read like a cat crossed the keyboard, four addresses repeat a few hundred times with the house number drifting, and every single profile arrived subscribed to your newsletter.

This is not a new problem having a moment. It is an old problem that never got fixed. A community thread asking how to stop spam bots signing up for accounts has been collecting replies for years and sat at 3,107 views with activity as recent as May 2025. In March 2024 a merchant opened a thread titled 1000s of fake customer account sign ups, all caps, saying they were getting flooded with hundreds and thousands of fake signups a week, that it was completely messing up their email marketing, and that they had already torn the newsletter form out of their theme without effect. The replies said what replies always say: turn on captcha, turn on double opt-in.

Then in April 2025 a merchant posted the follow-up the genre had been waiting for: both captcha settings enabled, and it made no difference. Two months later, the same merchant again: these solutions do not work, I have hired Shopify Experts and they cannot prevent this either.

The signup nothing stops

To understand why the standard advice fails, read the thread that finally mapped the thing. In May 2025 a Shopify Plus merchant documented what they called a platform-wide exploit: a bot running on more than 18,000 rotating IP addresses, presenting browser-identical user agents and headers, hitting storefront pages to corrupt sessions and attribution, then addressing Shopify's backend endpoints directly to spam carts and mint accounts. Because the requests never touch your theme's form, the captcha challenge never happens where the abuse does. One merchant in an earlier wave noticed signups appearing on the account register route while classic customer accounts were switched off entirely, which tells you how little the storefront has to do with it.

The same thread explains why apps cannot save you, in one of the more clarifying sentences the genre has produced: apps operate after the request hits Shopify's infrastructure. Blocking traffic before it reaches the platform happens at the web application firewall, and the WAF belongs to Shopify, not to you and not to any app in the store. The merchants escalated with that exact argument, and reported back that support pointed them to apps, the apps' own vendors conceded they could not stop it, and the thread title acquired its second clause: Shopify refuses to act at platform level.

The replies underneath read like a casualty list. One merchant counted 1,000 fake accounts a day. Another reported more than 500 abandoned orders a day. A third described hundreds of abandoned carts daily and bogus customer accounts queued to receive emails, and named the real fear: domain blacklisting. And the wave has not passed: the successor threads, bots creating and abandoning carts, bot traffic corrupting analytics and ad attribution, bots abusing checkout every day and nothing works, were still collecting replies through June, July, and August 2026, one of them 175 replies deep.

What a fake subscriber costs you

The damage starts where one merchant's November 2023 thread started: the welcome automation. A wave of fake signups subscribed to his list, his automated welcome email fired at all of them, and multiple fake accounts reported the message as spam. Spam complaints are the heaviest signal a mailbox provider tracks, so the bots were not just polluting his list, they were teaching Gmail that his store sends junk. Sender reputation burns fast and rebuilds slowly: as a merchant in the 2025 thread put it, if it drops you re-warm the list, which is a slow and painful process.

The second bill arrives from your email platform, which charges by profile count. A few thousand ghosts on a Klaviyo tier is real money every month, paid to send nothing to nobody, and the abandoned cart sequence makes it worse, because the same bots abandon carts by the hundreds and every fake checkout is another automated send burning budget and reputation at once. If your welcome flow mints a discount code, the bots collect those too, a quieter cousin of the code that leaks to a coupon site.

The third bill is the one merchants say radicalized them: the numbers stop meaning anything. Sessions rise while conversion falls, attribution scatters, and the polluted feed flows into the ad platforms, where Performance Max reads a store that stopped converting and quietly scales your reach down. The Plus merchant who mapped the exploit walked through exactly that chain. Another, after months of cleanup, put it more simply: I just cannot trust our numbers. Every downstream decision leans on the customer list, the segments you market to, the LTV math, the reorder forecasts, and all of it inherits the garbage.

The five Flows merchants built instead

Since prevention was off the table, the merchants in the 2025 thread built containment by hand, and their solution is worth studying because it is the right idea wearing the wrong tool. One merchant published his setup: five Shopify Flow automations triggered on customer created, deleting the profile when the first name is empty, or when the address equals House Number 43. Gray Colony, or 23, Scottsdate, Happytown, the exact templates his wave of bots was stamping out. Redundant rules catch what the first pass misses. He reported the set caught 99.9 percent of his bots, and that segment sweeps built on the same criteria wiped nearly 50,000 fake accounts from his store.

Now look at the seams. Another merchant found 90 percent of his bots shared one location string and zero orders, built the equivalent rule, and it caught nothing until a reply pointed out the problem: Flow only finds exact matches, and his condition had a comma the data did not. That is the whole fragility in one punctuation mark. The rules match strings, the bot writes the strings, so the bot decides when your rules stop working: rotate the address template and every Flow goes blind until a human notices, reads the new pattern, and writes another rule. Zero orders in an ecommerce platform should be a dead giveaway, the same merchant observed, and he is right, but a giveaway is a judgment, and Flow does not do judgment, it does equals.

There is also a race hiding under the rules. Deleting the profile in Shopify is not the same as keeping it out of your email platform: the Shopify-to-Klaviyo sync can pick up a new profile before the Flow deletes it, which is why the merchants who solved this properly also push a bot marker into the email platform and exclude that segment from every flow. Miss that step and your welcome email still fires at a profile that no longer exists in your admin.

◆ NOTE The scale, in the merchants' own numbers: 18,000 plus rotating IPs. 1,000 fake accounts a day on one store, 500 abandoned orders a day on another. Nearly 50,000 fake profiles deleted from a single shop. Threads at 175 replies, at 4,703 views, at 4,212 views, still active June through August 2026. And the oldest thread in the genre has been asking the same question for years.

Reading the profile, not matching the string

Here is the thing the hand-built rules were reaching for. When the merchant scanned his customer list and knew instantly which profiles were fake, he was not matching strings, he was reading: this first name is keyboard mash, this address is the same template with the digits drifted, this email domain is disposable, this city is one we have never sold to, this account subscribed to marketing at 3 am with no session history and no order. Each signal is weak alone and damning together, and weighing weak signals together is precisely the judgment call that language models are good at and exact-match rules are not. It is the same shape as triaging a high-risk order flag, applied one step earlier in the funnel, to the account instead of the order.

A model reads each new profile in context and returns a score, a confidence, and a reason: 96 percent bot, name entropy plus template address matching 214 profiles created this week. High confidence fakes get tagged and queued. Ambiguous ones, and there are always ambiguous ones, the real customer with a typo in her name, the VPN user with a freemail address, go to a human, because deleting a real customer to fight bots is the one failure worse than the bots.

What the automation actually has to do

Catching one wave is a cleanup. Staying clean is a process, because the bots rotate and the list keeps feeding every system downstream. The worker this needs watches the door, the backlog, and the email platform at the same time. As a Dugong playbook, in plain prose:

# trigger
On every customer created,
and every hour for the backlog

# steps
1. Score every new profile: name,
   address, email domain, geography,
   sessions, confidence attached
2. Quarantine before the sync: tag
   suspected bots and keep them out
   of every marketing flow
3. Delete with an audit trail:
   confident fakes in logged batches,
   never a profile with an order
4. Watch the velocity: signups
   against the store's baseline,
   a storm pages a human
5. Sweep the backlog: score the
   existing list, suppress the ghosts
   your ESP is billing you for
6. Guard the sends: welcome and
   abandoned cart flows fire only
   on profiles scored human
7. Report weekly: caught, deleted,
   list health, and the storms
   that broke the baseline

Step two is the one that saves your sender reputation, because it wins the race the Flow builders lost: the quarantine tag lands on the profile in the same breath it is scored, before the email sync runs, and the email platform side carries a standing segment that no flow is allowed to touch. Step three is where the audit trail earns its keep. Deletion in batches, logged, reversible in the sense that you know exactly what was removed and why, and bounded by one hard rule: a profile that has ever placed an order never gets deleted by a machine, it gets a review, the same courtesy a suspected duplicate gets before a merge.

Step four is the difference between absorbing an attack and noticing one. A store that gains 20 customers on a normal night and 340 tonight should not process the storm quietly, it should page somebody, with the pattern attached: what the profiles share, when it started, whether the shape matches a card-testing run warming up, since account floods and checkout floods travel together often enough that the first is worth treating as a tripwire for the second.

And the honest limit, stated plainly: none of this prevents the signups. Prevention happens at the WAF in front of Shopify's infrastructure, only Shopify operates that layer, and the community record of asking them to is the thread this dispatch is built on. Keep captcha and double opt-in enabled, they filter the crude bots and keep unconfirmed addresses out of your sends. But your working layer is containment, and containment done in the same minute as the signup gets you functionally everything prevention would: the list stays human, the flows stay quiet, the numbers stay yours.

Why this is a compiler problem, not an app problem

The blocker apps are not useless, they are just fighting on the wrong terrain, matching IPs and countries after the request already landed, which is why the thread is full of merchants who installed them and kept getting flooded. What actually varies store to store is judgment: what a fake looks like against your real customer base, which geographies are plausible for you, how aggressive deletion can be before it risks a real customer, which segment must never receive a send. Those are sentences about your store, and the argument of the automations no one builds applies verbatim: the sentences should compile into the workflow, instead of being shaved down to whatever a settings page exposes.

Run Monday morning again with the sentences compiled. The storm starts at 2:41 am; by 2:43 the first hundred profiles are scored, tagged, and invisible to your email platform. At 3:05 the velocity alarm pages with a pattern summary: 340 profiles, four address templates, one disposable domain family. You read it over coffee, approve the batch deletion, and spot-check the nine profiles the model was unsure about, two of which are real people with odd typos, kept. Your welcome flow sent nothing overnight. Your Klaviyo bill did not move. Your conversion rate on Monday means what it says. The list has 340 fewer customers than the bots intended, which is to say, the right number.


The workflow worth building this week

Start with the sweep, because the backlog is where the money is leaking. Export your customers CSV and sort for the giveaway the merchants named: zero orders, zero sessions, subscribed to email. Read a hundred of them and you will see your store's bot signatures in twenty minutes, the address templates, the name patterns, the domains. Then build the quarantine segment in your email platform first, before any deletion, so the ghosts stop receiving sends and stop counting against billing while you work.

Then run the scorer in propose-only mode for two weeks: let it read every new signup and tag what it would have deleted, and check its homework against your own eye. You are calibrating where its confidence deserves yours, exactly the drill from the pricing guardrail, pointed at profiles instead of prices.

Then say the brief out loud, the way you would hand list hygiene to a new hire. Read every new customer profile the minute it is created and score whether it is a real person. Tag the fakes before the email platform syncs, and keep that segment out of every flow. Delete the confident ones in logged batches, never anyone who has ordered. Tell me the morning we gain ten times our normal signups, with the pattern attached. Once a week, show me what you caught, what you deleted, and what the list looks like without the ghosts. That is the whole paragraph. The compiler turns it into the workflow, and the next storm breaks against it at 2:41 am while you sleep.

◆ READING Two companion pieces if this one landed: the card testing attack that floods your store, on the checkout-side bot flood and the fraud fees it burns, and the customer Shopify counts three times, on the other way a customer list quietly fills with records that are not customers.

If you are a Shopify merchant with a bot story, the list that tripled overnight, the welcome flow that emailed a thousand ghosts, the Flow rule the bots broke with one comma, the inbox is open: field-notes@dugong.live. We are collecting case studies for the next issue.

research essay
share · copy link · ✦
◆ COMMON QUESTIONS

Why is my Shopify store getting hundreds of fake customer signups?

Because bots reach the account and newsletter endpoints directly, and nothing on the platform stops them. Merchants have documented waves of this for years: a March 2024 community thread describes hundreds to thousands of fake signups per week, and a May 2025 Shopify Plus thread maps a bot using more than 18,000 rotating IP addresses with browser-identical headers, hitting storefront pages to corrupt analytics and backend endpoints to spam carts and mint accounts. One reply reported 1,000 fake accounts a day, another 500 abandoned orders a day. The signups often appear on the account register route even when classic customer accounts are switched off, which is why removing the signup form from your theme does not end them. The motive hardly matters, list poisoning, competitor sabotage, or credential probing all look the same in your admin: a customer with a keyboard-mash name, a template address, zero sessions, zero orders, and a newsletter subscription. The practical consequence is that prevention is not fully in your hands, filtering happens at the web application firewall in front of Shopify's infrastructure, which only Shopify operates, so the merchant's working layer is containment: catching each fake profile the moment it is created and keeping it out of your email list.

Does reCAPTCHA stop fake customer accounts on Shopify?

Not reliably. Shopify's captcha setting protects storefront forms, but merchants report the accounts keep coming with it enabled: one wrote in April 2025 that both captcha settings were on and it made no difference, and followed up in June that hired Shopify Experts could not prevent the signups either. The current wave of bots does not fill in your form like a person, it addresses Shopify's endpoints directly with rotating IPs and browser-identical headers, so the challenge never happens where the abuse does. Blocking apps hit the same wall: as the Plus merchant who documented the exploit put it, apps operate after the request has already hit Shopify's infrastructure, and the fix would have to land at the WAF level that only Shopify controls. Captcha and double opt-in are still worth enabling, they filter the crude bots and keep unconfirmed emails out of your marketing sends, and double opt-in in particular protects deliverability because a bot that never clicks confirm never becomes a contactable subscriber in most ESPs. But treat both as seatbelts, not as the fix. The merchants who got their stores back did it with detection and cleanup: identify the fake profiles fast, keep them out of the email sync, and delete them on a schedule.

Can AI detect and delete fake customer accounts on Shopify?

Yes, and it closes the gap that defeated the hand-built rules. Merchants already run Shopify Flow automations that delete customers when the first name is empty or the address matches a known bot template, one merchant wiped nearly 50,000 fake accounts with five such rules. The weakness is that Flow matches exact strings: a stray comma breaks the condition, and every time the bot rotates its address template the rules go blind until someone writes a new one. Spotting a fake profile is a reading task, which is what a language model does well: keyboard-mash names, address templates with drifted house numbers, disposable email domains, a shipping city you have never sold to, an account with a newsletter subscription but no sessions and no orders, and a signup rate that jumped fifty-fold against the store's baseline. A model reads each new profile in context, scores it with a confidence and a reason, tags the confident fakes for deletion, and routes the ambiguous ones to a human. The two rules that keep it safe: quarantine the profile from your email platform before the sync can pick it up, and never silently delete a profile that has ever placed an order.

What do fake customer accounts actually cost a Shopify store?

Three bills, and none of them says bots on the invoice. The first is sender reputation: a November 2023 merchant watched his welcome automation fire at a wave of fake signups, several of which reported the email as spam, teaching mailbox providers that his store sends junk. Reputation burns fast and rebuilds slowly, and re-warming a list is a slow and painful process. The second is subscription cost: email platforms bill by profile count, so a few thousand ghosts on a Klaviyo tier is real money every month, paid to send nothing to nobody, while bot-abandoned carts trigger yet more automated sends. The third is the one merchants say radicalized them: the numbers stop meaning anything. Sessions rise while conversion falls, attribution scatters, and Performance Max reads a store that stopped converting and quietly scales reach down. As one merchant put it after months of cleanup, I just cannot trust our numbers.

How do I keep fake Shopify signups out of my email list?

Win the race between the signup and the sync. Deleting a fake profile in Shopify is not enough on its own, because the Shopify-to-Klaviyo sync can pick up a new profile before your cleanup runs, and your welcome email still fires at a ghost that no longer exists in the admin. The merchants who solved this push a bot marker into the email platform in the same breath the profile is scored, keep a standing quarantine segment there that no flow is allowed to touch, and only then delete in Shopify, in logged batches, never touching a profile that has ever placed an order. Keep double opt-in enabled as a seatbelt, since a bot that never clicks confirm never becomes a contactable subscriber in most ESPs. Then sweep the backlog, because the ghosts already on your list keep receiving sends and counting against billing until they are suppressed.