This sounds like a case where it is important to separate storefront bot traffic from direct checkout abuse, because many of the standard recommendations for blocking bots probably will not address what you are seeing.
This Doesn’t Appear to Be a Storefront Problem
Based on your description, the bot isn’t browsing the storefront normally. It appears to be reaching Shopify checkout directly, potentially through generated cart/checkout links.
If that’s the case, storefront-level protections may have little or no effect, including:
- Theme-based CAPTCHA or JavaScript challenges
- IP/country-blocking apps that operate on the storefront
- Theme-level bot protection
- Blocking individual products
- Requiring additional storefront interactions before checkout
The fact that your storefront sessions and page views aren’t increasing alongside thousands of checkout attempts is particularly significant.
Going from approximately 130 abandoned checkouts in August to more than 11,000 since September 1, with a peak near 3,800 in one day, also makes it very difficult to characterize this as ordinary abandoned-cart activity.
Card Testing vs. Automated Checkout Abuse
I would make one distinction when escalating this with Shopify.
The earlier ~$5 orders that actually received payment authorizations certainly sound consistent with card testing. However, you mentioned that very few of the current attempts reach payment.
That could mean Shopify is already stopping some of the activity before an authorization is attempted.
If so, there are really two related problems:
- Automated checkout creation is generating thousands of bogus abandoned checkouts, customers, and marketing records.
- The same pattern has previously progressed to payment authorization, creating a legitimate card-testing concern.
That distinction may help get the case escalated beyond general Plus support and into the appropriate checkout/payments/security teams.
Checkout Validation Functions
A cart/checkout validation Function seems like one of the more interesting merchant-controlled options available to a Plus store, but I would be very cautious about blocking on a single attribute.
I would not rely solely on:
- ZIP code
- Email domain
- Phone number
- Product/SKU
- Order value
All of those are easy for the attacker to change, and most could eventually match a legitimate customer.
If you can identify a combination of characteristics that is effectively unique to the attack, a validation Function could potentially be useful.
However, there is an important question Shopify should answer first:
At what point is the abandoned checkout record created relative to execution of the validation Function?
If Shopify has already created the checkout before the Function rejects it, the Function could successfully prevent the bot from progressing while still leaving you with thousands of abandoned-checkout records.
In other words, it could protect the transaction without solving the data pollution.
I would specifically ask Plus support to confirm the execution order before investing much development time into that approach.
Shopify Plus Bot Protection
The documented Plus bot-protection feature doesn’t seem particularly well suited to this type of attack if it is limited to scheduled protection windows.
That makes sense for things like:
- Flash sales
- Product launches
- Limited releases
- Known high-demand events
It makes much less sense for automated abuse that has been occurring continuously for months.
I would still ask Plus support whether they have internal or continuous bot mitigation options that can be enabled during an active attack.
There may be controls available to Shopify internally that aren’t exposed as merchant-facing settings.
With 11,000+ fraudulent checkout creations, I think you have a reasonable case for asking Shopify to treat this as an active infrastructure-abuse issue rather than normal bot traffic.
Shopify Payments / Velocity Controls
This is the area where I would push particularly hard.
You have considerably more evidence than simply saying, “We’re seeing suspicious checkouts.”
You have documented:
- Approximately 130 abandoned checkouts during a normal month
- More than 11,000 since September 1
- Approximately 3,800 in a single day at the peak
- Roughly 94% of the 90-day abandoned-checkout export attributed to the bot
- Repeated ZIP-code patterns
- Repeated fake/reserved phone numbers
- Repeated/generated email patterns
- One-unit, low-value carts
- Products being rotated when one becomes unusable
- No corresponding storefront traffic
- Previous ~$5 orders that successfully reached authorization
That is a substantial behavioral pattern.
I would explicitly ask Plus support to escalate the case to the team responsible for Shopify Payments risk/card-testing abuse and checkout security, rather than allowing it to remain a general support ticket.
Shopify necessarily has fraud, velocity, and abuse controls at the platform/payment-processing level that merchants cannot configure themselves.
Those controls also aren’t likely to be fully documented publicly, for obvious reasons.
This is exactly the layer where a behavioral/velocity response makes more sense than blocking individual ZIP codes, products, or email addresses.
The Fake Marketing Subscribers Are a Separate Problem
I would also raise the marketing subscriptions separately.
Thousands of fake checkout attempts becoming customer records is already undesirable. Having those fake customers automatically added as marketing subscribers is potentially worse.
That can contaminate:
- Customer segmentation
- Marketing analytics
- Email-list quality
- Deliverability metrics
- Subscriber counts
- Marketing costs
- Consent records
I would ask Shopify specifically why these checkout attempts are resulting in marketing consent being recorded and whether the affected records can be identified and cleaned up in bulk.
I certainly wouldn’t treat those addresses as legitimate subscribers simply because Shopify currently shows them as subscribed.
Purging the Abandoned Checkouts
I think Shopify ultimately needs to own this part of the problem.
Stopping the attack tomorrow doesn’t undo the 10,000+ bogus checkout records that have already been generated.
If Shopify doesn’t provide merchants with a supported bulk-delete mechanism or API method for removing them, I would ask Plus support whether Shopify can perform a server-side cleanup.
Ideally, they should be able to identify the affected records based on:
- Date range
- Known attack characteristics
- Repeated contact information
- Checkout patterns
- Other internal identifiers available to Shopify
Even if the fraudulent checkout attempts aren’t costing you transaction fees, permanently polluting your store’s checkout and customer data is still a real operational problem.
Cloudflare Probably Isn’t the Solution
I would be cautious with the Cloudflare approach.
Putting Cloudflare in front of the storefront domain does not necessarily mean Cloudflare is sitting in front of every request to Shopify’s hosted checkout infrastructure.
If the attacker can reach a Shopify checkout endpoint without traversing the portion of the request path controlled by your Cloudflare configuration, your WAF and rate-limiting rules won’t see those requests.
I would therefore not change DNS/proxy architecture on a production Plus store specifically to combat this unless Shopify confirms:
- The configuration is supported.
- Checkout traffic will actually traverse your Cloudflare controls.
- It won’t interfere with Shopify checkout, Payments, Shop Pay, accelerated checkout, webhooks, or other Shopify functionality.
Otherwise, you could introduce additional complexity without actually touching the traffic causing the problem.
Avoid Playing Whack-a-Mole
I think you’ve already demonstrated why blocking individual attributes isn’t going to be a durable solution.
If you block the cheap SKU, the bot chooses another product.
The same thing can happen if you block:
- A ZIP code
- A phone number
- An email address
- An email provider
- A particular product
- A particular cart value
Those are all inexpensive attributes for an automated attacker to rotate.
The durable solution needs to be based on behavior and velocity at Shopify’s checkout infrastructure level, rather than individual values the attacker can change.
What I Would Ask Shopify to Escalate
Given that you’re on Plus and using Shopify Payments, I would ask for three specific escalations:
1. Checkout / Security
Ask what Shopify can do server-side to detect, challenge, or rate-limit the automated checkout creation before it generates abandoned-checkout and customer records.
2. Shopify Payments / Risk
Ask whether Shopify can apply or adjust card-testing and velocity protections for the store based on the documented attack history, particularly since some earlier attempts successfully reached authorization.
3. Data Cleanup
Ask whether Shopify can identify and purge the bot-generated abandoned checkouts, customer records, and incorrect marketing subscriptions—or provide a supported bulk method for you to do it.
I would also ask Shopify one very specific technical question:
Does a cart/checkout validation Function execute early enough to prevent an abandoned checkout from being created, or does it only prevent the customer from proceeding after the checkout already exists?
That answer determines whether building a validation Function actually addresses your primary problem.
Bottom Line
You’ve done considerably more investigation than most merchants reporting “bot traffic.”
You’ve established a normal baseline, quantified the increase, identified repeating attributes, documented the product-switching behavior, compared checkout activity against storefront sessions, identified fake customer/marketing records, and documented previous payment authorizations.
At 11,000+ attempts and roughly 3,800 in a single day, I don’t think “install a fraud app,” “block the ZIP code,” or “remove the cheap product” is an adequate resolution.
The attack appears to be occurring primarily at a layer that Shopify controls, and the behavior is occurring at enough volume that Shopify should have significantly better visibility into it than any storefront app could.
I would keep pushing for escalation to the teams responsible for checkout security, automated abuse, and Shopify Payments risk, while using the Plus support case to get definitive answers about validation Functions, cleanup of the existing records, and any server-side velocity controls Shopify can apply.