In this guide, I will show you how to enable or disable specific WooCommerce shipping methods based on customer roles in your online store.
This is especially useful when you want to offer exclusive shipping benefits to certain customer groups. For example, you may want wholesale customers to receive free shipping, while regular customers continue using standard shipping options.
Businesses that Hire WooCommerce Developers often implement role-based shipping as part of larger Custom WooCommerce Solutions designed to improve customer experience and increase conversions.
While WooCommerce includes a default “Customer” role, many store owners create additional roles such as:
- Wholesale Customer
- Premium Member
- VIP Customer
- Distributor
- B2B Buyer
Once these roles are in place, you can customize shipping methods for each group.
In this tutorial, we will cover two approaches:
- Using a WooCommerce plugin
- Using custom PHP code
Let’s get started.
Configuring Role-Based Shipping Using a Plugin
The easiest method is using a dedicated WooCommerce shipping plugin.
A plugin-based approach is recommended because:
- No coding knowledge is required.
- Setup takes only a few minutes.
- It supports both shipping and payment restrictions.
- It is easier to manage than multiple code snippets.
- Most premium plugins include ongoing updates and support.
Many businesses choose this method before investing in advanced Custom WooCommerce Solutions.
Step 1: Install a Conditional Shipping Plugin
Install a plugin that supports WooCommerce shipping conditions.
After activation, navigate to:
WooCommerce → Settings → Shipping Conditions
You can then create custom shipping rules based on customer roles.
Step 2: Create a Shipping Rule
Let’s assume you want to offer Free Shipping only to Wholesale Customers.
Create a condition similar to this:
Condition
User Role = Wholesale Customer
Action
Enable Free Shipping
All other customer roles will continue seeing standard shipping methods.
The setup may look like this:
- User Role: Wholesale Customer
- Shipping Method: Free Shipping
- Status: Enable
That’s it.
Configure Shipping by Shipping Zone
WooCommerce allows multiple shipping zones.
| Shipping Zone | Free Shipping |
|---|---|
| United States | Enabled |
| Canada | Enabled |
| Europe | Disabled |
A good shipping plugin lets you apply role-based shipping rules separately for each zone.
This gives you complete flexibility over international shipping.
Setting Up Role-Based Shipping Programmatically
If you prefer custom development, WooCommerce allows you to control shipping methods using PHP.
This approach is commonly used by companies that Hire WooCommerce Developers to create tailored eCommerce experiences.
Let’s walk through the process.
Creating a Custom User Role
First, create a custom customer role.
add_role(
'wholesale_customer',
'Wholesale Customer',
array(
'read' => true,
)
);
This code only needs to run once.
After execution, WordPress creates a new role called “Wholesale Customer”.
Assigning the Role to Customers
There are several ways to assign customer roles.
For example:
- Manually through WordPress Users.
- Automatically after purchasing a specific product.
- Through a membership plugin.
- Via custom registration forms.
- Through wholesale account approval systems.
The method depends on your business requirements.
Enable Free Shipping for a Specific Role
Now let’s show Free Shipping only to wholesale customers.
We can use the WooCommerce filter:
woocommerce_package_rates
Here is the code:
add_filter( 'woocommerce_package_rates', 'dkg_role_based_shipping', 25, 2 );
function dkg_role_based_shipping( $rates, $package ) {
// Allow free shipping for wholesale customers
if ( current_user_can( 'wholesale_customer' ) ) {
return $rates;
}
// Remove free shipping for all other users
foreach ( $rates as $rate_id => $rate ) {
if ( str_starts_with( $rate_id, 'free_shipping' ) ) {
unset( $rates[ $rate_id ] );
}
}
return $rates;
}
Once added, free shipping methods remain visible only for users with the Wholesale Customer role.
Everyone else will see standard shipping options.
Restrict a Specific Shipping Method
Sometimes you may want to disable only one shipping method instead of all free shipping methods.
For example:
if ( 'free_shipping:5' === $rate_id ) {
unset( $rates[ $rate_id ] );
}
This targets a specific shipping method ID.
You can find shipping method IDs under:
WooCommerce → Settings → Shipping → Shipping Zones
Offer Different Shipping Methods for Different Roles
You are not limited to free shipping.
| User Role | Shipping Method |
|---|---|
| Retail Customer | Flat Rate |
| Wholesale Customer | Free Shipping |
| VIP Customer | Express Shipping |
| Distributor | Local Pickup |
This approach allows you to create highly customized shipping experiences.
These advanced shipping workflows are frequently included in enterprise-level Custom WooCommerce Solutions.
Common Use Cases
Role-based shipping is commonly used for:
Wholesale Stores
Offer free or discounted shipping to wholesale buyers.
Membership Websites
Provide premium shipping benefits to members.
B2B WooCommerce Stores
Enable freight or pallet shipping methods for business customers only.
VIP Customer Programs
Reward loyal customers with faster shipping options.
Distributor Networks
Display specialized delivery methods based on account type.
Headless WooCommerce Stores
Modern Headless WooCommerce and WooCommerce Headless projects often use role-based shipping logic through APIs to provide personalized checkout experiences across web applications, mobile apps, and multiple storefronts.
Benefits of Role-Based Shipping
Implementing role-based shipping can help:
- Increase customer loyalty
- Improve conversion rates
- Encourage membership upgrades
- Simplify wholesale operations
- Create personalized shopping experiences
- Reduce shipping management complexity
For many WooCommerce stores, it becomes an important part of customer retention strategies.
Plugin vs Custom Code
| Plugin Approach | Custom Code Approach |
|---|---|
| Easy setup | Requires development knowledge |
| No coding required | Full customization |
| Regular updates | You maintain the code |
| Faster implementation | Greater flexibility |
| User-friendly interface | Developer-focused |
If you need simple role-based shipping rules, a plugin is usually the fastest solution.
If your store requires advanced business logic, custom development provides maximum control.
Many growing businesses eventually Hire WooCommerce Developers to implement complex role-based shipping systems, custom checkout rules, and scalable WooCommerce Headless architectures.
Final Thoughts
Role-based shipping in WooCommerce is a powerful way to personalize the shopping experience and reward different customer groups.
Whether you choose a plugin or a custom PHP solution, the process is straightforward and can significantly improve customer satisfaction.
By combining user roles with WooCommerce shipping zones, free shipping, flat rates, and custom delivery methods, you can create a highly flexible shipping system tailored to your business needs.
As your store grows, investing in Custom WooCommerce Solutions, exploring Headless WooCommerce, or choosing to Hire WooCommerce Developers can help you build more advanced and scalable shipping workflows.
If you have questions about WooCommerce shipping customization, feel free to leave a comment below.
#WooCommerce #Shipping #CustomWooCommerceSolutions #HeadlessWooCommerce #WooCommerceHeadless #HireWooCommerceDevelopers
Hi and welcome! I’ve spent more than 7 years helping WordPress users with easy-to-follow guides, tutorials, and practical tips all completely free.Need expert developer help? I’m just a message away.