Guides

BricksMembers Documentation

Find everything you need to set up, customize, and get the most out of BricksMembers — from quick-start guides to advanced features.

BRM Dynamic Tags Reference

BRM Dynamic Tags Reference
Pascal Basel
modified at February 28, 2026

BricksMembers provides 9 powerful dynamic tags with 100+ modifier combinations. These tags let you display membership data anywhere in Bricks—headings, text, buttons, images, links, and more.

This guide covers every single tag and modifier available.

What Are Dynamic Tags?

Dynamic tags are placeholders that get replaced with real data when the page loads.

Example:

Welcome, {user_display_name}! You're a {brm_user:levels} member.

Output:

Welcome, John Wick! You're a Premium Plus member.

Dynamic tags work in any Bricks text field: headings, paragraphs, buttons, custom HTML, and in many more places.

💡 Quick Tips: Hidden Gems

These small but powerful features make a huge difference in your designs:

Class Tags for Navigation & Styling

Perfect for query loops! Add these tags to the Style tab → CSS class field (not the General tab) to automatically style active, completed, or unlocked items.

  1. {brm_active} — Highlights the current page AND its parents in navigation menus. Perfect for course/module/lesson sidebars where you want the active lesson AND its parent module highlighted.
  2. {brm_completed} — Adds brm-completed class when a user finishes a lesson. Use it to show checkmarks, change colors, or hide “Start” buttons on completed content.
  3. {brm_unlocked} — Adds brm-unlocked class when content is available. Perfect for graying out locked lessons or disabling links to locked content.

Example: In a lesson sidebar query loop, add to Style tab → CSS class: lesson-link {brm_active} {brm_completed} {brm_unlocked}

Then style with CSS:

.lesson-link.brm-active {
  background: #FF8C42;
  color: white;
}
.lesson-link.brm-completed::after {
  content: "✓";
  color: green;
}
.lesson-link:not(.brm-unlocked) {
  opacity: 0.5;
  pointer-events: none;
}

Other Useful Tags You Might Miss

  1. {brm_user:has_level:5} — Returns 1 or 0. Perfect for Bricks conditions to show/hide content based on specific level IDs.
  2. {brm_progress:completed} — Returns 1 if current post is completed, 0 if not. Great for conditions and styling.
  3. {brm_progress:continue} — Returns a link to the next uncompleted post after the last completed one. Perfect for “Continue Learning” buttons on course pages.
  4. {brm_structure:parent} — Shows the parent level name (e.g., “Module 1” when viewing a lesson). Perfect for breadcrumbs or context headers.
  5. {brm_structure:parent:toplevel} — Shows the top-level name (e.g., “Course 1” when viewing any child). Great for course context headers.
  6. {brm_video:image} — Works with ALL Bricks image modifiers! Use {brm_video:image:large}, {brm_video:image:url}, {brm_video:image:alt}, etc. Just like native Bricks image tags.

The 9 Base Tags

Always Available (6 tags):

  1. {brm_user} – User levels and info
  2. {brm_structure} – Navigation and breadcrumbs
  3. {brm_video} – Video content (URL, image, duration)
  4. {brm_download} – Protected downloads (requires Downloads module)
  5. {brm_active} – Active item class for navigation
  6. {brm_post} – Post required access levels (in query loops)

Module-Specific (3 tags):

  1. {brm_progress} – Progress tracking (requires Progress module)
  2. {brm_drip} – Drip content (requires Drip module)
  3. {brm_like} – Like system (requires Like module)

1. User Tags

All User Tag Modifiers

  • {brm_user}
    Level names (comma-separated)
    Example: Premium Member, Course Access
  • {brm_user:levels}
    Level names (comma-separated)
    Example: Premium Member, Course Access
  • {brm_user:levels:link}
    Level names as links
    Example: <a href="/upgrade">Premium</a>, ...
  • {brm_user:levels:list}
    Level names as HTML list
    Example: <ul><li>Premium</li>...</ul>
  • {brm_user:levels:link:list}
    Level names as linked list
    Example: <ul><li><a href="...">Premium</a></li>...</ul>
  • {brm_user:levels_count}
    Number of levels
    Example: 3
  • {brm_user:has_level:5}
    Check if user has level ID 5
    Example: 1 or 0
  • {brm_user:has_level:123}
    Check any level ID
    Example: 1 or 0

User Profile Tags (Member Profiles module)

Availability: Requires Member Profiles module

  • {brm_user:avatar}
    Avatar URL (default 96px)
  • {brm_user:avatar:large}
    Avatar URL (256px)
  • {brm_user:avatar:96}
    Avatar URL (96px)
  • {brm_user:avatar:150x150}
    Avatar URL (custom dimensions)
  • {brm_user:last_login}
    Last login date/time (WordPress format)
  • {brm_user:last_login:F j, Y g:i a}
    Last login with custom PHP date format
  • {brm_user:field:field_key}
    Custom profile field value (replace field_key with your field key, e.g. phone_number, bio)
  • {brm_user:field:avatar:url}
    Image field: URL only
  • {brm_user:field:avatar:id}
    Image field: attachment ID
  • {brm_user:field:avatar:large}
    Image field: large size (or :medium, :thumbnail, :full)

