WooCommerce Integration

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:

  1. Go to BricksMembers → Integrations
  2. Stay on the Overview tab and find WooCommerce in Commerce & CRM
  3. 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-cancel first. BricksMembers treats that as the cancellation step for immediate revoke.
  • YITH note: YITH can revoke immediately on cancelled, and can also remove on paused / suspended if 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:

  1. Create a test product (or use an existing one)
  2. Map it to a membership level in BricksMembers → Integrations → WooCommerce
  3. 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)
  4. Mark the order as Processing or Completed (depending on your settings)
  5. Verify the user has the correct level:
    • Go to Users in WordPress
    • Edit the test user
    • Check their assigned membership levels
  6. 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:

StatusBricksMembers ActionNotes
PendingNo actionWaiting for payment
ProcessingAdd level (if enabled)Payment received, awaiting fulfillment
CompletedAdd levelOrder fulfilled
RefundedRemove level (if enabled)Only for full refunds
CancelledNo actionOrder cancelled before completion
FailedNo actionPayment failed

For subscriptions with supported WooCommerce subscription plugins:

StatusBricksMembers ActionNotes
ActiveAdd levelSubscription is active and paid
Pending-cancelRemove level (if enabled)WooCommerce Subscriptions uses this after a cancel request while the prepaid term is still running
On-hold / Paused / SuspendedRemove level (if enabled)Used by supported plugins for payment issues or temporary hold states
CancelledRemove level (if enabled)Immediate revoke for providers that transition directly to cancelled
ExpiredRemove 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

  1. Create a new Simple product
  2. Check Virtual (no shipping needed)
  3. Set your price
  4. Optionally set Sold individually to prevent multiple purchases
  5. Publish the product

Subscription Product (requires a supported subscription plugin)

  1. Create a new Simple subscription product
  2. Check Virtual
  3. Set subscription price and billing period
  4. Configure trial period if desired
  5. Publish the product

Variable Product with Multiple Plans

  1. Create a new Variable product
  2. Add an attribute (e.g., “Plan” with values “Monthly”, “Annual”, “Lifetime”)
  3. Check Used for variations
  4. Go to Variations tab and generate variations
  5. For each variation:
    • Check Virtual
    • Set the price
  6. Publish the product

Troubleshooting

Level Not Assigned After Purchase

Check these common causes:

  1. Integration not enabled: Verify WooCommerce is enabled on BricksMembers → Integrations → Overview
  2. Product not mapped: Check that the product is mapped to the desired level on BricksMembers → Integrations → WooCommerce
  3. Order status: Check if the order reached “Processing” or “Completed” status. Pending orders don’t trigger level assignment.
  4. Guest checkout without user creation: If “Create WordPress users” is disabled, guest orders won’t receive levels
  5. 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

  1. Setting not enabled: Verify “Remove levels when order is fully refunded” is checked
  2. 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:

  1. Enable “Auto-complete orders with virtual-only products”: This automatically completes orders with virtual-only products
  2. 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

  1. A supported subscription plugin is required: Subscription handling works with WooCommerce Subscriptions, YITH WooCommerce Subscription, Subscriptions for WooCommerce (WP Swings), and WPSubscription
  2. 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
  3. Provider lifecycle: WooCommerce Subscriptions often enters pending-cancel before cancelled. 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.

Get BricksMembers

Start Building Your Membership Site

Create, sell, and manage your content without limits. BricksMembers gives you everything you need to build membership and LMS sites directly in Bricks Builder.

Get up to 50% off with our Early Bird deal.

Lifetime updates & bug fixes • Premium support included for 2 years • 0% transaction fees • 60-day money-back guarantee