InvestigationDispatch N°02

Your signup form is being used to bury credit card fraud

Attackers replay unprotected newsletter forms to flood a victim's inbox with thousands of legitimate confirmation emails, concealing a single message that would expose a fraudulent transaction. Researchers who analysed 24 campaigns found the mail is almost impossible to filter, because it is genuine mail, correctly authenticated, sent by real shops that did nothing wrong except leave a form open.

Katherine Wood, a content lead at the fraud-prevention firm Signifyd, woke on a Sunday morning in 2024 to find several hundred unread messages in an inbox she describes as a tidy, tranquil place. They were in English, Chinese, Japanese, Russian and Polish. They thanked her for creating accounts on sites she had never visited and for signing up to newsletters she had never requested.

Buried somewhere in that flood was a receipt from the Apple Store for about $1,300.

By the time Wood found it, checked her card and phoned her bank, the order had already been collected in person from an Apple store in her city by a man recorded as "John W." Over the following three days she received more than 50,000 emails. She is still getting the occasional one.

Every one of those messages was generated by a signup form on somebody's website. Perhaps a few hundred of them. The forms were not hacked, and the companies that own them did nothing wrong beyond leaving a form open. If you run a Shopify store with an unprotected newsletter box in the footer, there is a reasonable chance one of them was yours.

A Sunday morning in February

The technique has a name in the security literature. Researchers call it subscription bombing, and in a paper presented in April 2026, published in Communications of the ACM, a team led by EPFL's Mathias Payer analysed 24 real campaigns comprising 46,970 unwanted emails.

Their description of the mechanism is worth quoting in full, because it explains why the attack is so hard to stop at the receiving end:

"The attacker registers the victim's email address with thousands of third-party online services, which act as amplifiers that flood the target's inbox with legitimate subscription confirmations and notification messages. Such emails are much harder to block automatically by the receiving email server."

Payer et al., Subscription Bombing: Email under Attack, Communications of the ACM, April 2026

The word doing the work in that paragraph is amplifiers. The attacker sends nothing. Your store sends it, from your domain, with your SPF and DKIM records correctly configured, which is precisely why it lands.

Why filters miss it Switzerland's National Cyber Security Centre noted in a February 2026 bulletin that because the mail comes from legitimate, correctly-authenticated servers, "traditional blacklists and spam filters usually fail."

The purpose is rarely harassment. Proofpoint, which published research on the technique in December 2025, measured bursts of more than 1,500 emails an hour and described the flood as cover: the victim is kept busy deleting while a single critical message, a password-change alert or a transaction confirmation, scrolls past unread.

Swiss authorities reached the same conclusion. In a bulletin dated 10 February 2026, the country's National Cyber Security Centre reported a rise in cases and stated plainly that "the aim of this attack is not harassment," but to conceal a single message, typically a security alert from a bank or an online shop where the attacker has already triggered a transaction.

The technique has also been adopted further up the criminal food chain. Proofpoint, citing research by Hornetsecurity, reported that the Black Basta ransomware group has weaponised subscription bombing directly: flood the target's inbox, then make contact over Microsoft Teams posing as IT support offering to fix the spam problem, and use that pretext to talk the victim into installing a remote access tool.

The trade in inbox noise

Subscription bombing is sold as a service. The EPFL researchers documented dark web listings for it, and noted that the technical bar is low: "some groups simply record the POST requests required to sign up for newsletters and then replay it with the new target address."

That sentence is the one for merchants to sit with. The attacker does not need to load your store, look at your theme, or interact with your form. They need the POST request once. After that your form is a line in a list, replayed against whichever address has been bought that week.

The researchers noted one obstacle to the replay approach, and it is the reason this article exists: "This is not always trivial, as many websites use CAPTCHAs or cross site request forgery" protections. A form with a working check on it is not worth the effort when there are thousands without one.

The same forms get used for other things. In April 2026, Cybernews collected reports from site operators who had found their own forms conscripted. One described an attacker using a "change credit card" form to validate a list of stolen cards overnight, rotating IP addresses on every request and starting at midnight when nobody was watching. Roughly 2,000 cards were tested and about ten percent came back valid, each confirmed with a $1 charge and refund. The operator had Cloudflare Turnstile installed on the form at the time, running on its invisible setting.