User Context Detection: BricksMembers uses a smart cascade to determine which user’s data to display:

  1. Bricks user query loop – The looped user is always used (highest priority)
  2. Author archive – On /author/username/ pages, the author is used
  3. URL parameter or clean URL?user=123, /member/username/, or /profile/123/ resolves that user
  4. Current logged-in user – Default fallback

Configure which methods are active in BricksMembers → Settings → Modules → Profile Pages. This enables building public profile pages where all {brm_user:*} tags display the viewed user’s data, not the visitor’s.

Examples:

Welcome, {user_display_name}! You have {brm_user:levels_count} levels.
Your levels: {brm_user:levels}
{brm_user:levels:link:list}
Has Premium? {brm_user:has_level:5}
Last login: {brm_user:last_login}
Phone: {brm_user:field:phone_number}

2. Progress Tags

Availability: Requires Progress Tracking module

All Progress Tag Modifiers

Format Modifiers:

  • {brm_progress}
    Percentage (no % sign)
    Example: 75
  • {brm_progress:percent}
    Percentage (no % sign)
    Example: 75
  • {brm_progress:completed}
    Is current post completed?
    Example: 1 or 0

Note: {brm_progress:completed} without a scope returns 1 if the current post is completed, 0 if not. With a scope (e.g., {brm_progress:completed:toplevel}), it returns the completed count. {brm_progress:total} and {brm_progress:percent} require a scope modifier (e.g., :toplevel, :structure, :parent).

Scope Modifiers (combine with format):

  • {brm_progress:structure}
    Current structure – average progress across all top-level posts in the structure
  • {brm_progress:toplevel}
    Top level of structure – progress of the top-level post (usually progress of the course). If you’re on a top-level post, shows that post’s progress (same as current)
  • {brm_progress:parentlevel}
    Direct parent of current post (e.g., module progress when viewing a lesson)
  • {brm_progress:parent}
    Parent level (alias for parentlevel)
  • {brm_progress:current}
    Current post itself (shows progress for the post you’re viewing, useful for posts with children like courses or modules)
  • {brm_progress:level_2}
    Specific level 2
  • {brm_progress:level_3}
    Specific level 3
  • {brm_progress:level_4}
    Specific level 4
  • {brm_progress:level_5}
    Specific level 5
  • {brm_progress:level_6}
    Specific level 6

Direct Structure/Post ID Modifiers (for use on pages without post context):

  • {brm_progress:structure_id:YOUR_STRUCTURE_ID:percent}
    Specify structure ID directly to show progress for the entire structure (no post context needed)
    Example: {brm_progress:structure_id:abc123:percent} returns progress percentage for structure “abc123”
    Use case: Dashboard pages where you know the structure ID and want to show overall structure progress
    Returns: 0 if structure ID is invalid or progress tracking is not configured for that structure
  • {brm_progress:post_id:123:percent}
    Specify a post ID to show progress for that specific post
    Example: {brm_progress:post_id:456:percent} shows progress percentage for post 456 specifically
    Use case: Showing progress for a specific course/module on a dashboard or overview page
    Important: The post must be ABOVE the progress tracking level (parent containers only, not tracked items themselves)
    Returns: 0 if post doesn’t exist, isn’t published, is at/below tracking level, or has no structure

Note: The structure_id modifier calculates progress across ALL courses in the specified structure (like :structure but without requiring post context). The post_id modifier shows progress for that specific post only (like :current but for a different post). Both work with all format modifiers (:percent, :completed, :total).

Edge Cases:

  • Invalid Post ID: If the post doesn’t exist or isn’t published, returns 0
  • Post at/below tracking level: Progress is only tracked for posts ABOVE the tracking level (parent containers). If you specify a post at or below the tracking level, returns 0
  • Post without structure: If the post isn’t part of a structure, returns 0
  • Invalid Structure ID: If the structure doesn’t exist or progress tracking isn’t configured, returns 0

All Scope + Format Combinations:

  • {brm_progress:percent:structure}
    Structure percentage
  • {brm_progress:completed:structure}
    Structure completed count
  • {brm_progress:total:structure}
    Structure total count
  • {brm_progress:percent:toplevel}
    Top level percentage
  • {brm_progress:completed:toplevel}
    Top level completed count
  • {brm_progress:total:toplevel}
    Top level total count
  • {brm_progress:percent:parentlevel}
    Parent level percentage
  • {brm_progress:completed:parentlevel}
    Parent level completed count
  • {brm_progress:total:parentlevel}
    Parent level total count
  • {brm_progress:percent:current}
    Current level percentage
  • {brm_progress:completed:current}
    Current level completed count
  • {brm_progress:total:current}
    Current level total count
  • {brm_progress:percent:level_2}
    Level 2 percentage
  • {brm_progress:completed:level_2}
    Level 2 completed count
  • {brm_progress:total:level_2}
    Level 2 total count

Completion Date:

  • {brm_progress:completion-date}
    Date completed (if completed, uses WordPress date format; empty if not completed)

Continue (Next Post After Last Completed):

Automatically finds the last completed post within a boundary and returns a link to the next uncompleted post. Perfect for “Continue Learning” buttons on course overview pages or dashboards.

  • {brm_progress:continue}
    Complete HTML link to next uncompleted post (default format)
    Example: <a href="https://example.com/lesson-5" alt="Lesson 5: Advanced Topics">Lesson 5: Advanced Topics</a>
    Note: Without :url or :title modifiers, this returns a full clickable link.
  • {brm_progress:continue:url}
    URL only (for custom buttons)
    Example: https://example.com/lesson-5
  • {brm_progress:continue:title}
    Title only
    Example: Lesson 5: Advanced Topics
  • {brm_progress:continue:id}
    Post ID only (useful for query loop filters, meta queries, conditional logic)
    Example: 123

