This guide covers the native WooCommerce integration in BricksMembers. It is the recommended access-assignment layer when WooCommerce runs on the same WordPress site as BRM. It grants and removes levels directly from WooCommerce order and subscription events without needing generic webhooks.
Why Use the Native Integration?
For same-site WooCommerce stores, this native integration should usually be your base setup. If you also enable the Payments module, WooCommerce can additionally sync billing data into BRM so you can use billing dynamic tags, billing conditions, subscription loops, and member-facing billing screens.
- Zero configuration complexity — No webhook URLs, secrets, or field mappings 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
- Subscription plugin support — Works with WooCommerce Subscriptions, YITH WooCommerce Subscription, Subscriptions for WooCommerce (WP Swings), and WPSubscription for recurring membership access
- Variation support — Map individual product variations to different membership levels
- Refund handling — Automatically remove levels when orders are fully refunded
Important: Payments does not replace WooCommerce here. WooCommerce still handles the actual store and checkout. Payments complements it by turning WooCommerce billing data into BRM-native billing surfaces.
Prerequisites
- WooCommerce installed and active
- At least one WooCommerce product created
- At least one membership level created in BricksMembers
- For subscriptions: WooCommerce Subscriptions, YITH WooCommerce Subscription, Subscriptions for WooCommerce (WP Swings), or WPSubscription (optional)
Supported Subscription Plugins
BricksMembers supports these WooCommerce subscription plugins for recurring membership access:
- WooCommerce Subscriptions — Supports active, pending-cancel, cancelled, expired, and on-hold states. Use Also remove levels when subscription is cancelled for immediate revoke on cancellation, or Remove levels when subscription expires to keep access until the paid term ends.
- YITH WooCommerce Subscription — Supports active, cancelled, expired, paused, and suspended states. Good if you want separate control over cancellation vs temporary hold-style states.
- Subscriptions for WooCommerce (WP Swings) — Supports subscription cancel and expiry events for automatic level removal when the subscription ends according to your settings.
- WPSubscription (Convers Lab) — Supports cancelled, expired, and grace-period-ended flows. Useful if you want access to continue through a grace period and remove levels when that period ends.
If you only sell one-time WooCommerce products, you do not need any subscription plugin. The subscription plugins above are only required for recurring billing and recurring access control.
Step 1: Enable the WooCommerce Integration
First, enable the WooCommerce integration on the Integrations screen:
- Go to BricksMembers → Integrations
- Stay on the Overview tab and find WooCommerce in Commerce & CRM
- Enable the toggle and confirm the change
Once enabled, the WooCommerce tab is available inside BricksMembers → Integrations.
Step 2: Configure Integration Settings
Open BricksMembers → Integrations → 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
Subscription Plugin Settings
If you have a supported WooCommerce subscription plugin installed, you’ll see additional options:
Remove levels when subscription expires
- When enabled: Levels are removed when the subscription period or grace period actually ends
- Recommendation: Enable this for most subscription-based memberships if customers should keep access until the paid term ends
- Provider note: WooCommerce Subscriptions and WPSubscription can keep access active after a cancel request until the term or grace period ends. This setting handles that end-of-term removal.
Also remove levels when subscription is cancelled
- When enabled: Levels are removed as soon as the provider reports a cancellation event
- WooCommerce Subscriptions note: Customer/admin cancellations usually move the subscription to
pending-cancelfirst. BricksMembers treats that as the cancellation step for immediate revoke. - YITH note: YITH can revoke immediately on
cancelled, and can also remove onpaused/suspendedif you enable the hold option. - Recommendation: Enable this only if you want cancellation to revoke access immediately instead of waiting for expiry.
Remove levels when subscription is put on hold
- When enabled: Levels are removed when a subscription goes on hold, is paused, or is suspended (for example after a 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
On the WooCommerce tab, use the Product Mapping section to connect WooCommerce products to BricksMembers levels.
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 → Integrations → 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 supported WooCommerce subscription plugins:
| Status | BricksMembers Action | Notes |
|---|---|---|
Active | Add level | Subscription is active and paid |
Pending-cancel | Remove level (if enabled) | WooCommerce Subscriptions uses this after a cancel request while the prepaid term is still running |
On-hold / Paused / Suspended | Remove level (if enabled) | Used by supported plugins for payment issues or temporary hold states |
Cancelled | Remove level (if enabled) | Immediate revoke for providers that transition directly to cancelled |
Expired | Remove level (if enabled) | Subscription period or grace 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 a supported subscription plugin)
- 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:
- Integration not enabled: Verify WooCommerce is enabled on BricksMembers → Integrations → Overview
- Product not mapped: Check that the product is mapped to the desired level on BricksMembers → Integrations → 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
- A supported subscription plugin is required: Subscription handling works with WooCommerce Subscriptions, YITH WooCommerce Subscription, Subscriptions for WooCommerce (WP Swings), and WPSubscription
- Settings not enabled: Verify the correct option is checked: “Remove levels when subscription expires” for end-of-term revoke, “Also remove levels when subscription is cancelled” for immediate cancel revoke, and “Remove levels when subscription is put on hold” for hold/pause/suspend states
- Provider lifecycle: WooCommerce Subscriptions often enters
pending-cancelbeforecancelled. If you want access removed as soon as the user cancels, enable the cancel option. If you want access to last until the paid term ends, rely on expiry instead.
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 now gives you three realistic WooCommerce architectures:
- Use native WooCommerce integration only when WooCommerce is on the same site and you mainly need access assignment.
- Use native WooCommerce integration + Payments when WooCommerce is on the same site and you also want BRM billing tags, billing-aware frontend elements, synced subscriptions/payments, and member-facing billing displays.
- Use webhooks instead only when WooCommerce is on another site or you are intentionally treating it as an external provider.
- The native integration remains the recommended base layer for same-site WooCommerce, especially when you are using one of the supported subscription plugins.
For most users with WooCommerce on the same site, the best current recommendation is: native WooCommerce integration for access, and Payments on top if you want richer billing UX inside BRM.
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 the provider lifecycle you actually use: Always test purchases, refunds, and at least one cancel/expire flow for WooCommerce Subscriptions, YITH, WP Swings, or WPSubscription 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.