The WooCommerce B2B plugin provides a self-contained system for managing wholesale/B2B customers. Its core features — role-based pricing, shipping restrictions, payment restrictions, and registration approval — are all tightly coupled to the plugin's own user role framework. Any custom registration or management logic built outside the plugin will bypass these features and create an unmanageable, fragmented system.
Key principle: Do everything inside the B2B plugin. Do not build parallel registration forms or user management flows outside it.
Observed in practice on the [1] B2B WooCommerce site build.
The B2B plugin manages customer behavior at the role level. Each role carries its own rules for:
This mirrors how Salesforce handles permission sets: you define the rules on the role, then assign users to it.
For a new B2B setup with varied customer terms, the recommended starting approach is one unique role per customer. This provides maximum granularity and avoids assumptions about which customers share identical terms.
Benefits:
- Full control over each customer's pricing, shipping, and payment terms
- Roles can be cloned for new customers with similar terms, then renamed and adjusted
- If a contact leaves a company, the new contact simply gets assigned the same role — no reconfiguration needed
As the customer base grows and patterns emerge, roles can be consolidated (e.g., "10% discount tier," "15% discount tier") to reduce maintenance overhead.
Before configuring anything, both the project manager and developer should read the B2B plugin documentation top to bottom. The plugin has many interconnected features; understanding the full scope prevents wasted effort.
Navigate to B2B Settings → User Role Manager.
For each customer (or customer tier):
1. Create a new role with a descriptive key (e.g., madison_co_op, east_coast_wholesale_tier1)
2. Set capabilities — or copy an existing role and modify it
3. Configure role-specific rules (see Step 3)
Order matters: Create and configure all roles before creating user accounts. Assigning a role to a user is the last step, not the first.
For each role, configure the following in the B2B plugin settings:
Navigate to B2B Settings → B2B Registration.
Key configuration decisions:
| Setting | Recommendation |
|---|---|
| Default registration fields | Enable; use as the base |
| Custom fields | Add any extras here (e.g., tax exemption certificate upload) |
| User role selection | Disable — do not let registrants choose their own role |
| Approve new users | Enable — prevents unauthorized access to wholesale pricing before review |
To add fields not in the default set (e.g., tax exemption certificate upload), use the Add New Field option within the registration settings. Do not build a separate form outside the plugin.
Why this matters: A registration form built outside the B2B plugin cannot connect to the plugin's role assignment, approval workflow, or email system. The plugin's native form is fully customizable and must be used.
Navigate to B2B Settings → Email Settings. Customize all three templates:
These emails are sent through the site's existing SMTP configuration. Ensure the B2B plugin's email settings point to the configured SMTP plugin rather than attempting a separate setup.
Once all roles are configured and tested:
Soft launch approach: Set up all roles and backend configuration first. Then create a small batch of user accounts for trusted clients to test the system before opening it broadly.
Before building roles, compile a spreadsheet with one row per customer and columns for:
This spreadsheet drives role configuration. Roles should not be built until this data is clean and confirmed with the client.
| Pitfall | Consequence | Fix |
|---|---|---|
| Building registration form outside the B2B plugin | Role assignment, approval workflow, and email system all break | Rebuild inside the plugin using native fields + custom field additions |
| Creating user accounts before roles are configured | Users get assigned incorrect or no role; may see wrong pricing | Always configure roles first |
| Letting users select their own role at registration | Users can self-assign wholesale access | Disable role selection in registration settings |
| Skipping "Approve New Users" | Anyone can register and immediately see wholesale pricing | Enable approval workflow |
| SMTP misconfiguration in B2B email settings | Registration emails fail to send | Point B2B email settings to the existing site-wide SMTP plugin |