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