A second operator, running a newsletter company, described dealing with the problem for over a decade precisely because they do double opt-in, and so send a confirmation email to every address submitted.

None of these people were the target. All of them supplied the ammunition.

What it does to the store

So much for the stranger whose inbox is being buried. The second-order effect lands on the merchant, and it is the reason this is a business problem rather than a moral one.

Klaviyo, whose customers include a large share of Shopify's email volume, documents the same attack from the merchant's side and calls it list bombing: "a malicious attack where the attacker exploits a signup form or checkout page by making a large number of fake submissions, filling the associated list with emails and phone numbers that have not consented or are invalid."

That definition contains two populations, and merchants tend to picture only one of them. The invalid addresses, bot4471@tempmail.io and random strings at dead domains, hard-bounce. That is ugly but legible.

The real addresses are the expensive ones. Klaviyo is explicit that "bots can fill out forms with real email addresses, and profiles of people who have no knowledge of this are being added to marketing lists." Those are working inboxes belonging to people who have never heard of the store. The welcome flow fires. Some fraction of them do not unsubscribe. They press report spam, and that press is recorded against the sending domain.

Two doors, not one Klaviyo also documents the checkout route: bots start and abandon a checkout using someone's real address, and the event syncs as a profile. That bypasses the signup form entirely.

On Shopify the traffic arrives through two doors. Klaviyo names the footer newsletter form specifically, on the grounds that a form collecting an email address and nothing else is the cheapest thing on the internet to automate. The second is abandoned checkout: a bot starts a checkout with a real person's address, abandons it, and the event syncs into the email platform as a profile, at which point the abandoned-cart flow mails a stranger.

Which is why, when merchants report a checkout bot wave, the standing advice is to switch off abandoned-checkout emails. The point is not to save the emails. It is to stop the store's own automation from participating.

What follows is the mechanism, and the reason it outlives the attack that started it.

Figure 01 — The deliverability loopN°01
01 Unprotected form takes 900 submissions 02 Profiles created invalid + non-consenting 03 Bounces & complaints on your next send feeds into a cycle that no longer needs the bots 04 Reputation downgraded at the mailbox provider 05 Real mail filtered customers stop seeing you 06 Engagement collapses — itself a bad signal This part keeps turning AFTER THE ATTACK STOPS
Stops 01 to 03 are the attack. Stops 04, 05 and 06 form a cycle that sustains itself. Low engagement is itself an input to sender reputation, so once the inner loop is turning it no longer requires the bots. Merchants who close the form and expect an immediate recovery are usually surprised.

Closing the form stops the attack. It does not stop the damage, which continues for roughly a fortnight.

The arithmetic of a poisoned list

"Bad for deliverability" is not an actionable statement. The useful questions are where the thresholds sit, who enforces them, and how few injected subscribers it takes to cross one.

The number is public. Google's sender guidelines require bulk senders, defined as anyone sending more than 5,000 messages a day to Gmail addresses, to keep their spam complaint rate below 0.3% and to aim below 0.1%. A 10,000-person list clears the bulk-sender threshold on any campaign day. Google states that rates at or above 0.3% "will result in dramatic negative impacts on email delivery." Yahoo publishes the same figure.

Three complaints per thousand is the wall. One per thousand is where you want to live. And if you send fewer than 5,000 a day to Gmail, the formal requirement does not bind the sender. The reputation system underneath it still does.

So: model it. Below is a 10,000-subscriber Shopify list, healthy at baseline, with fake profiles injected at four scales. The assumptions are stated below the table. They are estimates rather than measurements, and the section beneath shows exactly how hard they are working.

