Member Chat & Community Rooms

A membership site feels very different when the conversation stays inside the experience instead of being pushed out to email threads, private Slack groups, or random comment sections. Member Chat brings that conversation into BricksMembers with room-based chat that feels native to the site you are already building.

Member Chat is not the Community module. Use Member Chat for room-based messaging. Use Community Builder when you need Spaces, Sections, Audience grants, connected-content discussions, saved Feeds, and Bricks Community elements for forum/social/support-style threads.

It is designed for the real situations membership site owners run into every week: a shared community lounge, a private cohort room, a course-specific discussion area, or a small topic channel for people who need to collaborate around one post, one lesson, or one group.

What Member Chat Actually Gives You

Member Chat adds room-based discussions to BricksMembers. Rooms can be global, group-based, or topic-based, and the feed is rendered directly through Bricks so the chat UI matches the rest of your site instead of feeling bolted on.

  • Global rooms for site-wide community spaces
  • Primary group rooms that are created automatically for BRM Groups
  • Topic rooms for narrower conversations around a group or a global audience
  • Unread tracking so members can see where conversation moved
  • Read/write policies based on BRM levels, linked posts, and group membership
  • Bricks-native presentation so your chat feed can inherit your layout, typography, and branding

How Rooms Work

The easiest way to think about Member Chat is that a room is a permission-aware place where messages live. The room decides who can see the conversation, who can write into it, and whether it belongs to everyone or to a specific group.

  • Global rooms are available across the site. They are a good fit for general community discussion, announcements, or support-style conversations.
  • Group rooms belong to a BRM Group. When Member Chat and Groups are both enabled, each group gets one primary room automatically.
  • Topic rooms are additional focused channels. These can be global or tied to a group.

That means you can start simple with one community room, then grow into cohort chats, mastermind rooms, accountability channels, or lesson-specific discussions without changing the overall system.

Enable the Module

  1. Go to BricksMembers → Modules
  2. Turn on Member Chat and confirm the change
  3. Open BricksMembers → Member Chat

Once the module is enabled, the Member Chat page is available in the BricksMembers sidebar.

Set Up Your First Room

The Member Chat admin page has two main jobs: global settings and room management.

For a first setup, most site owners start with one global room:

  1. Go to BricksMembers → Member Chat
  2. Open the Rooms tab
  3. Create a room name such as “Community Lounge” or “Member Hub”
  4. Choose whether it should be a standard room or a topic room
  5. Optionally limit reading or writing by BRM level
  6. Optionally link the room to a post if access should follow that content

You can also tune the module defaults here, including poll interval, default message limit, maximum message length, and which member levels are allowed to create topic rooms.

Room lists are ordered by recent activity, so active conversations stay at the top. BricksMembers stores that activity timestamp directly on each room and keeps it updated when messages are written, which keeps room lists fast even as a community grows.

Real-Time Updates

Member Chat keeps a 15-second polling fallback because messages are time-sensitive. For instant invalidations, open BricksMembers → Integrations → Realtime, choose Pusher or Ably, enter the shared credentials, and test the connection. Community and Member Chat use this one shared provider configuration; each module keeps only its own enablement and polling behavior. If the provider is unavailable or set to None, Chat continues with its polling fallback and a failed provider call never rolls back a message.

What Happens with Groups

This is one of the nicest parts of the system: if you already use BRM Groups, Member Chat does not ask you to rebuild that logic again.

When a group is created, BricksMembers creates that group’s primary chat room automatically. When members are added or removed, the room membership is kept in sync. When a group is archived, its chat rooms are archived too.

So a cohort owner can create a group, invite members, and immediately have a private room for that cohort without any extra setup. That is especially useful for bootcamps, classes, client teams, and internal training programs.

Building the Chat UI in Bricks

Member Chat ships with three nestable Bricks elements that you can mix and match depending on the layout you want:

  • BRM Chat Feed renders the message feed for a room. Drop child elements inside to design your own message rows using dynamic tags.
  • BRM Chat Room List loops over every room the current user can access and renders your child layout once per room, so you can build a room sidebar or switcher with exactly the design you want.
  • BRM Chat Input renders the composer form for sending messages. New instances include an editor slot, icon-only portable toolbar buttons, and an icon-only Send button as editable Bricks children. You can move, replace, or style those children like normal Bricks elements.

