Managing Users and Bulk User Level Operations

Managing users efficiently is crucial for any membership site. Whether you’re migrating from another platform, onboarding hundreds of students, or managing access across courses, BricksMembers provides powerful tools to handle users and content at scale.

What you’ll learn:

  • Assign/remove levels for individual users
  • View users by level
  • Import users from CSV files with automatic level assignment
  • Export user data for backups or migrations
  • Batch assign levels to users, posts, courses, lessons, and terms from the User Levels page
  • Best practices for user management

Prerequisites:

  • BricksMembers installed and activated
  • At least one user level created
  • Administrator access to WordPress

Part 1: Managing Individual Users

Individual user management is handled through the standard WordPress Users page, with BricksMembers adding a “BricksMembers” section to the user edit screen.

Assigning Levels to a Single User

  1. Go to Users → All Users in WordPress
  2. Click Edit on the user
  3. Scroll to the BricksMembers section
  4. Check the levels you want to assign
  5. Click Update User

Result: The user now has access to all content requiring those levels.

Removing Levels from a User

Follow the same steps above, but uncheck the levels you want to remove.

Important: Removing a level immediately revokes access to all content requiring that level.

Viewing Users by Level

To see which users have a specific level:

  1. Go to BricksMembers → User Levels
  2. Click Edit on the level you want to check
  3. Expand the Users with this Level section
  4. You’ll see:
  • User list with avatars, names, emails
  • WordPress roles
  • Level assignment dates
  • Quick links to edit each user

Batch Updating Users on the User Levels Page

For day-to-day admin work, the fastest place to manage many users at once is BricksMembers → User Levels → Users.

  1. Go to BricksMembers → User Levels
  2. Open the Users tab
  3. Use the search field and filters to narrow the list
  4. For one user, click the + button in the Levels column to add a level instantly, or click the remove icon on a level pill to remove it
  5. For many users, select the checkboxes on the left
  6. Choose one or more levels in the Apply Levels picker
  7. Click Apply Levels

Result: The selected users are updated immediately without leaving the page.

Part 2: CSV Import and Export

CSV import/export is essential for migrations, backups, and integrations with external systems.

Exporting Users to CSV

Use cases:

  • Backup user data
  • Migrate to another platform
  • Analyze user data in Excel/Google Sheets
  • Share user lists with team members

Steps:

  1. Go to BricksMembers → Import / Export Users
  2. Scroll to the Export Users section
  3. Click Export Users CSV

What’s included in the export:

WordPress User Data:

  • User ID, username, email
  • Display name, first name, last name
  • Registration date
  • WordPress roles and capabilities
  • All custom user meta fields

BricksMembers Data:

  • User Levels (both names and IDs) – which levels the user has
  • Completed Posts (brm_completed_posts export column) – lesson/content completion timestamps (requires Progress Tracking)
  • Level Assignment Dates (brm_level_dates export column) – when each level was assigned/removed (important for drip content with “level assigned” trigger)
  • Drip Unlocks (brm_unlocks) – preserved unlock timestamps (only exported when drip is in “Preserve Previously Unlocked Content” mode)

Note: BRM progress data (aggregated statistics) is not treated as the canonical export source. BricksMembers can rebuild aggregate progress from imported completion data when needed.

Result: A CSV file downloads with all user data.

File name format: bricksmembers-users-export-YYYY-MM-DD-HH-MM-SS.csv

Importing Users from CSV

Use cases:

  • Migrate from another membership plugin
  • Import existing users from a payment processor after setting up BricksMembers
  • Bulk create users from a spreadsheet
  • Restore users from a backup

Go to BricksMembers → Import / Export Users. The page has Import and Export tabs. In the Import tab, upload a CSV, let BricksMembers detect the headers, map those headers to user fields and level values, then run a dry run or start the import.

Step 1: Configure CSV Columns

