You can change the default user role for new WooCommerce customers by registering a custom role and assigning it through a filter on the new-customer data array, instead of letting every registration default to the built-in “Customer” role. This is useful for stores that need an approval step or a different permission tier for new signups.
Why Change the Default Customer Role
- Require manual approval before granting full customer access (e.g. wholesale applications)
- Assign a custom role with different capabilities for a specific segment of buyers
- Separate new, unverified accounts from established customers for reporting purposes
Step 1: Register the Custom Role
/** Register a "Pending Approval" role for new WooCommerce signups */
add_action( 'init', 'register_pending_approval_role' );
function register_pending_approval_role() {
add_role( 'pending_approval', __( 'Pending Approval' ), array(
'read' => true,
) );
}Step 2: Assign the Role on Registration
/** Assign new WooCommerce customers the "Pending Approval" role instead of "Customer" */
add_filter( 'woocommerce_new_customer_data', 'assign_pending_approval_role' );
function assign_pending_approval_role( $customer_data ) {
$customer_data['role'] = 'pending_approval';
return $customer_data;
}
Troubleshooting
New Customers Can’t Do Anything After Registering
This is expected if your custom role only has the read capability — you’ll need to add whichever additional capabilities (shopping, checking out) your workflow requires, or build a manual approval process that upgrades the role afterward.
Assigning Multiple Roles at Once
WordPress supports multiple roles per user — pass an array instead of a single string, e.g. $customer_data['role'] = array( 'pending_approval', 'customer' );, if you need to combine the new role with existing customer capabilities.
Want the Role to Depend on What Was Purchased
The woocommerce_new_customer_data filter fires at registration, before any purchase — if you need role changes based on a specific product bought, that requires a separate hook tied to order completion instead.
Frequently Asked Questions
Does this affect existing customers, or only new signups?
Only new registrations going forward — existing customer accounts keep their current role unless changed separately.
Can I remove the custom role later without breaking existing users?
Removing a role definition doesn’t delete users assigned to it, but they’ll lose whatever capabilities that role granted — reassign affected users to a valid role first.
Is a plugin needed for approval-based registration?
Not strictly — this snippet is the foundation, but a dedicated user-approval plugin can add admin notification emails and a review dashboard if you need a fuller workflow.
Conclusion
Changing the default user role for new WooCommerce customers takes two hooks: registering the custom role, then assigning it via the new-customer-data filter. Just make sure the role’s capabilities actually support whatever your store expects new users to do.
See also How to Set Up a WooCommerce Login Redirect by User Role. Then read How to Get a List of All Customers in WooCommerce.
Prefer no code? All-in-One Utilities Woo Add-on adds over 50 WooCommerce features, so you can switch them on without code.