Continue with Boundary Modifiers:

Note: Without :url, :title, or :id modifiers, all continue tags return a complete HTML link. Add :url for just the URL, :title for just the title, or :id for just the post ID.

  • {brm_progress:continue:structure}
    Complete HTML link to next post across entire structure (auto-detects structure from current post)
    Example: <a href="...">Lesson 5</a>
    Note: Works on post pages within a structure. For dashboard pages without post context, use :structure_id:ID instead.
  • {brm_progress:continue:structure_id:YOUR_STRUCTURE_ID}
    Complete HTML link to next post across entire structure (use on dashboard pages)
    Example: <a href="...">Lesson 5</a>
    Note: Replace YOUR_STRUCTURE_ID with your actual structure ID. Find it in BricksMembers → Content Structures (structure ID is in the URL when viewing a structure, e.g. brm_structure_course-1course-1).
  • {brm_progress:continue:structure_id:YOUR_STRUCTURE_ID:url}
    URL only for structure (dashboard pages)
    Example: https://example.com/lesson-5
  • {brm_progress:continue:structure_id:YOUR_STRUCTURE_ID:title}
    Title only for structure (dashboard pages)
    Example: Lesson 5: Advanced Topics
  • {brm_progress:continue:structure_id:YOUR_STRUCTURE_ID:id}
    Post ID only for structure (dashboard pages, useful for query filters)
    Example: 123
  • {brm_progress:continue:toplevel}
    Complete HTML link to next post within top-level boundary
    Example: <a href="...">Lesson 5</a>
  • {brm_progress:continue:parent}
    Complete HTML link to next post within parent-level boundary
    Example: <a href="...">Lesson 3</a>
  • {brm_progress:continue:level_2}
    Complete HTML link to next post within level 2 boundary
    Example: <a href="...">Lesson 4</a>
  • {brm_progress:continue:course}
    Complete HTML link to next post within course boundary (using level slug)
    Example: <a href="...">Lesson 1</a>
  • {brm_progress:continue:toplevel:url}
    URL only of next post within top-level
    Example: https://example.com/lesson-5
  • {brm_progress:continue:parent:title}
    Title only of next post within parent-level
    Example: Lesson 3: Basics

How It Works:

  1. Finds all posts within the specified boundary (or default scope)
  2. Identifies the last completed post by the current user
  3. Returns the next post after that completed one
  4. If no posts are completed, returns the first post in scope
  5. If all posts are completed, returns empty string

Use Cases:

  • Course overview page: “Continue Learning” button that takes users to their next lesson
  • Dashboard: Quick access to resume where they left off
  • Module pages: Continue within the current module

Examples:

<!-- Dashboard page (no post context) - use structure_id -->
<a href="{brm_progress:continue:structure_id:YOUR_STRUCTURE_ID:url}">Continue Learning →</a>

<!-- Post page within structure - use structure to auto-detect -->
<!-- Complete HTML link across entire structure -->
{brm_progress:continue:structure}

<!-- URL only for custom button -->
<a href="{brm_progress:continue:structure:url}">Continue Learning →</a>

<!-- Complete HTML link within top-level -->
{brm_progress:continue:toplevel}

<!-- URL only for custom button -->
<a href="{brm_progress:continue:toplevel:url}">Continue Learning →</a>

<!-- Title only -->
Continue: {brm_progress:continue:parent:title}

<!-- Post ID only (useful for query filters, meta queries) -->
Next lesson ID: {brm_progress:continue:id}

<!-- Default scope (requires post context) -->
Next up: {brm_progress:continue}

Max Flag (include inaccessible content):

  • {brm_progress:percent:max}
    Percentage including inaccessible content
  • {brm_progress:completed:toplevel:max}
    Completed count including inaccessible content
  • {brm_progress:total:toplevel:max}
    Total count including inaccessible content

Examples:

{brm_progress:percent:structure}% complete
{brm_progress:completed:toplevel} of {brm_progress:total:toplevel} lessons done
Is this post completed? {brm_progress:completed}
Completed on: {brm_progress:completion-date}
Continue: <a href="{brm_progress:continue:toplevel:url}">{brm_progress:continue:toplevel:title}</a>
Including inaccessible: {brm_progress:percent:toplevel:max}%

3. Drip Tags

Availability: Requires Drip Content module

All Drip Tag Modifiers

  • {brm_drip:unlocked}
    Is content unlocked for current user?
    Example: 1 or 0
  • {brm_drip:unlock_date}
    Unlock date (WordPress date format)
    Example: January 15, 2025
  • {brm_drip:days-left}
    Days until unlock
    Example: 5 (use hyphen in days-left)

Examples:

Unlocked? {brm_drip:unlocked}
Unlocks: {brm_drip:unlock_date}
Days left: {brm_drip:days-left}

4. Post Level Tags

Context: Use inside post query loops (e.g., course catalog, lesson list) to display which membership level each post requires. Shows the required access level(s) for the current loop post.