Tell BricksMembers which columns in your CSV correspond to which user fields:

  • Email Column (required): The column containing user email addresses
  • Username Column: The column containing usernames (if empty, username is auto-generated from email)
  • First Name Column: User’s first name
  • Last Name Column: User’s last name
  • User Level Trigger Column: The column that contains membership level information

Example CSV structure:

email,first_name,last_name,membership_level
john@example.com,John,Doe,Premium
jane@example.com,Jane,Smith,Free

Configuration for this CSV:

  • Email Column: email
  • First Name Column: first_name
  • Last Name Column: last_name
  • User Level Trigger Column: membership_level

Step 2: Configure Level Mapping

Map CSV values to BricksMembers levels. For each level, specify what CSV value should trigger that level assignment.

Example:

BricksMembers LevelCSV Trigger Value
Premium MemberPremium or 123
Free MemberFree or 124
Course XZYCourse XZY or 125

How it works:

  • If a CSV row has “Premium” in the membership_level column, the user gets the “Premium Member” level
  • If a CSV row has “124”, the user gets the “Free Member” level
  • Multiple levels can be assigned if the CSV value contains multiple comma-separated values

Step 3: Configure Import Options

  • Default User Role: Select the WordPress role for imported users (usually “Subscriber” or “Student”)
  • Name Split Field: If your CSV has a single “name” column instead of separate first/last names, specify it here to automatically split “John Doe” into first_name=”John”, last_name=”Doe”
  • Custom Field Mappings: Map additional CSV columns to WordPress user meta fields (e.g., “phone_number” → “billing_phone”)

Step 4: Save Configuration

  1. Click Save Settings at the top of the page
  2. Your configuration is saved for future imports

Step 5: Import the CSV File

  1. Open the Import tab
  2. Click Choose File and select your CSV
  3. Important: Check Perform Dry Run to test without actually importing
  4. Click Start Import

What happens during import:

  • For each CSV row:
    • Checks if a user with that email exists
    • If exists: Updates the user’s levels and meta fields
    • If doesn’t exist: Creates a new user with a random password
    • Assigns levels based on your trigger mappings
    • Updates custom meta fields if configured
  • Shows a summary: “Created: 50, Updated: 10, Skipped: 2”

Dry Run Mode: Always test with dry run first! It processes the CSV and shows what would happen without actually creating/updating users.

Step 6: Review Results

After import, you’ll see a summary:

  • Created: New users added
  • Updated: Existing users modified
  • Skipped: Rows with invalid data (missing email, invalid format)

Verify the import by going to BricksMembers → User Levels, editing a level, and checking the “Users with this Level” section.

Understanding BRM-Specific Data in CSV

When you export users from BricksMembers, the CSV includes special BRM data columns that preserve user progress and unlock history. These columns are compatibility export fields backed by BricksMembers’ normalized storage, and they are automatically imported when present.

BRM Data Columns

  • brm_completed_posts – JSON object mapping post IDs to completion timestamps
  • brm_level_dates – JSON object tracking when each level was assigned/removed (important for drip content calculations)
  • brm_unlocks – JSON object mapping post IDs to unlock timestamps (only when drip is in “Preserve” mode)

How it works: BricksMembers automatically detects these columns during import. No configuration is needed. Internally, the plugin restores the normalized assignment, completion, and unlock data from these CSV fields. If importing from a non-BricksMembers source, these columns will not exist, and users start with a fresh slate.

Part 3: Batch Assign Levels to Content

The standalone Bulk Assign page has been retired. Batch content assignment now happens directly on the BricksMembers → User Levels page, inside the Posts and Terms tabs.

Option 1: Batch Assign on the Posts Tab

Scenario: Assign “Premium Member” to all lessons within a specific course.

Steps:

  1. Go to BricksMembers → User Levels
  2. Open the Posts tab
  3. Use Post Type to narrow the list if needed
  4. If you work with a structure, choose the Structure filter and then use the Parents filter to focus on the correct parent posts
  5. Use search, term, relationship, or related taxonomy filters if needed
  6. Select the posts you want to update with the row checkboxes
  7. Choose one or more levels in the Apply Levels picker
  8. Click Apply Levels

