Drip content is one of the most powerful features for course creators and membership site owners. Instead of giving users access to everything at once, you release content gradually—one lesson per week, day, or after they complete prerequisites.
This guide explains how drip content works in BricksMembers and how to set it up for your courses.
What Is Drip Content?
Drip content means releasing content on a schedule rather than all at once.
Examples:
- Time-based: Unlock Lesson 2 seven days after the user joins
- Prerequisite-based: Unlock Lesson 2 only after the user completes Lesson 1
- Combined: Unlock Lesson 2 seven days after joining AND after completing Lesson 1
- Cohort-based: Unlock content based on a group start date (e.g., January 2025 cohort)
Why use drip content?
- Prevent overwhelm: Users focus on one lesson at a time instead of seeing 50 lessons at once
- Increase engagement: Users come back regularly to access new content
- Improve completion rates: Structured pacing helps users finish courses
- Create urgency: “New lesson unlocks tomorrow” keeps users engaged
- Reduce refunds: Users can’t watch everything on day one and request a refund
Enabling Drip Content
Drip content is an optional module. Here’s how to enable it:
- Go to BricksMembers → Settings → Modules
- Find the Enable Drip Content System checkbox
- Check it to enable
- Click Save Settings
The Drip Content admin page is now available at BricksMembers → Drip Content.
Unlocked Access Persistence Modes
After enabling drip content, you need to choose how it handles already-unlocked content when user access changes:
- Go to BricksMembers → Drip Content
- Look for Drip Timeline Settings at the top
- Choose your mode:
Reset on Re-assignment (Default)
- Restart the drip schedule when access is lost and regained
- Previously unlocked content may re-lock based on current rules
- Best for: Testing environments, sites still being configured
- Example: User loses “Premium” level, then regains it → drip schedule restarts from day 1
Preserve Previously Unlocked Content
- Keep access to content already unlocked by the user, even if rules or levels change later
- New content still follows current rules
- Best for: Live sites, production environments
- Example: User loses “Premium” level, then regains it → keeps access to lessons they already unlocked, new lessons follow current rules
Important: Choose “Preserve” mode for live sites to avoid frustrating users who lose progress when their subscription renews or level is reassigned.
Creating Drip Rules
Drip rules define when content unlocks. Let’s create your first rule.
- Go to BricksMembers → Drip Content
- Fill out each tab in the rule form (explained below) – the form uses a tab-based layout with tabs in the left menu
- Click Save Drip Rule at the bottom
Target Tab (What to Unlock)
The drip rule form uses a tab-based layout. Start with the Target tab in the left menu:
Rule Name (required): Give your rule a descriptive name like “Unlock lessons daily after registration”.
Structure (required): Select which content structure this rule applies to. Each rule is scoped to a single structure. For example, if you have a “WordPress Mastery Course” structure, select it here.
Post Type (required): Select which post type within the structure this rule applies to. For example, if your structure has “Course”, “Module”, and “Lesson” levels, you might select “Lesson” to apply this rule to all lessons in the structure.
Filter by parent type… (optional UI helper): This dropdown helps you narrow down the “Specific Parent Post” options. For example, if you select “Module”, the next field will only show module posts. This field is saved for convenience but doesn’t affect which posts the rule applies to.
Specific Parent Post (optional): Narrow down to posts of the selected type that have this specific post anywhere in their parent chain. For example, if you select Post Type “Lesson” and Specific Parent Post “Advanced Module”, the rule only applies to lessons that have “Advanced Module” as a parent (direct or indirect). Leave empty to apply to all posts of the selected type within the structure.
User Levels (optional): Check one or more user levels to limit which users this drip rule affects. The rule will only apply to users who have at least one of the selected levels. Leave all unchecked to apply to all users regardless of their level.
Important: Each rule must specify both a Structure and a Post Type. These are mandatory to ensure precise targeting of content.
Schedule Tab (When to Unlock)
Click the Schedule tab in the left menu:
Initial Delay (days): The number of days to wait before starting the drip schedule. Set to 0 for immediate start.
Trigger: Choose when the clock starts:
- User registration: Count days from when the user registered on your site
- Level assignment: Count days from when the user was assigned the required level
Example: Initial Delay = 7 days, Trigger = User registration → Content unlocks 7 days after the user registers.
Timed Auto-Drip Tab
Click the Timed Auto-Drip tab in the left menu:
Automatically release N items every X days from the start date (trigger or cohort). This works alongside prerequisites; “Items per interval” limits how many can unlock at a time.
Enable Timed Auto-Drip: Check this to activate automatic timed releases.
Interval every: Number of days between releases (e.g., 7 = weekly, 1 = daily).
Items Per Interval: How many items to release at each interval (e.g., 1 = one item per week, 2 = two items per week).
Release First Item Immediately: Check this to unlock the first item immediately without waiting for the first interval.
Example: Interval = 7 days, Items = 1, First Immediate = checked → Item 1 unlocks immediately, Item 2 unlocks after 7 days, Item 3 unlocks after 14 days.
Cohorts Tab
Click the Cohorts tab in the left menu:
A cohort is a synchronized start date for all learners in a group. Use this to ensure everyone begins the drip schedule at the same time, regardless of when they individually registered or were assigned the level.
Enable Cohort: Check this to activate cohort-based unlocking.
Cohort date/time: Set the cohort start date and time (e.g., January 1, 2025 at 00:00).
Cohort mode: Choose how the cohort interacts with other timing rules:
- Everyone starts on cohort date: Cohort date becomes the start date for all users. Initial delay is ignored.
- No one starts before cohort date: Individual timelines apply normally, but cohort date is the earliest anyone can start.
Example: January cohort starts on Jan 1, February cohort starts on Feb 1. All January cohort members begin on Jan 1 regardless of when they individually joined.
Prerequisites Tab
Important: Prerequisites require the Progress Tracking module to be enabled. If Progress Tracking is disabled, the Prerequisites tab will not be available.
Click the Prerequisites tab in the left menu to configure prerequisite settings:
Require previous item: Check this to require completion of the immediately previous item within the selected boundary (see “Previous within” below).
Require ALL previous items: Check this to require completion of ALL previous items within the selected boundary, not just the immediate previous item.
Previous within…: Define the grouping boundary for determining what “previous” means. Options are generated from your content structure’s levels:
- Top Level (e.g., Course): Previous item within the same top-level post. For example, in a Course › Module › Lesson structure, this means “previous lesson within the same Course”.
- Parent Level (e.g., Module): Previous item within the same direct parent. For example, “previous lesson within the same Module”.
- Specific Level: Previous item grouped by a specific level in your structure hierarchy.
Pro Tip: Most of the time, you’d select Course here to drip feed lessons within the course. If the student reaches the last lesson within a course, the lesson of the next course won’t be unlocked on completion.
Delay After Previous Completion (days): Add extra days after completing the previous item. For example, set to 3 to unlock each item 3 days after completing the previous one.
Also require these specific posts: Search and select specific posts that must be completed. Use the search field to find posts by title. Useful if people need to learn something from a different course before they can understand the content of a certain lesson.
Combine prerequisites: Choose how multiple prerequisites combine:
- All must be met (AND): “Previous within” AND “Specific posts” must all be completed
- Any can unlock (OR): Either “Previous within” OR “Specific posts” can unlock the content
Unlock Logic (Footer)
At the bottom of the form (in the footer area), you’ll find the Unlock Logic control. This controls how all conditions (time-based, prerequisites, cohorts) combine.
Condition Logic:
- All conditions must be met (AND): Timing AND prerequisites must all be satisfied
- Any condition can unlock (OR): Either timing elapses OR prerequisites are completed
Example (AND): User must wait 7 days AND complete the previous lesson before unlocking.
Example (OR): User can unlock by either waiting 7 days OR completing the previous lesson (whichever comes first).
How Drip Unlocks Are Computed
BricksMembers computes drip unlocks in the background.
When unlocks are computed:
- When a user is assigned a level
- When a user completes a post (if prerequisites are enabled)
- Daily via WP-Cron (to catch time-based unlocks)
- When you save a drip rule (recomputes for all affected users)
What’s stored:
- The
brm_user_unlockstable stores unlock timestamps for each user/post combination - Only posts that are unlocked are stored
- If a post is locked forever, there’s no row in the table
Performance:
- Unlock checks are fast (simple database lookup or cache hit)
- Recomputation happens in the background via WP-Cron, or on post completions fast in inline batches (little spinner appears next to progress bar) — this usually goes very quick as unlocks are only calculated for the current user and in an efficient way
- You’ll see a progress bar when large recomputations are running in the admin backend
Displaying Drip Status
You can show users when content will unlock using dynamic tags and Bricks conditions.
Drip Dynamic Tags
BricksMembers provides dynamic tags to display drip content status. See the BRM Dynamic Tags Reference for the complete list.
Most commonly used drip tags:
{brm_drip:unlocked} – Returns “1” if unlocked, “0” if locked
{brm_drip:unlock_date} – Shows the unlock date (formatted by WordPress date settings)
{brm_drip:days_left} – Shows integer days until unlock (0 when unlocked)
{brm_drip:status} — Human-readable status string (Locked / Unlocked)
Example usage:
This lesson unlocks on {brm_drip:unlock_date} ({brm_drip:days_left} days remaining)
Conditional Content with Bricks
Use Bricks conditions to show different content based on drip status.
Available drip conditions:
- Unlocked – Content is unlocked
- Locked – Content is locked
- Time Ready – Time-based delay is reached
- Time Not Ready – Time-based delay not reached
- Prerequisites Ready – All prerequisites are met
- Prerequisites Not Ready – Prerequisites not met
Example: Show “Locked” message
- Edit a post in Bricks
- Add a Section for locked users
- Set a condition: BricksMembers → Drip → is → Locked
- Inside the section, add: “This lesson unlocks on {brm_drip:unlock_date}”
- Add another Section for unlocked users
- Set a condition: BricksMembers → Drip → is → Unlocked
- Inside, add the actual lesson content
Now locked users see when the lesson unlocks, and unlocked users see the content.
Making Unlocks Feel Instant
When learners complete a lesson, a drip unlock may happen (e.g., the next lesson unlocks). By default, users would need to reload the page to see the change. BricksMembers lets you make that transition feel instant—either by updating sections in place (AJAX) or by reloading and restoring scroll position.
Where the controls live: Add a BRM Progress Checkbox element to your lesson template. When the Drip Content module is enabled, the checkbox exposes Drip Unlock Behavior controls. Configure them there.
After a user checks the checkbox, BricksMembers can react in three ways:
- Do nothing – Save completion only; no page change
- Update matched wrappers (AJAX) – Re-render matching sections in place without reloading the page
- Reload page with position – Refresh the page, then restore scroll position or jump to a target element
When to use which mode:
- Update matched wrappers (AJAX) – Best when you want a smooth in-place update (e.g., an unlock panel switches from “Locked” to “Continue” without a refresh)
- Reload page with position – When the page has many dynamic sections that should all reflect the new state at once
- Do nothing – When completion should be recorded silently and UX changes happen elsewhere (e.g., on next visit)
Prerequisites: Enable Progress Tracking and Drip Content in BricksMembers → Settings → Modules. Add a BRM Progress Checkbox to your lesson template. For AJAX mode, you need at least one wrapper element on the page that you want to refresh after unlock.
Setup: Partial Refresh (AJAX) — Step by Step
Partial refresh re-renders specific sections of the page via AJAX, so locked/unlocked content can update without a full reload.
- Edit your page or post template in Bricks Builder
- Select the BRM Progress Checkbox element on the canvas
- In the panel, open the Drip Unlock Behavior control group
- Set After Drip Unlock to Update matched wrappers (AJAX)
- Prepare your wrapper element(s): Each section you want to refresh must be inside a wrapper (e.g., a Section or Div). Select that wrapper in Bricks and give it a CSS class or custom ID so it can be targeted:
- To add a class: In the wrapper’s settings, open Advanced → CSS Class(es) and add something like
drip-refresh - To add a custom ID: In the wrapper’s settings, open Advanced → CSS ID and add something like
next-lesson-panel - Inside the wrapper, add child elements for locked and unlocked states, and use Bricks conditions (BricksMembers → Drip → is Locked / is Unlocked) to control visibility
- Important: Don’t put conditional logic on the wrapper element as otherwise it won’t work!
- To add a class: In the wrapper’s settings, open Advanced → CSS Class(es) and add something like
- Enter the CSS Selector: In the Progress Checkbox’s Drip Unlock Behavior, enter a selector that matches your wrapper(s). Examples:
.drip-refresh— targets elements with classdrip-refresh#next-lesson-panel— targets the element with IDnext-lesson-panel- For multiple wrappers, separate selectors with commas:
.drip-refresh, #my-unlock-panel
- Enter the Bricks Element IDs: Bricks assigns a 6-character ID to each element. To find it: select the wrapper in the canvas, then look at the input field on top of the settings panel on the left side of the Bricks editor. You’ll see something like
#brxe-yydnul. The part after#brxe-is the element ID (e.g.abc123). Enter this in the Bricks Element IDs field. The order must match the order of your CSS selectors:- If your CSS Selector is
.drip-refresh, #next-lesson-panel, then Bricks Element IDs might beabc123, def456(first ID for first selector, second for second) - For multiple IDs, separate with commas (no spaces)
- If your CSS Selector is
- Save. When a learner completes content and a drip unlock happens, BricksMembers will re-render the matched wrappers via AJAX. The server returns fresh HTML with updated condition results, so locked/unlocked content updates in place.
Scroll & Highlight (optional): After the AJAX refresh, you can scroll to the first refreshed element and/or highlight it. Enable Scroll to Element to smoothly scroll it into view, and Highlight Element to apply a visual effect (Border, Glow, Background, Shine, etc.). You can configure Highlight Padding, Shine Speed, Duration, and Color.
Setup: Full Refresh Mode — Step by Step
Full refresh reloads the page so all sections reflect the new state, then either restores scroll position or jumps to a target.
- Select your BRM Progress Checkbox in Bricks
- Open Drip Unlock Behavior and set After Drip Unlock to Reload page with position
- Choose Position Restore:
- Restore exact scroll position — returns the user to where they were before the reload
- Scroll to element — jumps to an element matching a CSS selector (e.g.
.brm-unlock-section). Add that class or ID to your target element in Bricks
- If you use “Scroll to element”, optionally enable highlight so the target is visually emphasized after the jump
How AJAX mode stays accurate: With partial refresh, BricksMembers asks the server for the current state each time it re-renders. It does not blindly force “unlocked” on the client. That matters when time conditions or prerequisites still block access—the server returns the correct state.
Common mistakes:
- No Drip Conditional element on the page — AJAX mode has nothing to refresh. Make sure you have wrapper(s) with locked/unlocked child content
- Wrong container selector — The CSS Selector must match the class or ID you added to your wrapper. Double-check spelling and format (e.g.
.classvs#id) - Bricks Element ID does not match — The ID must be the 6-character code for the wrapper element. Get it from the Bricks URL when the wrapper is selected. Order of IDs must match order of CSS selectors
- Missing locked/unlocked states — Create child blocks for both states inside the wrapper, with Bricks conditions controlling visibility
- Drip rules not matching content — Verify post type, structure, level, and prerequisite settings in your drip rules
Quick test checklist: Complete a lesson as a test user; confirm completion saves; confirm newly unlocked content appears (AJAX) or page reloads to the expected position (full mode); repeat with a second lesson to confirm chain behavior.
These same controls are also documented in Using Bricks Elements under the Progress Checkbox section, for users configuring the element.
Real-World Examples
Example 1: Weekly Lesson Release
Goal: Release one lesson per week for 8 weeks.
Setup:
- Create a content structure with 8 lessons
- Create a drip rule:
- Rule Name: “Weekly Lesson Release”
- Post Type: “Lesson”
- Initial Delay: 0 days
- Trigger: “Level assignment”
- Enable Timed Auto-Drip: checked
- Interval every: 7 days
- Items Per Interval: 1
- Release First Item Immediately: checked
- Click Save Drip Rule
Result:
- Lesson 1 unlocks immediately
- Lesson 2 unlocks after 7 days
- Lesson 3 unlocks after 14 days
- …and so on
Example 2: Self-Paced with Prerequisites
Goal: Users unlock lessons by completing the previous one, with a 3-day minimum gap.
Setup:
- Create a drip rule:
- Rule Name: “Self-Paced with 3-Day Delay”
- Structure: (select your course structure)
- Post Type: “Lesson”
- Initial Delay: 0 days
- Trigger: “Level assignment”
- Prerequisites tab → Require previous item: checked
- Previous within: “Parent Level” (e.g., “Module”)
- Delay After Previous Completion: 3 days
- Condition Logic: “All conditions must be met (AND)”
- Click Save Drip Rule
Result:
- User completes Lesson 1 → Lesson 2 unlocks 3 days later
- User completes Lesson 2 → Lesson 3 unlocks 3 days later
- Self-paced, but with enforced spacing
Example 3: Cohort-Based Program
Goal: Monthly cohorts, all users in a cohort progress together.
Setup:
- Create a drip rule for January cohort:
- Rule Name: “January 2025 Cohort”
- Structure: (select your course structure)
- Post Type: “Lesson”
- User Levels: Check “January 2025 Members”
- Enable Cohort: checked
- Cohort date/time: 2025-01-01 00:00
- Cohort mode: “Everyone starts on cohort date”
- Enable Timed Auto-Drip: checked
- Interval every: 7 days
- Items Per Interval: 1
- Release First Item Immediately: checked
- Click Save Drip Rule
- Repeat for February cohort with a different date and level
Result:
- January cohort: Lesson 1 on Jan 1, Lesson 2 on Jan 8, Lesson 3 on Jan 15
- February cohort: Lesson 1 on Feb 1, Lesson 2 on Feb 8, Lesson 3 on Feb 15
- All members in the same cohort progress together
Example 4: Final Exam After All Lessons
Goal: Unlock the final exam only after completing all 10 lessons.
Setup:
- Create a drip rule for the final exam post:
- Rule Name: “Final Exam Unlocks After All Lessons”
- Structure: (select your course structure)
- Post Type: “Exam”
- Filter by parent type: “Course” (optional UI helper)
- Specific Parent Post: (select the specific course you want to target)
- Prerequisites tab → Also require these specific posts: (search and select all 10 lessons)
- Combine prerequisites: “All must be met (AND)”
- Click Save Drip Rule
Result:
- User must complete all 10 lessons before the exam unlocks
Common Questions
Q: Can I have multiple drip rules?
A: Yes! You can have different rules for different post types, parent posts, or levels.
Q: What happens if rules conflict?
A: The strictest rule wins. If one rule says “unlock after 7 days” and another says “unlock after 14 days,” the post unlocks after 14 days.
Q: Can I manually unlock content for a specific user?
A: Not currently. This is planned for a future update.
Q: What if I change a drip rule after users have already started?
A: BricksMembers recomputes unlocks for all affected users. If “Preserve Previously Unlocked Content” mode is enabled, already-unlocked content stays unlocked.
Q: Can I drip content based on payment date instead of level assignment date?
A: Yes, if your payment provider sends the payment date via webhook. Map it to the level assignment date.
Q: Does drip content work with custom post types?
A: Yes, but only for post types within BricksMembers content structures.
Q: Can I see which users have which content unlocked?
A: Not currently in the Admin UI. This is planned for a future analytics update. You can create a view for that in Bricks using Query Loops with BricksMembers drip filters though.