All Post Level Tag Modifiers

  • {brm_post:level}
    All required level names (comma-separated). Shows “Free” for posts with no level requirements.
    Example: Premium, Advanced or Free
  • {brm_post:level:first}
    First required level only (useful for badges)
    Example: Premium
  • {brm_post:level:ids:1,2,3}
    Show only levels matching these IDs. Omit non-matching levels.
    Example: If post requires levels 1 and 5, ids:1,2 shows only level 1

Example: In a course catalog query loop, add a badge: {brm_post:level:first} to show “Premium”, “Advanced”, or “Free” for each course.

5. Structure Tags

All Structure Tag Modifiers

Navigation Modifiers:

  • {brm_structure:next_item}
    Next post title
    Example: Lesson 2: Advanced Topics
  • {brm_structure:next_item:link}
    Next post link
    Example: <a href="...">Lesson 2</a>
  • {brm_structure:next_item:url}
    Next post URL only
    Example: https://example.com/lesson-2
  • {brm_structure:previous_item}
    Previous post title
    Example: Lesson 1: Basics
  • {brm_structure:previous_item:link}
    Previous post link
    Example: <a href="...">Lesson 1</a>
  • {brm_structure:previous_item:url}
    Previous post URL only
    Example: https://example.com/lesson-1

Level Name Modifiers:

  • {brm_structure:level_name}
    Current post type name (capitalized)
    Example: Lesson (when viewing a lesson post)
  • {brm_structure:level_name:link}
    Current post type name as link
    Example: <a href="...">Lesson</a>

Parent Modifiers:

  • {brm_structure:parent}
    Parent post title
    Example: Module 1
  • {brm_structure:parent:url}
    Parent post URL
    Example: https://example.com/module-1
  • {brm_structure:parent:link}
    Parent link
    Example: <a href="...">Module 1</a>
  • {brm_structure:parent:toplevel}
    Top-level parent title
    Example: Course Name
  • {brm_structure:parent:toplevel:link}
    Top-level parent link
    Example: <a href="...">Course</a>
  • {brm_structure:parent:toplevel:url}
    Top-level parent URL
    Example: https://example.com/course
  • {brm_structure:parent:level_2}
    Level 2 parent title
    Example: Module 1
  • {brm_structure:parent:level_3}
    Level 3 parent title
    Example: Section 1
  • {brm_structure:parent:level_4}
    Level 4 parent title
    Example: (if exists)
  • {brm_structure:parent:level_5}
    Level 5 parent title
    Example: (if exists)
  • {brm_structure:parent_toplevel}
    Top-level parent (alias for parent:toplevel)
  • {brm_structure:parent_level_2}, parent_level_3, etc.
    Parent at specific level by index
  • {brm_structure:breadcrumbs}
    Ancestor posts trail (current post excluded by default)
    Example: Course › Module › Section
  • {brm_structure:breadcrumbs:current}
    Includes current post at the end
    Example: Course › Module › Section › Lesson
  • {brm_structure:breadcrumbs:link}
    Ancestor posts as clickable links
    Example: <a href="...">Course</a> › ...
  • {brm_structure:breadcrumbs:home}
    Prepends Home link to breadcrumb trail
    Example: Home › Course › Module › Section
  • {brm_structure:breadcrumbs:home:link:current}
    Full breadcrumbs with Home, links, and current post
    Example: <a href="/">Home</a> › <a href="...">Course</a> › Module › Section › Lesson
  • {brm_structure:breadcrumbs:depth:1}
    Immediate parent only (1 closest ancestor)
    Example: Section
  • {brm_structure:breadcrumbs:link:current:depth:2}
    2 closest parents + current with links
    Example: <a href="...">Module</a> › <a href="...">Section</a> › Lesson

Note: The breadcrumb separator is configurable in BricksMembers → Settings → General → Breadcrumb Separator (default: ). Breadcrumbs work dynamically with any structure depth (2-6 levels). The :depth:N modifier limits display to the N closest ancestor levels (e.g., depth:1 shows only the immediate parent).

  • {brm_structure:structure_id}
    Structure ID
    Example: 123
  • {brm_structure:index}
    Current post order (within post type, no boundary)
    Example: 5
  • {brm_structure:index:toplevel}
    Current post order within top level
    Example: 3
  • {brm_structure:index_max}
    Total posts of current post type (no boundary)
    Example: 20
  • {brm_structure:index_max:structure}
    Total posts across entire structure (unbounded)
    Example: 50
  • {brm_structure:index_max:toplevel}
    Total posts within top level boundary
    Example: 15
  • {brm_structure:index_max:parent}
    Total posts within parent boundary
    Example: 8
  • {brm_structure:index:structure}
    Current position across entire structure (unbounded)
    Example: 23
  • {brm_structure:index:toplevel}
    Current position within top-level boundary
    Example: 5
  • {brm_structure:index:parent}
    Current position within parent boundary
    Example: 3
  • {brm_structure:level_index}
    Current level index (1-based)
    Example: 2 (for level 2)

Boundary Modifiers (for navigation):

