This guide covers everything you need to know about the native WooCommerce integration in BricksMembers. With this integration, you can automatically assign membership levels when customers purchase WooCommerce products—no webhooks or complex configuration required.
Why Use the Native Integration?
While BricksMembers supports WooCommerce through webhooks, the native integration offers several advantages:
- Zero configuration complexity — No webhooks to set up
- Instant level assignment — Levels are assigned immediately when orders complete, without waiting for webhook delivery
- Automatic user creation — Optionally create WordPress accounts for guest checkout customers
- WooCommerce Subscriptions support — Full support for recurring subscriptions with automatic level management
- Variation support — Map individual product variations to different membership levels
- Refund handling — Automatically remove levels when orders are fully refunded
Prerequisites
- WooCommerce installed and active
- At least one WooCommerce product created
- At least one membership level created in BricksMembers
- For subscriptions: WooCommerce Subscriptions plugin (optional)
Step 1: Enable the WooCommerce Module
First, enable the WooCommerce integration module:
- Go to BricksMembers → Settings → Modules
- Find WooCommerce in the list
- Enable the toggle
- Click Save Settings
Once enabled, you’ll see a new WooCommerce menu item under BricksMembers.
Step 2: Configure Integration Settings
Navigate to BricksMembers → WooCommerce to configure the integration.
User Creation Settings
Create WordPress users for guest checkout orders
- When enabled: If a guest checks out without an account, BricksMembers automatically creates a WordPress user account using their billing email. The new user receives the assigned membership level.
- When disabled: Guest orders won’t receive membership levels. Only logged-in customers get levels assigned.
- Recommendation: Enable this for most membership sites to ensure all customers get access.
Default user role for new users
- Select the WordPress role assigned to automatically created users
- Default: Subscriber
- You can create custom roles in BricksMembers → Settings → General → Manage User Roles
Level Assignment Settings
Assign levels when order status is “Processing”
- When enabled: Levels are assigned as soon as payment is received (order goes to “Processing” status)
- When disabled: Levels are only assigned when orders are manually marked “Completed”
- Recommendation: Enable this for most setups. Digital products typically don’t need fulfillment, so waiting for “Completed” status is unnecessary.
Auto-complete orders with virtual-only products
- What it does: Automatically marks orders as “Completed” when they contain only virtual products
- Why this matters: By default, WooCommerce only auto-completes orders that are both virtual AND downloadable. Membership products are typically virtual but not downloadable, so they stay in “Processing” forever.
- When enabled: Orders with virtual-only products automatically complete, triggering level assignment immediately.
- Note: When this is enabled, the “Assign levels on Processing” option is automatically disabled since orders will complete instantly anyway.
Remove levels when order is fully refunded
- When enabled: If you issue a full refund, the membership level is automatically removed
- Partial refunds: Partial refunds do not trigger level removal—only full refunds do
- Recommendation: Enable this to ensure refunded customers lose access
WooCommerce Subscriptions Settings
If you have WooCommerce Subscriptions installed, you’ll see additional options:
Remove levels when subscription is cancelled or expires
- When enabled: Levels are removed when a subscription ends (cancelled or expired)
- Recommendation: Enable this for subscription-based memberships
Remove levels when subscription is put on hold
- When enabled: Levels are removed when a subscription goes on hold (e.g., failed payment)
- When disabled: Users keep their level during hold periods, giving them time to resolve payment issues
- Recommendation: Depends on your business model. Some prefer to give customers a grace period.
Step 3: Map Products to Membership Levels
The User Level Mapping section shows all your membership levels with checkboxes for each WooCommerce product. Simply check the products that should grant each level.
Product Types
Products are organized into three categories:
Simple Products
- Standard WooCommerce products with no variations
- Includes simple subscription products
- Check a simple product to grant the level when that product is purchased
Variable Products (all)
- Parent variable products
- Checking a variable product grants the level for ANY variation of that product
- Useful when all variations should grant the same level
Variations
- Individual product variations (e.g., “Monthly Plan”, “Annual Plan”)
- Check specific variations to grant different levels for different options
- Variation names include the attribute values (e.g., “Membership – Monthly” or “Membership – Annual”)
Example Configurations
Example 1: Simple Tiered Membership
You have three products: “Basic Membership”, “Pro Membership”, “VIP Membership”
- Basic Member level: Check “Basic Membership”
- Pro Member level: Check “Pro Membership”
- VIP Member level: Check “VIP Membership”
Example 2: Variable Product with Different Tiers
You have one variable product “Membership” with variations: “Monthly $19”, “Annual $149”, “Lifetime $499”
- Monthly Member level: Check “Membership – Monthly”
- Annual Member level: Check “Membership – Annual”
- Lifetime Member level: Check “Membership – Lifetime”
Example 3: Course Bundle
You sell individual courses and an “All Access Pass”
- Course A Access level: Check “Course A”
- Course B Access level: Check “Course B”
- All Access level: Check “All Access Pass”
Then protect your content so Course A requires “Course A Access” OR “All Access”, etc.
Step 4: Test Your Configuration
Before going live, test your setup:
- Create a test product (or use an existing one)
- Map it to a membership level in BricksMembers → WooCommerce
- Create a test order:
- Log out or use a different browser
- Add the product to cart
- Complete checkout (use cash on delivery or a test payment gateway)
- Mark the order as Processing or Completed (depending on your settings)
- Verify the user has the correct level:
- Go to Users in WordPress
- Edit the test user
- Check their assigned membership levels
- Test refund handling:
- Issue a full refund on the test order
- Verify the level was removed (if “Remove on refund” is enabled)
Understanding Order Status Flow
WooCommerce orders go through several statuses. Here’s how BricksMembers responds to each:
| Status | BricksMembers Action | Notes |
|---|---|---|
Pending | No action | Waiting for payment |
Processing | Add level (if enabled) | Payment received, awaiting fulfillment |
Completed | Add level | Order fulfilled |
Refunded | Remove level (if enabled) | Only for full refunds |
Cancelled | No action | Order cancelled before completion |
Failed | No action | Payment failed |
For subscriptions with WooCommerce Subscriptions:
| Status | BricksMembers Action | Notes |
|---|---|---|
Active | Add level | Subscription is active and paid |
On-hold | Remove level (if enabled) | Payment failed, awaiting resolution |
Cancelled | Remove level (if enabled) | User or admin cancelled |
Expired | Remove level (if enabled) | Subscription period ended |
Setting Up Membership Products
For the best experience, configure your WooCommerce products correctly:
Simple Membership Product
- Create a new Simple product
- Check Virtual (no shipping needed)
- Set your price
- Optionally set Sold individually to prevent multiple purchases
- Publish the product
Subscription Product (requires WooCommerce Subscriptions)
- Create a new Simple subscription product
- Check Virtual
- Set subscription price and billing period
- Configure trial period if desired
- Publish the product
Variable Product with Multiple Plans
- Create a new Variable product
- Add an attribute (e.g., “Plan” with values “Monthly”, “Annual”, “Lifetime”)
- Check Used for variations
- Go to Variations tab and generate variations
- For each variation:
- Check Virtual
- Set the price
- Publish the product
Troubleshooting
Level Not Assigned After Purchase
Check these common causes:
- Module not enabled: Verify WooCommerce module is active in BricksMembers → Settings → Modules
- Product not mapped: Check that the product is checked for the desired level in BricksMembers → WooCommerce
- Order status: Check if the order reached “Processing” or “Completed” status. Pending orders don’t trigger level assignment.
- Guest checkout without user creation: If “Create WordPress users” is disabled, guest orders won’t receive levels
- Variation vs parent product: If using variations, make sure you mapped the specific variation, not just the parent product (unless you want all variations to grant the same level)
Level Not Removed on Refund
- Setting not enabled: Verify “Remove levels when order is fully refunded” is checked
- Partial refund: Only full refunds trigger level removal. Partial refunds leave the level intact.
Orders Stuck in “Processing”
If your orders stay in “Processing” and never complete automatically:
- Enable “Auto-complete orders with virtual-only products”: This automatically completes orders with virtual-only products
- Or enable “Assign levels when order status is ‘Processing'”: This grants levels when payment is received, without waiting for completion
Subscription Level Not Removed on Cancel
- WooCommerce Subscriptions required: Subscription handling only works with WooCommerce Subscriptions plugin installed
- Setting not enabled: Verify “Remove levels when subscription is cancelled or expires” is checked
Developer Hooks
For developers who need to extend the integration, BricksMembers fires several action hooks:
// Fired when a level is added via WooCommerce order
do_action( 'brm_woocommerce_level_added', $user_id, $level_id, $order_id );
// Fired when a level is removed via WooCommerce order/refund
do_action( 'brm_woocommerce_level_removed', $user_id, $level_id, $order_id );
// Fired when a level is added via subscription
do_action( 'brm_woocommerce_subscription_level_added', $user_id, $level_id, $subscription_id );
// Fired when a level is removed via subscription
do_action( 'brm_woocommerce_subscription_level_removed', $user_id, $level_id, $subscription_id );
Native Integration vs Webhooks
BricksMembers supports WooCommerce through both native integration and webhooks. Here’s when to use each:
Use Native Integration when:
- WooCommerce is on the same WordPress site as BricksMembers
- You want the simplest setup with zero configuration
- You need instant level assignment without webhook delays
- You’re using WooCommerce Subscriptions
Use Webhooks when:
- WooCommerce is on a separate site (multi-site ecommerce setup)
- You need complex event-based logic (e.g., different actions for different order events)
- You’re already using webhooks for other integrations and want consistency
For most users with WooCommerce on the same site, the native integration is the recommended approach.
Best Practices
- Mark membership products as Virtual: This enables auto-completion and prevents shipping calculations
- Enable “Assign levels when order status is ‘Processing'”: Give customers immediate access after payment
- Enable “Auto-complete orders with virtual-only products”: Ensures orders complete automatically for clean order management
- Enable refund handling: Automatically revoke access for refunded orders
- Test thoroughly: Always test purchases, refunds, and (if applicable) subscription lifecycle before going live
- Use variations for pricing tiers: If you have monthly/annual options, use a variable product with variations—this lets you map each tier to a different level
With the native WooCommerce integration configured, your membership site will automatically handle level assignment and removal based on customer purchases—no manual intervention required.