Ropeline Check my site

How to stop fake account signups on WooCommerce

A guide for store owners. Updated October 13, 2026. Settings are named as in WooCommerce 11.

You open your customer list and find hundreds of accounts you've never heard of: random letters at throwaway email addresses, all made in the middle of the night, none with an order. That's bots, and they're not doing it for fun.

Why bots make fake accounts

1. Close the doors you don't use

In WooCommerce, go to Settings, Accounts & Privacy:

In WordPress, go to Settings, General and untick Anyone can register unless you run a membership site. A shop doesn't need WordPress's own signup page; WooCommerce has its own.

And in WooCommerce, Settings, Products, tick Reviews can only be left by "verified owners", so an account alone can't post reviews.

2. Add a honeypot to the signup form

A honeypot is a field people can't see but bots fill in. In a small plugin or your theme's functions.php:

add_action( 'woocommerce_register_form', function () {
	echo '<p style="position:absolute;left:-9999px" aria-hidden="true"><label>Leave this empty '
		. '<input type="text" name="hp_website" tabindex="-1" autocomplete="off"></label></p>';
} );

add_filter( 'woocommerce_registration_errors', function ( $errors ) {
	if ( ! empty( $_POST['hp_website'] ) ) {
		$errors->add( 'hp', 'Sorry, something went wrong. Please try again.' );
	}
	return $errors;
} );

It stops simple bots. Better ones read the form and skip hidden fields, so it works best together with the next two steps.

3. Refuse throwaway email addresses

add_filter( 'woocommerce_registration_errors', function ( $errors, $username, $email ) {
	$domain = strtolower( substr( strrchr( $email, '@' ), 1 ) );
	if ( in_array( $domain, array( 'mailinator.com', 'yopmail.com', 'guerrillamail.com' ), true ) ) {
		$errors->add( 'throwaway', 'Please use an email address you can read.' );
	}
	return $errors;
}, 10, 3 );

Add the domains you see in your own fake accounts. There are thousands of throwaway services, so a short list catches the common ones, not all.

4. Limit signups from one address

Real customers make one account. A limit like 3 new accounts an hour from one internet address stops a flood without bothering anyone, but it needs a plugin or a firewall rule: WooCommerce has no setting for it. Make sure it doesn't count accounts made while placing an order, or a busy office or café Wi-Fi could cost you a sale.

5. Clean up the accounts already there

Go to Users and filter by the Customer role. Fake accounts usually share a pattern: random names, throwaway domains, made within minutes of each other, and no orders. Before deleting any, check under WooCommerce, Customers that they have no orders, and delete in small batches.

Or: one setting

Ropeline Pro's signup protection does steps 2 to 4 for you. WordPress's signup page and WooCommerce's My Account form get an invisible honeypot and a timing check (a form filled in faster than a person can type is a bot). Every signup, at the classic checkout and the checkout block too, is checked against a list of throwaway email services. And one address can make 3 new accounts an hour (1, if other Ropeline stores reported it), never counting accounts made while placing an order. Most real customers never notice any of it.

See what bots can see on your store. The free check takes 10 seconds. Ropeline Pro is free for 14 days.

Check my site free See Ropeline Pro