Boundary modifiers control where navigation searches for the next/previous item. All navigation tags support these boundaries:

  • {brm_structure:next_item:structure}
    Next across entire structure (unbounded – searches all posts in structure)
  • {brm_structure:next_item:toplevel}
    Next within top-level boundary (searches within top-level container only)
  • {brm_structure:next_item:parentlevel}
    Next within parent boundary
  • {brm_structure:next_item:parent}
    Next within parent (alias for parentlevel)
  • {brm_structure:next_item:level_2}
    Next within level 2 boundary
  • {brm_structure:next_item:level_3}
    Next within level 3 boundary
  • {brm_structure:next_item:level_4}
    Next within level 4 boundary
  • {brm_structure:next_item:level_5}
    Next within level 5 boundary
  • {brm_structure:previous_item:structure}
    Previous across entire structure (unbounded)
  • {brm_structure:previous_item:toplevel}
    Previous within top-level boundary
  • {brm_structure:previous_item:parentlevel}
    Previous within parent boundary
  • {brm_structure:previous_item:parent}
    Previous within parent (alias)
  • {brm_structure:previous_item:level_2}
    Previous within level 2 boundary
  • {brm_structure:previous_item:level_3}
    Previous within level 3 boundary
  • {brm_structure:previous_item:level_4}
    Previous within level 4 boundary
  • {brm_structure:previous_item:level_5}
    Previous within level 5 boundary

Combined Modifiers:

  • {brm_structure:next_item:link:toplevel}
    Next item link (top level scope)
  • {brm_structure:next_item:url:parentlevel}
    Next item URL (parent scope)
  • {brm_structure:previous_item:link:level_2}
    Previous item link (level 2 scope)

Examples:

{brm_structure:breadcrumbs:link}
Next: {brm_structure:next_item:link}
Previous: {brm_structure:previous_item:link:parentlevel}
{brm_structure:index} of {brm_structure:index_max}
Parent: {brm_structure:parent:toplevel:link}
Level: {brm_structure:level_name}

6. Video Tags

All video tags support boundary modifiers to display parent post data without query loops.

Important: Video tags support boundary modifiers to get video data from parent posts (toplevel, parent, level_N), but NOT :structure (since there’s no specific parent post for “entire structure”). If a boundary cannot be resolved, the tag falls back to the current post’s video data.

Video URL Tag – All Modifiers

  • {brm_video:url}
    Current post video URL/ID
    Example: https://vimeo.com/123456789
  • {brm_video:url:toplevel}
    Top-level parent video
    Example: Course video on lesson page
  • {brm_video:url:parentlevel}
    Parent video
    Example: Module video on lesson page
  • {brm_video:url:parent}
    Same as parentlevel
    Example: Parent video
  • {brm_video:url:level_1}
    Level 1 parent video
    Example: Top level
  • {brm_video:url:level_2}
    Level 2 parent video
    Example: Specific level
  • {brm_video:url:level_3}
    Level 3 parent video
    Example: Specific level
  • {brm_video:url:level_4}
    Level 4 parent video
    Example: Specific level
  • {brm_video:url:level_5}
    Level 5 parent video
    Example: Specific level
  • {brm_video:url:level_6}
    Level 6 parent video
    Example: Specific level

Note: Works with video plugins like Gumlet (can store video IDs instead of only URLs)

Video Image Tag – All Modifiers

Basic Modifiers:

  • {brm_video:image}
    Current post thumbnail
    Example: Works in Bricks Image elements
  • {brm_video:image:url}
    Image URL only
    Example: https://example.com/thumb.jpg
  • {brm_video:image:id}
    Attachment ID
    Example: 123
  • {brm_video:image:link}
    Image wrapped in link
    Example: Clickable image

Size Modifiers:

  • {brm_video:image:thumbnail}
    Thumbnail size
  • {brm_video:image:medium}
    Medium size
  • {brm_video:image:large}
    Large size
  • {brm_video:image:full}
    Full size
  • {brm_video:image:custom-size}
    Any registered WordPress size

Boundary Modifiers:

  • {brm_video:image:toplevel}
    Top-level parent image
  • {brm_video:image:parentlevel}
    Parent image
  • {brm_video:image:parent}
    Parent image (alias)
  • {brm_video:image:level_1}
    Level 1 parent image
  • {brm_video:image:level_2}
    Level 2 parent image
  • {brm_video:image:level_3}
    Level 3 parent image
  • {brm_video:image:level_4}
    Level 4 parent image
  • {brm_video:image:level_5}
    Level 5 parent image
  • {brm_video:image:level_6}
    Level 6 parent image

Combined Modifiers (Boundary + Size/Output):

  • {brm_video:image:toplevel:large}
    Top-level image, large size
  • {brm_video:image:toplevel:url}
    Top-level image URL only
  • {brm_video:image:toplevel:id}
    Top-level image attachment ID
  • {brm_video:image:parentlevel:medium}
    Parent image, medium size
  • {brm_video:image:parentlevel:url}
    Parent image URL only
  • {brm_video:image:level_2:large}
    Level 2 image, large size
  • {brm_video:image:level_2:url}
    Level 2 image URL only
  • {brm_video:image:level_3:medium}
    Level 3 image, medium size

Advanced Image Modifiers:

  • {brm_video:image:plain}
    Strip HTML tags
  • {brm_video:image:@fallback:Default text}
    Fallback if no image
  • {brm_video:image:@fallback-image:456}
    Fallback image ID
  • {brm_video:image:@sanitize:false}
    Disable sanitization
  • {brm_video:image:100}
    Word limit (if <1000)
  • {brm_video:image:5000}
    Character limit (if >1000)

