How to Stop Spam Signups on Shopify, WordPress, and Webflow (Without CAPTCHAs)
Platform built-in protections fall short against modern bots. Learn how to protect Shopify, WordPress, and Webflow forms with server-side email validation, plus a preview of upcoming native plugins.
The Spam Signup Problem on Every Platform
If you run an online business, you have a spam signup problem. It doesn't matter if you're on Shopify, WordPress, or Webflow. Bots and bad actors are flooding your forms, creating fake accounts, and polluting your data. The symptoms look different on each platform, but the root cause is always the same: nothing is checking whether the person behind that email address is real.
Spend ten minutes in any Shopify community forum and you'll find merchants buried in fake customer accounts. Bots sign up to harvest discount codes, generate fraudulent orders that waste fulfillment time, and inflate customer counts that make analytics meaningless. One merchant reported 400 fake accounts created in a single weekend, each one redeeming a 20%-off welcome coupon.
WordPress is even worse. Registration spam is the number one support issue across hosting providers. Without protection, a typical WordPress site receives 50 to 200 spam registrations per day. These accounts then post spam comments, submit fake contact forms, and clog up WooCommerce order queues. The plugin ecosystem offers dozens of anti-spam solutions, but most use techniques from 2015 that modern bots walk right through.
Webflow forms get hammered by bots submitting junk data that flows directly into your connected services. Every fake newsletter signup lands in Mailchimp. Every bogus lead form entry goes to HubSpot. Your sales team wastes time following up on leads that never existed, and your email deliverability tanks because you're sending to addresses that bounce.
To put some numbers on it:
- E-commerce sites see 20 to 40% fake account creation rates across platforms
- WordPress sites without protection receive 50 to 200 spam registrations per day
- Form spam accounts for up to 80% of all submissions on unprotected Webflow sites
- Discount code abuse from fake accounts costs merchants an average of $2,300/month
The problem is universal. But until now, the solutions have been platform-specific and mostly inadequate. Every platform tells you to add a CAPTCHA. And as we covered in our analysis of why CAPTCHAs are dead, that advice is dangerously outdated.
Why Platform Built-In Protections Fall Short
Each platform offers some form of spam protection out of the box. And each one has fundamental blind spots that modern bots exploit.
Shopify ships with basic spam protection that amounts to keyword filtering and optional reCAPTCHA on customer registration forms. The keyword filter catches the most obvious abuse (accounts named "BUY CHEAP PILLS") but does nothing against bots that use realistic-looking names. reCAPTCHA is the default recommendation in Shopify's documentation, but CAPTCHA-solving services bypass it for $0.003 per solve. Shopify Flow offers some automation capabilities, but it requires merchants to build their own detection rules from scratch, which most don't have the expertise to do effectively.
WordPress leans on Akismet, which is excellent at catching comment spam but was never designed for registration fraud. Akismet analyzes content. It checks whether a comment looks spammy. It doesn't check whether the email address submitting a registration form belongs to a real person. The broader WordPress plugin ecosystem is deeply fragmented. WPForms, Contact Form 7, and Gravity Forms each need separate anti-spam configurations. Most anti-spam plugins use honeypot fields (invisible form fields that bots fill in) and blocklists. Modern headless bots skip honeypots entirely, and static blocklists go stale within weeks as new disposable email services appear constantly.
Webflow relies on Cloudflare Turnstile and optional honeypot fields. Turnstile is a better user experience than traditional CAPTCHAs, but it's still a client-side challenge. It tests whether the visitor's browser behaves like a real browser, which AI-powered browser automation tools increasingly pass. And Webflow has no built-in email validation at all. Form submissions go straight to whatever service you have connected (Mailchimp, HubSpot, Airtable, Zapier) with zero verification that the email address is real, let alone that it belongs to a legitimate person.
All three platforms share the same blind spot: none of them validate the email itself. They try to answer "is this a bot clicking?" when the real question is "is this a legitimate person with a real email address?" Those are very different questions, and the first one is getting harder to answer every day as bots get more sophisticated.
Shopify: How to Stop Fake Account Creation
Fake Shopify customer accounts aren't just annoying. They cost real money. Bot-created accounts abuse discount codes, inflate customer counts that throw off your analytics, spam your checkout flow, and generate fraudulent orders that waste fulfillment time and shipping costs. Some merchants report that fake accounts consume 30% or more of their promotional budgets.
Here are two approaches to protecting your Shopify store with BigShield, from no-code to developer-grade.
Approach 1: Shopify Flow + Webhook (No Code)
Shopify Flow is available on all Shopify plans and lets you build automations with a visual editor. You can create a flow that validates every new customer email through BigShield and takes action on suspicious accounts.
To set it up:
- In your Shopify admin, go to Flow and create a new workflow
- Set the trigger to "Customer created"
- Add an action: "Send HTTP request" with the following configuration
- Parse the response and use a condition to check the score
- If the score is below your threshold, add actions to tag the customer and optionally remove their account
The HTTP request action should POST to the BigShield API:
POST https://bigshield.app/api/v1/validate
Content-Type: application/json
Authorization: Bearer ev_live_your_api_key_here
{
"email": "{{ customer.email }}"
}In the Flow condition, check if the returned score is below 30. If it is, tag the customer as "suspected-bot" and trigger whatever action you prefer: archive the customer, cancel any associated orders, or flag for manual review.
This approach validates customers after account creation, which means the account exists briefly before being caught. For most merchants, the few seconds between creation and tagging isn't a problem. But if you want to block fake accounts before they're created, you need the more advanced approach.
Approach 2: Shopify Functions (Advanced)
Shopify Functions let you run custom serverless logic that intercepts key actions in the Shopify workflow. With a custom app using the Cart Transform or Validation function extension, you can validate emails at the point of checkout or account creation.
// shopify-bigshield-validation/src/index.ts
import { BigShield } from 'bigshield';
const shield = new BigShield(process.env.BIGSHIELD_API_KEY!);
export async function validateCustomer(email: string) {
const result = await shield.validate(email);
if (result.score < 30) {
return {
valid: false,
reason: 'Email did not pass validation checks',
tags: ['suspected-bot'],
};
}
if (result.score < 50) {
return {
valid: true,
requiresReview: true,
tags: ['needs-review'],
};
}
return { valid: true };
}This function can be deployed as part of a Shopify app that hooks into the customer creation process. Accounts with scores below 30 are blocked before they ever appear in your customer list. Scores between 30 and 50 are flagged for review. Everything above 50 passes through cleanly.
Coming soon: Native BigShield Shopify App. We're building a Shopify app that you can install directly from the Shopify App Store. Paste your API key, choose your protection level, and every customer registration and checkout is automatically validated. No code, no Flow configuration, no custom app development. More details in the roadmap section below.
WordPress: Protect Registration and Contact Forms
WordPress spam comes from every direction. Registration spam floods your user database. Contact form spam wastes your time. WooCommerce fake orders drain your inventory and payment processing. And because WordPress's plugin ecosystem is so fragmented, you often need different solutions for each attack vector.
BigShield simplifies this. One API call validates any email, regardless of which form or registration flow it came from.
Protecting User Registration
Add this snippet to your theme's functions.php file or a site-specific plugin. It hooks into WordPress's registration process and validates the email before the account is created:
// Add to functions.php or a custom plugin
add_filter('registration_errors', 'bigshield_validate_registration', 10, 3);
function bigshield_validate_registration($errors, $sanitized_user_login, $user_email) {
$response = wp_remote_post('https://bigshield.app/api/v1/validate', array(
'headers' => array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . BIGSHIELD_API_KEY,
),
'body' => wp_json_encode(array(
'email' => $user_email,
)),
'timeout' => 5,
));
if (!is_wp_error($response)) {
$body = json_decode(wp_remote_retrieve_body($response), true);
if (isset($body['score']) && $body['score'] < 30) {
$errors->add('bigshield_blocked',
'<strong>Error:</strong> Please use a valid email address.'
);
}
}
return $errors;
}Define your API key in wp-config.php for security:
define('BIGSHIELD_API_KEY', 'ev_live_your_api_key_here');Protecting WooCommerce Registration
WooCommerce has its own registration flow separate from core WordPress. Add this hook to protect WooCommerce signups as well:
add_filter('woocommerce_registration_errors', 'bigshield_validate_woo_registration', 10, 3);
function bigshield_validate_woo_registration($errors, $username, $email) {
$response = wp_remote_post('https://bigshield.app/api/v1/validate', array(
'headers' => array(
'Content-Type' => 'application/json',
'Authorization' => 'Bearer ' . BIGSHIELD_API_KEY,
),
'body' => wp_json_encode(array('email' => $email)),
'timeout' => 5,
));
if (!is_wp_error($response)) {
$body = json_decode(wp_remote_retrieve_body($response), true);
if (isset($body['score']) && $body['score'] < 30) {
$errors->add('bigshield_blocked',
'Please use a valid email address to create an account.'
);
}
}
return $errors;
}Protecting Contact Forms
The same API call pattern works with WPForms, Contact Form 7, and Gravity Forms. Each plugin provides its own submission hook where you can add validation. For example, WPForms uses the wpforms_process_before action, Contact Form 7 uses wpcf7_validate, and Gravity Forms uses gform_validation. The BigShield API call is identical in each case. You just need to extract the email field and make the same HTTP POST.
For a deeper dive on building fraud-resistant forms, see our guide on building a signup form that prevents fraud.
Coming soon: Native WordPress Plugin. Install from the WordPress Plugin Directory, enter your API key, and the plugin automatically detects your installed form plugins (WPForms, CF7, Gravity Forms, WooCommerce) and protects all of them. Toggle which forms to protect, choose your action on suspicious submissions (block, flag, or require email verification), and monitor everything from a dashboard widget. No code needed.
Webflow: Clean Your Form Submissions
Webflow sites are particularly vulnerable to form spam because Webflow's form submissions flow directly into connected services without any server-side validation layer. When a bot submits your lead gen form, that junk data goes straight to HubSpot, Mailchimp, or whatever tool is on the other end. Your sales team follows up on fake leads. Your email lists fill with addresses that bounce. Your CRM data becomes unreliable.
Since Webflow does not offer server-side logic, you need either a client-side approach with a proxy or a no-code automation approach.
Approach 1: Custom JavaScript Embed + Serverless Proxy
This approach intercepts the form submission on the client side, sends the email to a lightweight serverless function for validation, and only allows the submission to proceed if the email passes.
First, deploy a small serverless function. Here is an example using a Vercel Edge Function:
// api/validate-email.ts (Vercel Edge Function)
export const config = { runtime: 'edge' };
export default async function handler(req: Request) {
if (req.method !== 'POST') {
return new Response('Method not allowed', { status: 405 });
}
const { email } = await req.json();
const result = await fetch('https://bigshield.app/api/v1/validate', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': 'Bearer ' + process.env.BIGSHIELD_API_KEY,
},
body: JSON.stringify({ email }),
});
const data = await result.json();
return Response.json({
allowed: data.score >= 30,
score: data.score,
});
}Then add this JavaScript snippet to your Webflow site's custom code section (in Site Settings, or on the specific page with the form):
<script>
document.addEventListener('DOMContentLoaded', function() {
var form = document.querySelector('[data-bigshield="protected"]');
if (!form) return;
form.addEventListener('submit', async function(e) {
e.preventDefault();
e.stopPropagation();
var emailField = form.querySelector('input[type="email"]');
if (!emailField) return;
var submitBtn = form.querySelector('[type="submit"]');
submitBtn.disabled = true;
submitBtn.value = 'Checking...';
try {
var res = await fetch('https://your-proxy.vercel.app/api/validate-email', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({ email: emailField.value }),
});
var data = await res.json();
if (data.allowed) {
form.submit();
} else {
var errEl = form.querySelector('.w-form-fail');
if (errEl) {
errEl.style.display = 'block';
errEl.textContent = 'Please use a valid email address.';
}
submitBtn.disabled = false;
submitBtn.value = 'Submit';
}
} catch (err) {
// On error, allow submission (fail open)
form.submit();
}
});
});
</script>Add the attribute data-bigshield="protected" to any Webflow form you want to protect. The script intercepts the submission, validates the email through your proxy, and only submits the form to Webflow if the score is above your threshold.
Important: never expose your BigShield API key in client-side JavaScript. The serverless proxy keeps your key on the server and only returns a pass/fail decision to the browser.
Approach 2: Zapier or Make Integration (No Code)
If you prefer a no-code approach, you can route Webflow form submissions through Zapier or Make (formerly Integromat) with a BigShield validation step.
Here is the workflow:
- Trigger: Webflow form submission (Zapier's built-in Webflow integration)
- Action: Webhooks by Zapier, POST to
https://bigshield.app/api/v1/validatewith the submitted email - Filter: Only continue if
scoreis greater than or equal to 30 - Action: Send validated data to your CRM (HubSpot, Mailchimp, Airtable, etc.)
Submissions that score below 30 are silently dropped. They never reach your CRM, your sales team never sees them, and your email lists stay clean. You can optionally add a Zapier action to log blocked submissions to a Google Sheet for monitoring.
This approach is slightly different from the JavaScript method. The form still submits to Webflow's native handling, but the downstream routing is conditional. The advantage is zero code changes to your Webflow site. The tradeoff is that submissions are not blocked at the form level, so they still show up in Webflow's form submission dashboard (but do not get forwarded to your real tools).
Coming soon: Dedicated Webflow Integration. We are building a single-script integration that you paste into Webflow's site-wide custom code settings. All forms on your site are automatically protected. No per-form configuration, no proxy to deploy, no Zapier setup. One script tag, and you are done.
The No-Code Future: BigShield Plugins (Coming Soon)
The code snippets and integrations above work today. But we know that most Shopify merchants, WordPress site owners, and Webflow designers do not want to write code or manage serverless functions. That is why we are building native plugins for all three platforms, with a target launch of Q3 2026.
All three plugins share the same design philosophy:
- One-click install from each platform's app store or plugin directory
- Paste your BigShield API key and you are protected immediately
- Choose your protection level: Strict (block scores below 40), Moderate (block below 30), or Permissive (block below 20)
- Dashboard widget showing blocked vs. allowed submissions, top threat signals, and trends over time
- Works with BigShield's free tier at 1,500 validations per month, no credit card required
Here is what each platform-specific plugin will offer:
Shopify App
- Automatic protection for customer registration and checkout flows
- Native Shopify Flow integration for custom automation rules
- Order risk scoring that adds BigShield data to Shopify's fraud analysis panel
- Bulk validation of existing customer lists to identify previously created fake accounts
WordPress Plugin
- Auto-detects installed form plugins: WPForms, Contact Form 7, Gravity Forms, Ninja Forms, Formidable Forms
- Protects core WordPress registration, login, and comment forms
- Full WooCommerce support: registration, checkout, and review forms
- wp-admin dashboard widget with real-time stats
- Multisite compatible
Webflow Integration
- Single script tag pasted into Webflow's site-wide custom code settings
- All forms on the site are automatically protected without per-form configuration
- Visual indicator on protected forms (optional badge showing the form is secured)
- Works with Webflow's native form handling and all third-party integrations
We are currently in closed alpha testing for all three plugins. Existing BigShield users will get first access to the betas. If you want early access, sign up for a free BigShield account and you will be notified as soon as your platform's plugin enters beta.
Why Server-Side Email Validation Beats Client-Side CAPTCHAs
Every approach in this article has one thing in common: it validates the email address server-side using signals that bots cannot fake. This is fundamentally different from CAPTCHAs, honeypots, and other client-side challenges.
Here is why that distinction matters:
| Protection Method | What It Tests | Bot Bypass Cost | User Friction |
|---|---|---|---|
| reCAPTCHA v2/v3 | Browser behavior | $0.003 per solve | High (puzzles, delays) |
| Cloudflare Turnstile | Browser behavior | $0.005 per solve | Low (invisible challenge) |
| Honeypot fields | Form interaction | $0 (headless bots skip them) | None |
| Domain blocklists | Known bad domains | $0 (use non-blocked domains) | None |
| BigShield (30+ signals) | Email legitimacy, IP, patterns, domain age, SMTP, and more | Prohibitively expensive at scale | None (invisible, under 100ms) |
Client-side protections try to determine if the visitor is a bot. Server-side email validation determines if the email is legitimate. Even if a sophisticated bot perfectly mimics human browser behavior and solves every CAPTCHA, it still cannot make xk7mq9vz@tempmail.io look like a real person's email. The signals are in the data, not the interaction. For a detailed breakdown of the 30+ signals BigShield runs and how they work together, see our post on stopping 95% of bot signups without CAPTCHAs.
This is also why BigShield is complementary to whatever protection you already have. Keep your Turnstile or reCAPTCHA if you want. Keep your honeypot fields. But add server-side email validation as the layer that actually catches the attacks that get through everything else. As the WriteCraft case study demonstrated, multi-signal validation catches 94% of fraud that single-method approaches miss.
Getting Started Today
You do not need to wait for native plugins. Every approach described in this article works right now with BigShield's API.
- Create a free BigShield account and get your API key. The free tier includes 1,500 validations per month, which is enough for most small to medium sites.
- Pick your platform's integration method from the sections above. Shopify Flow and Zapier require no code. The PHP and JavaScript approaches need a few minutes of setup.
- Choose your threshold. We recommend starting at a score of 30 for blocking (catches obvious bots) and 50 for flagging (catches suspicious signups for review). You can adjust based on your traffic.
- Monitor and tune. BigShield's dashboard shows you exactly what is being blocked and why. If you see false positives, raise your threshold. If spam is getting through, lower it.
For more implementation guidance, check out our complete guide to stopping bot email signups and the API documentation.
Spam signups cost real money, waste real time, and corrupt real data. Whether you are a Shopify merchant losing revenue to discount abuse, a WordPress site owner drowning in fake registrations, or a Webflow designer whose clients are complaining about junk form submissions, the fix is the same: validate the email before it enters your system. BigShield makes that possible on every platform, with or without code, in under 100ms.
Start free with 1,500 validations per month and stop spam signups on your platform today.