How to Change the Default User Role for New WooCommerce Customers

How to Change the Default User Role for New WooCommerce Customers
On this page
  1. Why Change the Default Customer Role
  2. Step 1: Register the Custom Role
  3. Step 2: Assign the Role on Registration
  4. Troubleshooting
  5. Frequently Asked Questions
  6. Conclusion

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

PHP
/** 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

PHP
/** 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;
}
Change the default user role for new WooCommerce customers: the result in a test store
Result in a test store

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.

Leave a Reply

Schedule a call