Video Duration Tag – All Modifiers

Format Modifiers:

  • {brm_video:duration}
    Auto format (H:MM:SS or M:SS)
    Example: 15:30 or 1:15:30
  • {brm_video:duration:auto}
    Same as default
    Example: Auto format
  • {brm_video:duration:seconds}
    Duration in seconds
    Example: 95
  • {brm_video:duration:mmss}
    MM:SS format
    Example: 1:35
  • {brm_video:duration:hms}
    H:MM:SS format
    Example: 0:01:35

Boundary Modifiers:

  • {brm_video:duration:toplevel}
    Top-level parent duration
  • {brm_video:duration:parentlevel}
    Parent duration
  • {brm_video:duration:parent}
    Parent duration (alias)
  • {brm_video:duration:level_1}
    Level 1 parent duration
  • {brm_video:duration:level_2}
    Level 2 parent duration
  • {brm_video:duration:level_3}
    Level 3 parent duration
  • {brm_video:duration:level_4}
    Level 4 parent duration
  • {brm_video:duration:level_5}
    Level 5 parent duration
  • {brm_video:duration:level_6}
    Level 6 parent duration

Combined Modifiers (Boundary + Format):

  • {brm_video:duration:toplevel:auto}
    Top-level duration, auto format
  • {brm_video:duration:toplevel:seconds}
    Top-level duration in seconds
  • {brm_video:duration:toplevel:mmss}
    Top-level duration, MM:SS
  • {brm_video:duration:toplevel:hms}
    Top-level duration, H:MM:SS
  • {brm_video:duration:parentlevel:auto}
    Parent duration, auto format
  • {brm_video:duration:parentlevel:seconds}
    Parent duration in seconds
  • {brm_video:duration:parentlevel:mmss}
    Parent duration, MM:SS
  • {brm_video:duration:parentlevel:hms}
    Parent duration, H:MM:SS
  • {brm_video:duration:level_2:auto}
    Level 2 duration, auto format
  • {brm_video:duration:level_2:seconds}
    Level 2 duration in seconds
  • {brm_video:duration:level_2:mmss}
    Level 2 duration, MM:SS
  • {brm_video:duration:level_2:hms}
    Level 2 duration, H:MM:SS
  • {brm_video:duration:level_3:mmss}
    Level 3 duration, MM:SS
  • {brm_video:duration:level_4:hms}
    Level 4 duration, H:MM:SS

Examples:

{brm_video:url}
{brm_video:image:toplevel:large}
Duration: {brm_video:duration:mmss}
Course Duration: {brm_video:duration:toplevel:hms}
Module Duration: {brm_video:duration:parentlevel:mmss}

7. Download Tags

Availability: Only when Protected Downloads module is enabled

All Download Tag Modifiers

Basic:

  • {brm_download}
    Download URL
    Example: https://example.com/...file.pdf
  • {brm_download:link}
    HTML link with download title
    Example: <a href="...">Download Title</a>
  • {brm_download:id=123}
    URL for specific download ID (when not on a download post)
    Example: https://example.com/...file.pdf
  • {brm_download:id=123:link}
    HTML link for specific download ID

Image (Bricks Image element compatible):

  • {brm_download:image}
    Image (works in Bricks Image elements)
  • {brm_download:image:url}
    Image URL only
  • {brm_download:image:id}
    Attachment ID
  • {brm_download:image:thumbnail}, :medium, :large, :full, or any registered WordPress size
  • {brm_download:image:link}
    Image wrapped in link to post
  • {brm_download:image:plain}
    Strip HTML tags
  • {brm_download:image:@fallback:No image}
    Fallback text if no image
  • {brm_download:image:@fallback-image:456}
    Fallback attachment ID
  • {brm_download:image:id=123}
    Image from specific download (in brm_download:image modifiers, use id=123 to target a download)

Examples:

{brm_download:link}
{brm_download:image:large}
{brm_download:id=123:link}
{brm_download:image:@fallback:No thumbnail}

8. Like Tags

Availability: Only when Like System module is enabled

All Like Tag Modifiers

  • {brm_like:count}
    Number of likes
    Example: 42
  • {brm_like:status}
    Current user’s like status
    Example: 1 (liked) or 0 (not liked)

User List Modifiers:

  • {brm_like:users}
    Comma-separated user list
    Example: John Doe, Jane Smith
  • {brm_like:users:link}
    User list with links
    Example: <a href="...">John</a>, ...

Note: Only {brm_like:count} appears in the Bricks tag picker. The other tags work perfectly—just type them manually.

Examples:

{brm_like:count} likes
Liked by: {brm_like:users}
Liked by (with links): {brm_like:users:link}
Has current user liked? {brm_like:status} (1 or 0)

9. Class Tags (for CSS styling)

These tags output a CSS class name or empty string. Add to Style tab → CSS class for automatic styling in query loops.

  • {brm_active}
    Outputs brm-active if loop item matches current page or is a parent
  • {brm_completed}
    Outputs brm-completed if loop post is completed (Progress module, post loops)
  • {brm_unlocked}
    Outputs brm-unlocked if loop post is unlocked (Drip module, post loops)

Active Item Tag Details

💡 One of the most useful tags for navigation menus! Highlights current page AND its parents.