All three elements are nestable, which means you place child elements inside them in the Bricks structure panel and design each piece visually. There is no fixed HTML template you are stuck with.

If you place a Chat Feed, a Chat Room List, and a Chat Input on the same page and give them the same Chat Group Key, they behave as one connected chat interface. When a member clicks a room in the list, the feed and input switch to that room automatically.

The Send Button and Other Chat Buttons

New Chat Input elements start with regular Bricks Button children for the portable toolbar and Send action. You can keep, move, restyle, replace, or remove them, and you can add more native Bricks Buttons whenever the layout needs another action.

When Member Chat is active, native Bricks Buttons use the shared BricksMembers Action selector. Pick a Chat action, or use the portable Composer Tool/Submit actions when the same composer subtree should also work in Community. Selecting an action reveals only the controls it needs. The Chat actions include:

  • Send Message — sends the message in the textarea. A Chat Group Key field appears so you can match it to the correct Chat Input.
  • Toggle Topic Creator — shows or hides the topic creation form.
  • Submit Topic — submits the new topic form.
  • Cancel Topic — hides the topic creation form without submitting.
  • Load More Rooms — loads the next room page when a Chat Room List uses overflow pagination.
  • Open Linked Community Context — opens the Community Section, Space, or Item attached to the current Community-context room after a fresh access check.
  • Reference Community Item — opens the authorized reference flow for a Community Item the member can currently read.

This means you have full control over button placement, labels, icons, and styling. You can put the send button to the right of the textarea, below it, or anywhere else in your layout. You style it exactly like any other Bricks button.

Even if there is no send button on the page, members can still send messages by pressing Enter on the keyboard. Pressing Shift + Enter inserts a line break instead.

Rich Chat supports bold, italic, links, quotes, inline code, emoji, member mentions, content references, and allowed image/audio/video/file/embed insertion. It intentionally leaves document-style headings, lists, tables, clear-format, and history controls to Community. Mention and reference suggestions are filtered by the effective Composer Relation policy and current access; the server rechecks every target before saving, stores IDs rather than protected content, and hides a relation when the viewer later loses access.

Designing Message Rows

Because the Chat Feed is nestable, you design each message row using regular Bricks elements. A typical setup might include an image element for the avatar, a text element for the author name, another for the timestamp, and a basic text element for the message content.

The chat dynamic tags make this work. Inside a Chat Feed’s children, tags like {brm_chat:message_content}, {brm_chat:message_author_name}, and {brm_chat:message_created_at} resolve to the current message in the loop.

For avatar images, you do not need a separate chat-specific tag. The standard Bricks tag automatically resolves to the message author’s avatar when used inside a chat feed. The same goes for , , and other built-in user tags. Member Chat hooks into the Bricks rendering pipeline so those tags always point to the right person in each message row.

My Messages vs. Other People’s Messages

In most chat interfaces, your own messages look different from other people’s messages. Maybe yours are right-aligned with a blue background, while everyone else’s are left-aligned. Member Chat gives you two ways to handle this, controlled by the Message Layout Mode setting on the Chat Feed element.

Single Layout (the default) uses one child layout for all messages. Each message row that belongs to the current user automatically gets a brm-chat-feed__message-row--mine CSS class. You can use that class in your Bricks styles to right-align your messages, change the background color, or apply any other visual difference. This is the simplest approach and works well when the two message styles only differ in colors and positioning.

Separate Layouts lets you design two completely independent message structures. You place two Div elements as direct children of the Chat Feed, then set the Chat Layout Role on each one: one Div gets “My Messages Layout” and the other gets “Others Messages Layout”. The feed renders only the matching Div for each message, so you can use entirely different element hierarchies, different dynamic tags, or different visual structures for your own messages versus everyone else’s.

The Chat Layout Role dropdown appears on every Bricks Div element under the BRM Chat section in the content settings, just like the Chat Action dropdown appears on Button elements. You only need to set it on the two top-level Divs inside the Chat Feed when using Separate Layouts mode.