Result: All selected lessons now require “Premium Member” access.

Note: This is an alternative to using the Content Structure UI’s Quick Edit feature with “Apply level changes to all child posts”. For one-off edits, you can also click the + button in the Levels column and add or remove levels inline.

Option 2: Batch Assign by Taxonomy Term

Scenario: Assign “Free Member” to all posts in the “Beginner Tutorials” category.

Steps:

  1. Go to BricksMembers → User Levels → Posts
  2. Select the correct Post Type
  3. Choose the taxonomy term filter, for example Category → “Beginner Tutorials”
  4. Select the matching posts with the checkboxes
  5. Choose “Free Member” in the Apply Levels picker
  6. Click Apply Levels

Result: All selected posts now require “Free Member” access.

Option 3: Batch Assign on the Terms Tab

Scenario: Protect categories or tags.

Steps:

  1. Go to BricksMembers → User Levels
  2. Open the Terms tab
  3. Use search or level filters if needed
  4. Select the terms you want to protect
  5. Choose one or more levels in the Apply Levels picker
  6. Click Apply Levels

Result: Those terms (not the posts inside!) now require the selected levels for access.

Option 4: Batch Assign by Post Relationship

Scenario: Assign levels to posts based on custom field relationships (e.g., ACF relationship fields).

Steps:

  1. Go to BricksMembers → User Levels → Posts
  2. Select the relevant Post Type
  3. If relationship fields exist, choose the relationship field and the related item
  4. Select the matching posts
  5. Choose the level(s) and click Apply Levels

Option 5: Batch Assign by Related Taxonomy

Scenario: Assign levels to posts based on taxonomy relationships (ACF taxonomy relationship fields).

Steps:

  1. Go to BricksMembers → User Levels → Posts
  2. Select the correct Post Type
  3. If related taxonomy fields exist, choose the field and then the term (for example Category → “Advanced”)
  4. Select the posts you want to assign levels to
  5. Choose “Premium Member” in the Apply Levels picker
  6. Click Apply Levels

Result: All selected posts that are related to that taxonomy term now require “Premium Member” access.

Tip: This is useful when you have posts organized by a related taxonomy (categories, tags, custom taxonomies) and want to bulk assign levels based on that organization. It’s very rare, but happens.

Part 4: CSV Import Scenarios

Scenario 1: Migrate from Another Membership Plugin

Example: Migrating from MemberPress or Restrict Content Pro.

Steps:

  1. Export users from your old plugin (or use a database query)
  2. Format the CSV with columns: email, first_name, last_name, membership_level
  3. In BricksMembers → Import / Export Users:
  4. Map the columns
  5. Set level mappings
  6. Check Perform Dry Run
  7. Click Start Import
  8. Review the dry run results
  9. Uncheck Perform Dry Run and import for real

Scenario 2: Import from Payment Processor

Example: Import customers from Stripe, Paddle, or PayPal.

Steps:

  1. Export customers from your payment processor
  2. If the CSV has a single “name” column instead of first_name/last_name:
    • Set Name Split Field: name
    • Set Delimiter: (space)
    • This splits “John Wick” into first_name=”John”, last_name=”Wick”
  3. Map the plan/subscription column to levels
  4. Import with dry run first, then import for real

Scenario 3: Import Users with Multiple Levels

Example: Some users have multiple membership levels.

CSV format:

email,levels
john@example.com,"Premium,WordPress,VIP"
eve@example.com,"Free"

Configuration:

  • User Level Trigger Column: levels
  • Level Mappings:
    • Premium Member → “Premium”
    • WordPress → “WordPress Course”
    • VIP Member → “VIP”
    • Free Member → “Free”

How it works: BricksMembers splits the “levels” column by commas and assigns all matching levels to the user.

BRM-Specific Data in CSV Files

When you export users from BricksMembers, the CSV automatically includes special BRM data columns that preserve user progress and unlock history. When you import these CSVs, BricksMembers restores the normalized storage behind the scenes – no configuration needed.