{brm_active}

  • Outputs brm-active if the loop item matches the current page/term/user being viewed
  • Also matches parent posts in content structures (e.g., highlights the module when viewing a lesson)
  • Outputs empty string if not the current item or parent
  • Works with post, term, and user query loops
  • Perfect for navigation menus, breadcrumbs, taxonomy filters, and member directories
  • Performance: Zero database queries – uses already-loaded WordPress query data

All Active Tag Modifiers

  • {brm_active}
    Active class or empty
    Example: brm-active or “

Matching Logic:

For Posts:

  • Direct match: Loop post ID === Current post ID
  • Parent match: Loop post ID is a parent of current post (from content structure)

For Terms & Users:

  • Direct match only: Loop term/user ID === Current term/user ID

Use Cases:

1. Post Query Loops (Navigation Menus with Parent Highlighting)

Add this tag to the CSS class field of elements in a query loop:

{brm_active}

Example in Bricks:

  1. Create a query loop showing course modules
  2. Set CSS class of the QL element in the Bricks element controls header: module-item
  3. Set CSS class in Bricks elements’ style tab: {brm_active}
  4. Style .brm-active in your CSS:
.module-item.brm-active {
    background: var(--primary-color);
    font-weight: bold;
    border-left: 4px solid var(--accent-color);
}

Result:

  • When viewing a module page, that module will have the brm-active class
  • When viewing a lesson page, the lesson’s parent module will also have the brm-active class
  • Perfect for hierarchical navigation where you want to show which section the user is currently in

2. Term Query Loops (Category/Tag Filters)

  1. Create a query loop showing categories or tags
  2. Add a button element inside the loop
  3. Set CSS classes: filter-button {brm_active}
  4. Style the active filter:
.filter-button.brm-active {
    background: var(--primary-color);
    color: white;
}

Result: When viewing a category archive, that category’s filter button will be highlighted.

3. User Query Loops (Member Directories)

  1. Create a query loop showing users
  2. Add a card element inside the loop
  3. Set CSS classes: member-card {brm_active}
  4. Style the current user’s card:
.member-card.brm-active {
    border: 2px solid var(--primary-color);
    box-shadow: 0 4px 12px rgba(0,0,0,0.1);
}

Result: When viewing a user’s profile/author page, their card in the member directory will be highlighted.

Works With:

  • Post loops: Course navigation, lesson lists, breadcrumbs
  • Term loops: Category filters, tag clouds, taxonomy navigation
  • User loops: Member directories, author lists, team pages

Tag Modifiers

Modifiers change how tags display data.

:link Modifier

Wraps output in a link.

Example:

{brm_structure:next_item:link}

Output:

<a href="/next-lesson/">Next Lesson Title</a>

Works with:

  • {brm_structure:next_item:link}
  • {brm_structure:previous_item:link}
  • {brm_download:link}

Scope Modifiers

What is “Scope”? Scope defines which content to calculate progress for. For example, :toplevel calculates progress within the top-level post (e.g., Course), :parent calculates within the parent post (e.g., Module), and :structure calculates across the entire structure. Use scope modifiers to show progress at different levels of your content hierarchy.

Define what content to include in calculations.

:structure – Current structure

{brm_progress:percent:structure}

:toplevel – Top level of structure

{brm_progress:percent:toplevel}

:parentlevel – Parent level of structure

{brm_progress:percent:parentlevel}

Boundary Modifiers

What is “Boundary”? Boundary defines the navigation window—it limits where “next” and “previous” navigation can go. For example, :toplevel keeps navigation within the top-level post (e.g., Course), so navigating from a lesson won’t jump to the next course. :parentlevel keeps navigation within the parent (e.g., Module), so navigating from a lesson won’t jump to the next module. Use boundary modifiers to control navigation flow within your content structure.

Define navigation boundaries.

:toplevel – Navigate across entire structure

{brm_structure:next_item:toplevel}

:parentlevel – Navigate within current parent

{brm_structure:next_item:parentlevel}

:level_2, :level_3, etc. – Navigate within specific level

{brm_structure:next_item:level_2}

Real-World Examples

Example 1: Welcome Message

Welcome back, {user_display_name}!

You're a {brm_user:levels} member.

You've completed {brm_progress:completed:toplevel} out of {brm_progress:total:toplevel} lessons ({brm_progress:percent:toplevel}%).

Output:

Welcome back, John Smith!

You're a Premium Member member.

You've completed 15 out of 20 lessons (75%).

Note: This example uses scope modifiers (:toplevel) to get progress within the top-level post (e.g., course). Without scope modifiers, {brm_progress:completed} returns 1 or 0 indicating if the current post is completed.

Example 2: Course Progress

Course Progress: {brm_progress:percent:structure}%

Completed: {brm_progress:completed:structure}/{brm_progress:total:structure}

Output:

Course Progress: 60%

Completed: 12/20

Example 3: Lesson Navigation

← {brm_structure:previous_item:parentlevel:link}

{brm_structure:next_item:parentlevel:link} →

Output:

← <a href="/lesson-1/">Lesson 1: Introduction</a>

<a href="/lesson-3/">Lesson 3: Advanced Topics</a> →

Example 4: Course Hero with Parent Video Data

Display course information on lesson pages without query loops:

<div class="lesson-hero" style="background-image: url({brm_video:image:toplevel:url});">
    <div class="hero-content">
        <h1>{post_title}</h1>
        <p class="course-meta">
            Course: {brm_structure:parent:toplevel}
            Duration: {brm_video:duration:toplevel:hms}
        </p>
    </div>