Figure 02 — Where a healthy list crosses the lineN°02
Modelled — 10,000 genuine subscribers, single campaign send
Injected profiles Hard bounce rate Spam complaint rate What happens
NoneBaseline healthy list 0.40% 0.04% Normal inbox placement.Well inside every threshold.
300 a quiet week of bot traffic 2.43% 0.11% Already past Google's recommended 0.1%.Nothing visibly breaks. This is the dangerous stage.
900 one weekend of a real attack 6.15% 0.25% Closing on the 0.3% enforced limit.ESP warnings; placement starts slipping.
2,500 an unattended attack 14.32% 0.60% Double the enforced limit.Throttling, bulk-foldering, possible blocklisting. In practice no ESP completes this send; Klaviyo throttles or suspends long before the end of it.
The two numbers that matter Under these assumptions, a healthy 10,000-person list crosses Google's recommended 0.1% at roughly 250 injected profiles, and its enforced 0.3% at roughly 1,120. Not tens of thousands. Two hundred and fifty.
Model assumptions — substitute your own Of each injected profile: 70% invalid addresses that hard-bounce, 30% real addresses belonging to people who never consented. Of that 30%, 8% file a spam complaint on first contact. Baseline list bounces at 0.40% and complains at 0.04%. Complaint rate is calculated against delivered mail; bounce rate against messages attempted. Every injected profile is assumed mailable (single opt-in) and to receive the send. No ESP-side validation or auto-suppression is modelled, though in practice Klaviyo would intervene well before the bottom row. Illustrative figures for reasoning about scale, not measured results from any store.

Sensitivity — where this breaks The result turns almost entirely on that 8% complaint rate, and we have no source for it; we chose it as a deliberately unfavourable estimate. Below about 6.7%, a 300-profile injection stays inside Google's recommendation and the alarming version of this argument evaporates. At 3% it takes roughly 900 profiles to cross. The 70/30 split matters too: at 90/10, row two falls to 0.06% and is fine. So treat the crossover points above as the pessimistic end of a range, and substitute your own numbers. The shape of the finding survives; the precise threshold does not.
The second row is the one that matters. Three hundred injected profiles on a ten-thousand list, three percent, is not a dramatic attack. It is a slow week of unfiltered bot traffic, and under the assumptions below it is already past the rate Google asks senders to stay under. No dashboard reports this. The merchant finds out from the open rate, several weeks later.

Two consequences follow from those numbers.

The complaint rate does the lasting damage. Bounces are ugly, and a send at fourteen percent hard bounces is an emergency in its own right; the sending platform will usually act on it before Gmail does. But bounces end when the addresses are suppressed. Complaints do not get cleaned up. They feed a rolling reputation score that only weeks of clean sending will work off. This is why the real addresses in a bombed cohort cost more than the fake ones, despite being fewer.

Injected profiles also appear on the invoice. Klaviyo prices on active profiles, and most competitors price similarly. Two thousand five hundred phantom subscribers are billable every month until they are dealt with, and they generate nothing. Suppressing them, which is the correct move for deliverability in any case, also removes them from the bill.

Do not do this

The instinct on discovering a bombed list is to send a re-permission campaign asking subscribers to confirm they still want to hear from you. That mails every injected profile. The full bounce load and the full complaint load arrive in one send, at the moment the domain can least absorb them. Suppress first. Mail second.

Anatomy of a bombed signup

In a list view, injected profiles are indistinguishable from real ones. In a profile view they are not. Below is a composite record assembled from the pattern, with the diagnostic fields marked.

Figure 03 — Profile record, annotatedN°03
Emailm.harrington1987@example.com (a real, deliverable address)1
Created03:14:07 UTC — 47 other profiles created in the same minute2
SourceFooter newsletter form (email only)3
Sessions before signup0 — no page views recorded4
ConsentSingle opt-in, form submit5
Name fieldsempty·
LocationResolved from IP — 41 countries across the same cohort6
Engagement0 opens, 0 clicks, 1 spam complaint·
1A real, deliverable addressBelonging to a real person. This is the one that complains.
2VelocityHuman signups don't cluster 48 to a minute.
3Single-field formThe cheapest surface to automate on any store.
4No prior sessionNobody browsed. The form was posted to directly.
5Single opt-inStraight onto the mailable list, no confirmation step.
6Geographic scatterDistributed proxies, so IP blocking will not help.
Field 2 is the query to run. Sort profiles by creation timestamp and look for individual minutes containing dozens of records. That sort usually surfaces the whole cohort inside a minute and gives the exact window to suppress. No single field here convicts a profile. Field 4 also describes a privacy browser; field 6 also describes a VPN. The conjunction is diagnostic, and the unit of judgement is the cohort rather than the individual.