What BRM Data is Included

  • brm_completed_posts – JSON object mapping post IDs to completion timestamps (e.g., {"123":1698765432,"456":1698765500})
  • brm_level_dates – JSON object tracking when each level was assigned/removed (e.g., {"1":{"assigned":1698765432,"removed":null}})
  • brm_unlocks – JSON object mapping post IDs to unlock timestamps (only when drip is in “Preserve” mode)

Part 5: Best Practices

Practice 1: Always Use Dry Run First

Before importing hundreds of users, always test with dry run mode to prevent problems.

Practice 2: Backup Before Batch Changes

Before bulk removing levels or importing users:

  1. Export current users to CSV (backup)
  2. Perform the operation
  3. If something goes wrong, you can restore from the backup without needing to restore the whole database

Practice 3: Use Content Structure UI for Content

For assigning levels to course content, the Content Structure UI’s Quick Edit and Quick Add features are usually faster than the User Levels page:

  • Select the new page in the WP sidebar that appears after creating a content structure
  • Quick Edit → “Apply level changes to all child posts”
  • Quick Add → “Inherit required levels from parent”

Practice 4: Clean Your CSV Data

Before importing:

  • Remove duplicate emails
  • Validate email formats
  • Remove empty rows
  • Use the detected header mapping controls so each CSV column is mapped to the intended user field
  • Use UTF-8 encoding

Practice 5: Document Your Level Mappings

Keep a document of your CSV-to-BricksMembers level mappings for future reference and troubleshooting.

Part 6: Common Issues and Solutions

Issue 1: CSV Import Shows “0 Created, 0 Updated”

Cause: Likely: email column not mapped correctly.

Solution:

  1. Check that your CSV has an email column
  2. Verify the email field is mapped to the CSV column that contains each user’s email address
  3. Ensure emails are valid (user@example.com format)
  4. Save configuration and try again

Issue 2: Users Created But No Levels Assigned

Cause: Level trigger mapping wrong not configured.

Solution:

  1. Go to BricksMembers → Import / Export Users
  2. Scroll to User Level Mapping section
  3. For each level, map the CSV source value to the correct BricksMembers level. Level source-value matching is case-insensitive.
  4. Also check if the CSV trigger field is mapped correctly
  5. Click Save Settings
  6. Re-import the CSV

Issue 3: Import Skips All Rows

Cause: Invalid email format or missing required email column.

Solution:

  1. Open your CSV in a text editor, Google Sheets, or Excel
  2. Check the first row (headers) has the email column name you configured
  3. Check that all email values are valid (user@example.com format)
  4. Remove any special characters or spaces from column names
  5. Save as UTF-8 encoded CSV and try again

Part 7: Integration with Other Tools

Automate with Webhooks

Instead of manually importing users, you can automate level assignment with webhooks:

  1. Go to BricksMembers → Integrations → Webhooks
  2. Create a webhook endpoint
  3. Configure field mapping to automatically assign levels when users purchase
  4. Connect your payment processor (Stripe, WooCommerce, etc.) to the webhook URL

See Webhooks and Field Mapping for details.

Level Automation

Automatically add or remove levels based on rules:

  1. Go to BricksMembers → Level Automation
  2. Create automation rules (e.g., “Add VIP level when you create a new post of na certain type”)
  3. Create posts and/or terms and the level will automatically be assigned

Summary

You’ve learned how to:

  • ✅ Assign and remove levels for individual users via WordPress Users page
  • ✅ View users by level via BricksMembers → User Levels
  • ✅ Export users to CSV for backups and analysis
  • ✅ Import users from CSV with automatic level assignment
  • ✅ Configure field mappings and level triggers
  • ✅ Bulk assign levels to posts by structure, taxonomy, or relationship
  • ✅ Handle complex import scenarios (migrations, multiple levels, name splitting)
  • ✅ Follow best practices for user and content management
Get BricksMembers

Start Building Your Membership Site Today

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

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