</div>

Note: The example uses {brm_video:image:toplevel:url} to get the top-level parent’s video image URL, and {brm_structure:parent:toplevel} to get the top-level parent’s title.

Output on a lesson page:

<div class="lesson-hero" style="background-image: url(https://example.com/course-thumbnail.jpg);">
    <div class="hero-content">
        <h1>Lesson 3: Advanced Topics</h1>
        <p class="course-meta">
            Course: Complete WordPress Course
            Duration: 5:30:45
        </p>
    </div>
</div>

Note: The example uses {brm_video:image:toplevel:url} to get the top-level parent’s video image URL, and {brm_structure:parent:toplevel} to get the top-level parent’s title.

Why this is powerful:

  • No query loops needed
  • Zero extra database queries (uses Request Registry)
  • Clean, simple syntax
  • Perfect for displaying parent context on child pages

Example 5: Drip Status

{brm_drip:unlocked}

If unlocked:

1

If locked:

0

Use with conditions to show different content:

[If unlocked] Watch the lesson now!
[If locked] This lesson unlocks on {brm_drip:unlock_date}

Example 5: Completion Status

{brm_progress:completed}

If completed:

1

If not completed:

0

Use with conditions:

[If {brm_progress:completed} equals 1] ✓ You've completed this lesson
[If {brm_progress:completed} equals 0] Mark as complete when you're done

Note: {brm_completed} is a class tag (outputs brm-completed or empty string) for CSS styling in query loops, not a dynamic tag that returns 1/0. Use {brm_progress:completed} for conditions.

Using Tags in Bricks

In Text Elements

  1. Add a Text or Heading element
  2. Click the {x} icon to insert a dynamic tag
  3. Search for “brm” to see all BricksMembers tags
  4. Select a tag
  5. Add modifiers manually if needed (e.g., change {brm_progress:percent} to {brm_progress:percent:structure})

In Buttons

  1. Add a Button element
  2. For button text: Use dynamic tags (e.g., “Next: {brm_structure:next_item}”)
  3. For button link: Use {brm_structure:next_item:url} to get just the URL

Pro Tip: Use :url for button links (outputs just the URL), and :link for text fields (outputs a complete <a> tag).

In Conditions

Important: Dynamic tags are usually not needed in Bricks conditions because BricksMembers provides native conditions that are easier to use and more performant. Use the native BricksMembers conditions (found in the BricksMembers group) for common scenarios like checking user access, progress completion, and drip unlock status.

Dynamic tags in conditions should only be used for specific cases not covered by native BricksMembers conditions, such as custom comparisons or advanced logic that requires numeric values or specific tag outputs.

Using dynamic tags in conditions:

  1. Add any element
  2. Go to Conditions
  3. Add a condition: Dynamic Tag
  4. Enter a BricksMembers tag (e.g., {brm_progress})
  5. Set the comparison (e.g., “> 50”)

Example: Show an “Almost Done!” badge only if the course is more than 50% completed.

In Query Loops

Dynamic tags work in query loop templates.

Example: Show progress for each course in a query loop.

  1. Create a query loop of courses
  2. Inside the loop template, add: “Progress: {brm_progress:percent:toplevel}%” (or use :structure or :parent as needed)
  3. Each course card shows its own progress

Tag Availability

Some tags are only available when specific modules are enabled.

Always available:

  • {brm_user:*} (levels; avatar/last_login/field require Member Profiles)
  • {brm_structure:*}
  • {brm_video:*}
  • {brm_active}, {brm_completed}, {brm_unlocked} (class tags)
  • {brm_post:level}, {brm_post:level:first}, {brm_post:level:ids:*} (post query loops)

Requires Member Profiles module: {brm_user:avatar}, {brm_user:last_login}, {brm_user:field:*}

Requires Progress Tracking module:

  • {brm_progress:*}
  • {brm_completed} (class tag for CSS styling)

Requires Drip Content module:

  • {brm_drip:*}
  • {brm_unlocked} (class tag for CSS styling)

Requires Protected Downloads module:

  • {brm_download}

Requires Like System module:

  • {brm_like:*}

If a tag shows empty output, check that the required module is enabled in BricksMembers → Settings.

Common Questions

Q: Can I use tags outside of Bricks? A: No. These are Bricks-specific dynamic tags. BricksMembers only works with Bricks Builder!

Q: Can I combine multiple tags? A: Yes! Use as many tags as you want in a single text field.

Q: Can I use tags in custom HTML? A: Yes! Tags work in the Code element.

Q: Why is my tag showing empty output?

A: Check that:

  • The user is logged in (for user-specific tags), or a user is identified via URL parameter / author archive (when profile page detection is enabled)
  • The post is in a structure (for structure tags)
  • The tag syntax is correct (no typos)
  • The output of the tag matches the conditions (correct post type of template, etc.)

Q: Can I format tag output (e.g., add a % sign)? A: Yes! Just add it manually: {brm_progress:percent}%

Q: Can I use tags in ACF fields? A: Not directly. ACF fields don’t process Bricks dynamic tags. Use Bricks elements to display ACF data with BricksMembers tags.

Create

Start Building with BricksMembers

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

Join the membership & LMS revolution now!

Get Started
Still have questions? We're here to help!