Both approaches keep the brm-chat-feed__message-row--mine class on the wrapper, so even in Separate Layouts mode you can still use CSS selectors if you want additional fine-tuning.

Using Conditions in Messages

Bricks conditions let you show or hide parts of your chat layout depending on the current message or room state. For example, you might want to show an “edited” indicator only on messages that have been modified, or show edit and delete buttons only on your own messages.

The chat conditions you can use inside message rows include:

  • Chat message is mine — useful for styling your own messages differently or showing edit/delete buttons only on your posts
  • Chat message is edited — show an “edited” label next to messages that have been changed
  • Chat message is deleted — display a placeholder like “This message was removed” instead of the original content
  • Chat message can manage — show moderation tools for users who have permission to edit or delete a particular message

Room-level conditions also work at the page or section level:

  • Chat has current room — check whether a room context exists at all
  • Chat can write — show or hide input areas based on write permissions
  • Chat room scope — differentiate styling between global and group rooms
  • Chat unread count — show notification badges when unread messages are above a threshold

You will find all chat conditions under the BRM: Chat group in the Bricks condition dropdown, and chat dynamic tags under BRM: Chat in the dynamic tag picker.

Designing the Room List

The Chat Room List element works like a visual loop. You design one “room item” layout with child elements, and that layout is repeated for every room the member can access. Inside those children, tags like {brm_chat:room_name}, {brm_chat:room_unread_count}, and {brm_chat:room_kind} resolve to each room in turn.

The active room gets an extra CSS class (brm-chat-room-list__item--active) so you can highlight the selected room with your own styles. Clicking a room item automatically switches the Chat Feed and Chat Input to that room, as long as they share the same Chat Group Key.

Room items are keyboard-accessible. Members can tab through the list and press Enter or Space to switch rooms.

Putting It All Together

A typical chat page layout in Bricks might look something like this in the structure panel:

  • Section (your page wrapper)


  • Container with a two-column layout


  • BRM Chat Room List (sidebar column)
  • Div — room item with room name and unread badge
  • BRM Chat Feed (main column)
  • Div — message bubble with avatar, name, timestamp, and content
  • BRM Chat Input (below the feed)


  • Div — portable editor slot using Composer Layout Role Editor
  • Button — BricksMembers Action set to Submit Composer

Give all three elements the same Chat Group Key (the default is “default”) and they will work together automatically. The Room List switches the Feed and Input when a room is clicked. The Input sends messages to whatever room the Feed is currently showing.

Who Can Read and Who Can Write?

Member Chat separates room access from room activity.

  • Read access can follow group membership, linked-post access, and optional read levels
  • Write access can be more open or more restrictive, depending on your write-level rules
  • Admins can always manage rooms and moderate messages

That makes read-only rooms possible. For example, you might allow all members in a room but only let certain levels or group leaders post. In that case the chat feed still appears, but the chat input shows a read-only notice instead of the composer.

Creating Topic Rooms

Topic rooms are for conversations that deserve their own space but do not need an entirely separate system. Administrators can always create them. You can also allow specific BRM levels to create topics from the chat settings page.

To enable topic creation from the frontend, turn on Show Topic Creator in the Chat Input element settings. This renders a hidden topic creation form with a name field and an optional linked-post search. The form itself has no built-in buttons — you add Bricks Button elements and assign them the appropriate Chat Actions:

  • A button with Toggle Topic Creator to show and hide the form
  • A button with Submit Topic to create the topic
  • A button with Cancel Topic to dismiss the form

Members who have the right level see the toggle button and can give the topic a name and optionally link it to a post on the site. That makes it easy to create a discussion thread around a specific lesson, article, or resource.

Available Dynamic Tags

Here is the full list of chat dynamic tags you can use inside your Bricks layouts. All of these appear under the BRM: Chat group in the dynamic tag picker.

Room tags (resolve inside Chat Feed, Chat Room List, or any context with an active room):

  • {brm_chat:room_id}, {brm_chat:room_name}, {brm_chat:room_description}
  • {brm_chat:room_scope}, {brm_chat:room_kind}
  • {brm_chat:room_unread_count}, {brm_chat:room_member_count}, {brm_chat:room_can_write}