Triage and clean-up

The order matters more than any individual step here. Several of these make things worse if run out of sequence.

  1. Pause every automated flow that mails new profiles. Welcome series, abandoned checkout, browse abandonment. Do this before anything else. While the investigation proceeds, those flows are mailing the attack on the store's behalf.
  2. Sort profiles by creation timestamp and identify the injected window. Note the start and end times precisely.
  3. Suppress the cohort. Do not delete it. Deleted profiles can be re-imported, or simply re-submitted by the same bots the following night. Suppressed addresses cannot be mailed again in either case. Deletion feels tidier and is worse.
  4. Do not send a re-permission campaign. See the advisory above. If you genuinely cannot distinguish real signups from injected ones in the window, mail only those with a recorded session or a purchase.
  5. Resume sending to the engaged segment only, meaning 30- or 60-day openers, for two to three weeks. Reputation is rebuilt by the ratio rather than the count. A smaller send with high engagement and near-zero complaints restores standing faster than a full-list send does. The reason to send less is not that volume caused the damage. It is that every message to an unengaged address is another opportunity to be wrong while the domain has no credit.
  6. Watch your complaint rate weekly, in Google Postmaster Tools. This is the instrument the problem has been hiding from. It is free, it reports the actual Gmail-measured spam rate and domain reputation against the 0.3% line, and it takes about ten minutes to set up with a DNS record. Set it up before it is needed. Recovery is measured in weeks, and judging it from the next campaign leads merchants to change three things at once.
  7. Then, and only then, resume normal sending volume.
On double opt-in

Turn it on. It is the difference between an injected profile and an injected subscriber, and it caps exposure at a single confirmation send rather than every campaign thereafter. Be clear about what it does not do: the confirmation email still goes to every address submitted. The bounces still land, and a person who never signed up still receives unsolicited mail from the store's domain. In a subscription bombing attack that confirmation email is the payload. Double opt-in limits the damage to the merchant. It does nothing for the victim.

Then close the door

Protect the newsletter form, not just the contact form

Spambuster scores newsletter signups with invisible Google reCAPTCHA, applied to the form that usually is not covered. It handles the other six Shopify form types as well, and adds honeypot traps on the Premium plan.

Start 14-day free trial →
No credit card to try·From $3/mo·Billed through Shopify

Shutting the doors

The clean-up costs two to three weeks of suppressed sending volume, at whatever the list is worth per week. It works. It works less well the second time, because each recovery starts from a lower base. The durable work is at the form.

Shopify's built-in protection does cover the newsletter form, with one constraint: the storefront CAPTCHA setting groups contact, newsletter and blog comments under a single checkbox. There is no way to protect one and leave another frictionless. As covered in our first dispatch, that setting also fails silently in four specific circumstances, none of which the Shopify admin reports.

What actually holds, in rough order of effort:

One scoping note. Klaviyo's definition covers phone numbers as well as email addresses, and SMS bombing is a separate and considerably worse problem, because carrier complaint thresholds are stricter and enforcement is blunter. It deserves its own dispatch rather than a paragraph here.

None of the above is exotic. It is ordinary hygiene for a form on the public internet. The reason so few Shopify stores bother is that the failure mode is invisible right up until the quarter it is not.

The merchants whose forms flooded Katherine Wood's inbox never found out that they had. Most of them still do not know. That is the ordinary condition of this attack: the store is neither the target nor the victim, only the instrument, and the only party positioned to take the instrument away is the store.

About this report

Spambuster builds form-spam protection for Shopify storefronts, and sells one of the defences described above. Figure 02 is a model rather than a measurement; its assumptions are printed alongside it so they can be argued with. Sources are linked inline throughout. Corrections, and measured figures from a real incident, to contact@jola.com.au

Keep the phantoms off your list.

Invisible scoring on newsletter signups, contact forms, comments and reviews, login, registration, password reset and the order form. Two-minute setup, no keys to paste, tuned so real customers do not notice it. If our service is unreachable, the form still submits.

Install on Shopify · free for 14 days →
No credit card to try·2-minute setup·Cancel anytime