Message tags (resolve inside Chat Feed message rows):

  • {brm_chat:message_id}, {brm_chat:message_content}
  • {brm_chat:message_author_id}, {brm_chat:message_author_name}, {brm_chat:message_author_login}
  • {brm_chat:message_author_first_name}, {brm_chat:message_author_last_name}, {brm_chat:message_author_nickname}, {brm_chat:message_author_email}
  • {brm_chat:message_created_at}, {brm_chat:message_edited_at}, {brm_chat:message_status}
  • {brm_chat:message_is_mine}, {brm_chat:message_is_edited}, {brm_chat:message_is_deleted}, {brm_chat:message_can_manage}

Built-in Bricks user tags (automatically resolve to the message author inside chat feeds):

  • for the author’s avatar image
  • , , , and other standard Bricks user tags

Good Real-World Uses

  • Course communities with one public member lounge plus course-specific topic rooms
  • Cohort programs where every group gets its own private room automatically
  • Team licenses where each client team gets a private discussion space
  • High-ticket memberships where only premium levels can write while other members can still read
  • Lesson or post discussions tied to a linked post so the room follows access to that content
Community Chat Feed And Input in BricksMembers 47 Chat
Chat area with feed and message input.

A Few Practical Notes

  • Messages can use plain text, Markdown, or BRM rich text. BricksMembers sanitizes the selected format on every create/edit and resolves protected-media placeholders only for an authorized viewer.
  • The chat feed refreshes through server-rendered Bricks HTML, so what members see after polling matches the original render path exactly.
  • Unread tracking is handled automatically when members open a room or return to a visible feed.
  • Global rooms do not need to be manually pre-populated with every possible member just to work.
  • All three chat elements are nestable, so you design the layout with regular Bricks elements instead of being locked into a fixed HTML structure.
  • All buttons (send, topic toggle, topic submit, topic cancel) are regular Bricks Button elements you place and style yourself. There are no hidden built-in buttons.
  • The Enter key sends messages even without a visible send button, so minimal layouts work out of the box.

The Big Picture

Member Chat is not trying to turn BricksMembers into a social network. It is trying to solve a more practical problem: keeping the right conversations close to the content, the group, and the membership experience that already exists on your site.

For most membership sites, that is exactly the sweet spot. You get private rooms, group-aware discussion, unread tracking, and a frontend you can actually design in Bricks — without handing your community over to another platform.

Protected Files, Realtime, and Community Links

Community and Chat now share protected media and realtime infrastructure while keeping posts and messages in separate domains. Files have two security layers: a private storage origin and a live Item/message/room authorization check on every delivery. A URL is short-lived and tied to one user and WordPress session; another user/session, logout, Level or group removal, payment entitlement loss, moderation, or deletion makes it unusable.

Choose private local storage, S3-compatible storage such as AWS S3/R2/MinIO, Cloudflare Images, or Cloudflare Stream under Integrations. Local/S3 raster images are re-encoded. For Cloudflare Images, BRM verifies the authenticated original upload at completion and the processed private variant before activation; Cloudflare Images uploads are capped at 10 MiB even when the global BRM limit is higher. Documents, archives, audio, and general files require ClamAV. External URLs are optional public links, not protected files.

For Cloudflare Images, create a dedicated variant such as brm-private. It must require signed URLs, set metadata to none, and define bounded width and height. Enter the variant key and use Save and Test Connection; BricksMembers keeps launch readiness in an error state until the exact variant passes.

Pusher, Ably, adaptive polling, and fully disabled refreshing are supported. Provider outages do not undo a post or message; an outbox retries content-free notifications. Forum-style presets default to refresh off, while social feeds default to auto.

A Chat room is created only when explicitly linked or when an authorized writer uses Create or Open Linked Chat. Mentions and references use the reusable Composer Relation policy assigned to Chat, store IDs only, and disappear when the viewer loses source or target access; protected content is never copied between a Community post and a Chat message. Each member can disable being mentioned from Privacy Settings, and that personal choice overrides every administrator policy.

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