Community is BricksMembers’ conversation engine for membership sites, courses, cohorts, forums, support boards, Q&A, announcements, and social feeds. You model access and conversation behavior in BricksMembers → Community, then build the full member-facing experience in Bricks Builder.
This guide is written so you can launch Community from this post alone: enable the module, run a starter recipe, connect audiences, configure URLs and notifications, import Template Assistant layouts, wire Bricks elements, and go live.
Community is separate from Member Chat (chat rooms and direct messaging) and from Groups (teams, seats, and group memberships). A Community Space can use Levels or Groups as an Audience source, but Community owns its own posts, replies, memberships, moderation, notifications, and read state.
Community is currently in beta. Some controls, labels, and behaviors may change before the stable release.
What You Will Build
A complete Community launch usually includes:
- A Structure that defines roles (topic, reply, question, answer, and so on), nesting, titles, and feed behavior.
- One or more Sections that group Spaces for navigation.
- Spaces that members access and post into. Explicit joining is optional when an Audience grant already supplies access.
- Audience grants that decide who can view, reply, post, upload, or moderate.
- Settings for Community Item URLs, a default conversation template, notifications, and attachments.
- Bricks pages for the Space, conversation, activity feed, search, and notifications, plus empty, locked, and no-access states.
The Community Model
- Structure defines the conversation model: role names, nesting rules, title requirements, feed behavior, editor behavior, and whether roles can have context pages.
- Section groups Spaces for navigation and can share inherited Audience access.
- Space is the conversation container. It can behave like a forum, social timeline, Q&A area, support board, announcement channel, or a custom model. Internally, some APIs still say
container; that is the same object. - Item is the stored record for a topic, post, question, answer, reply, comment, announcement, repost, or quote post. The active Structure supplies the labels and rules.
- Audience grants view, root-post, reply, reaction, upload, and moderation permissions to a Section or Space through a permission profile.
- Connected content routes matching WordPress content into a Space, such as one shared discussion Space with a separate conversation for every lesson.
- Feed is a saved selection of Sections and Spaces that can power BRM Community Items when Posts Source is Saved Feed.
- Community Area is a Bricks context-provider element. Put Community elements inside it and leave their Community Area on Nearest Area; they inherit the current Space, Item, and actions automatically. Its optional Area Name is only needed for advanced cross-Area targeting.
- Composer Connection is a page-local form connection so one page can host multiple independent composers.
Community content lives in dedicated Community tables. It is not a WordPress post type. Optional projected item URLs do not change that source of truth, so do not build templates that assume every Community Item is a WP_Post.
What Is Required and What Is Optional?
- Required for a working conversation: one active Structure, one active Space that uses it, and a frontend route or Bricks region that supplies that Space context.
- Required for members to see or write: a valid access path. That can be an Audience grant, an active explicit Space membership, owner/moderator authority, or a connected-content access decision. No Audience does not silently mean Anyone.
- Optional: Sections, Saved Feeds, connected content, explicit joining, direct Item URLs, notifications, attachments, and custom Community Areas. Add only the pieces the experience needs.
- Bricks visibility is presentation: an inaccessible feed may render an empty/no-access state inside an otherwise visible page. Use Bricks conditions to present the right login, locked, or no-access UI; the server still enforces every read and write.
Complete Setup Walkthrough
Follow these steps in order. Each step depends on the one before it.
- Enable the module. Go to BricksMembers → Modules and enable Community. If members will upload files, also enable Protected Media under BricksMembers → Integrations. If you want live refresh without polling, enable Realtime there as well.
- Configure Protected Media (if enabled). Open BricksMembers → Integrations → Protected Media. Choose local, S3/R2/MinIO, or Cloudflare Images, configure the connection, then use Save and Test Connection. For Cloudflare Images, create a dedicated variant that requires signed URLs, strips metadata, and defines bounded dimensions. BRM validates the authenticated original and the processed private variant before activation, and enforces the Cloudflare Images 10 MiB upload limit even when the global BRM limit is higher.
- Open Community. Go to BricksMembers → Community.
- Run the first-run recipe. On a new installation you will see Choose a starter. Pick Social community, Discussion forum, Support & Q&A, Learning community, Custom community, or Start blank. Fill the recipe fields (initial Audience and permission profile are required for every non-blank recipe), click Create community, review the dry-run summary, and commit.
- Review Spaces on the Builder canvas. Open each Space and verify Structure, Joining policy, editor profile, moderation policy, and connection rules. Click Save changes after canvas edits.
- Connect or refine Audiences. Attach Audiences to Sections when Spaces share access, or to Spaces when permissions differ. Set the permission profile on each connection.
- Configure Settings. Enable Community Item URLs if you want shareable conversation pages, choose a default conversation template, and configure notifications, email delivery, search, rate limits, and Mentions & References.
- Import or build Bricks pages. Use the Template Assistant Community & Groups collection, or build manually with the elements below.
- Assign the conversation template and smoke-test. Open a Space as a test member, create a root Item, open the conversation URL, reply, react, and confirm locked/no-access states.
A first-run recipe creates the Community graph only. It does not create WordPress pages, Bricks templates, or sample member content. Build or import the frontend after the graph exists.
First-Run Recipe Fields
Every non-blank starter asks for an initial Audience and a permission profile. These create the first Audience source and connect it to the recipe’s Section or Space.
Initial Audience
- Anyone: public view path for Spaces that should be readable without login (still subject to joining and write rules).
- Logged-in members: any signed-in WordPress user.
- Membership level: pick a BricksMembers Level. Payments or manual Level assignment then unlocks Community through this Audience, not through the offer itself.
- BricksMembers Group: members of a Group become an Audience source. Group membership and Community membership stay separate records.
- WordPress role: use a WP role when staff or instructors need access without a Level.
- Enrolled in content: available when Enrollments is active; use for course-linked Communities.
Anyone and Logged-in members cannot both connect to the same target. If you need both public browsing and member posting, use Anyone with View only on the Section, then add a Level or Logged-in Audience with Full participation on the Space that should accept posts.
Permission profile
- View only: read the Space; no root posts, replies, reactions, or uploads.
- View and reply: read and reply; typically cannot start root Items.
- Full participation: create root Items, reply, react, bookmark, and upload when the Space allows it.
- Moderate: participation plus moderation actions for that destination.
- Custom permissions: open the connection inspector and toggle the individual capabilities.
What each starter creates
| Starter | Typical result |
|---|---|
| Social community | Audience · Space · Feed for a timeline-style Space |
| Discussion forum | Audience · Section · 2 Spaces · Feed |
| Support & Q&A | Audience · Section · support-style Spaces · Feed |
| Learning community | Audience · Section · connected-content ready Spaces · Feed |
| Custom community | You pick Space types and whether Spaces stay sectioned |
| Start blank | Empty Builder canvas; you add every object yourself |
The Five Admin Tabs
- Builder: create and connect Audiences, Sections, Spaces, connected-content rules, and Feeds. Undo, redo, zoom, pan, and Fit work on the staged graph; your viewport is remembered. Use the single Add entry point in the header. Archive soft-hides objects; permanent delete only runs from the archived panel through the canonical delete owner.
- People: manage explicit Space members, owners, moderators, pending requests, muted members, and blocked members.
- Moderation: review reports and hide, restore, lock, unlock, pin, unpin, or delete Items.
- Settings: attachments, notifications, email delivery, search, Community Item URLs, default conversation template, rate limits, abuse protection, privacy, Mentions & References, and editor profiles.
- Health & tools: Data & maintenance diagnostics, targeted dry runs, and repairs for counters, search indexes, tree data, targets, and stats. Always dry-run before applying a repair.
Draft connected-content rules: a valid rule can be saved and restored before you connect it to a Space, so you can configure the selector first and finish the destination later. An unfinished Add form with missing required fields stays open with validation and is not silently stored as a rule.
Builder: import and export configuration
Use Import / export in the Builder header to move Community configuration between sites. Export creates a versioned JSON file up to 1 MB. It includes active Sections and Spaces, Space behavior Structures, Audience grants, active and draft connected-content rules, Saved Feeds, portable frontend mappings, and Builder layout positions.
The file is configuration-only. It does not contain Items, replies, users, memberships, media, notifications, moderation history, analytics, or secrets. Import is additive: review the summary and warnings before running it, then BricksMembers creates new objects without changing, deleting, or adopting existing Community objects.
Site-bound references are matched by portable descriptions instead of trusting numeric IDs from the source site. That covers WordPress roles, BricksMembers Levels and Groups, posts, terms, Content Structures, pages, and templates. References that do not exist on the destination are warned about and skipped. An import review expires after 10 minutes and must be reviewed again if another administrator changes the Community graph before it runs.
Builder: connect Audiences after the recipe
- Click Add and create an Audience source (Level, Group, role, logged-in, or enrollment). Typed sources support multi-select so one create action can add several sources.
- Drag or connect the Audience to a Section or Space.
- Open the connection and set the permission profile. Connection-specific profiles stay on the connection; editing the Audience source rewires every grant that uses that source.
- Set each Space Joining policy: Open (immediate self-service join for a logged-in user), Request access (pending People-tab row), Invite only, or Closed. Joining is not required when an Audience grant already supplies the intended access.
- Click Save changes.
A paid offer does not unlock a Space directly. Payments assigns or removes a Level; the Level Audience grant controls Community access. A blocked Community membership overrides normal public, logged-in, owner, moderator, member, and target-based access. Hiding a button in Bricks is not security; every write is rechecked on the server.
Audience inheritance, permission profiles, and joining
- Inherit and extend combines matching grants on the Section with matching grants directly on the Space. Capabilities are additive, so a public View-only Section plus a member Participate grant on one Space creates public reading with member posting.
- Override Section access ignores that Section’s Audience grants for this Space. Nothing else appears when you select it: connect the replacement Audience directly to the Space by dragging a connection or using the connection controls.
- Anyone already matches logged-out and logged-in visitors. Do not add Logged-in members or a role again merely to repeat the same permission. Add a narrower direct Space grant only when that audience needs additional capabilities. Anyone and Logged-in members cannot both connect to the exact same target; place public View-only access on the Section and member participation on the Space instead.
- View only, View and reply, Full participation, and Moderate are ready-made permission profiles. Choose Custom permissions on an Audience connection to reveal and save the individual create, reply, react, upload, and moderate capabilities for that connection.
- Audience access and membership are separate paths. A matching Audience grant can make a Space available from day one without a Join button. Open/Request access/Invite only/Closed controls self-service membership: Open accepts a join immediately, Request access creates a pending People row, and Invite only or Closed disables self-service. A Closed learning Space is therefore correct when a Pro Level Audience already grants participation and no manual join is wanted.
People: approve requests and assign roles
- Open People and select the Space.
- For Request access Spaces, Approve or Reject each pending row.
- Promote trusted members to moderator or owner when they should moderate without full admin access.
- Mute for temporary quieting; Block to override access even if the Audience still matches.
- Remember: adding someone to a Group or Level is not the same as adding an explicit Community membership. Audience grants cover the first case; People covers the second.
Moderation
Moderation is available to users with brm_manage_community or an exact Space moderator/owner decision. Prefer lock for temporary freeze and hide when content should leave feeds but keep thread structure for staff.
The Space moderation selector exposes only meaningful publication workflows: Standard publishes normally, Review first posts reviews qualifying new-member posts, and Review every post sends every new post through approval. The former No one choice behaved like Standard for publication approval and is no longer shown in this dropdown. This setting is separate from who has permission to perform moderation actions.
Space behavior presets and custom behavior
Every Space receives an editable copy of its starting preset. Change the labels, reply depth, feed visibility, reply permalinks, reactions, attachments, voting, accepted answers, and other behavior controls directly in the Space inspector to create custom behavior. The reusable information icon beside Reset behavior to summarizes the presets and their differences.
The Space inspector’s Frontend display setting offers three choices. WordPress page maps a dedicated page that you design with a BRM Community Area. Bricks template maps one published Bricks Content template and gives every selected Space its own virtual /community-space/{id}/ URL; the template receives the current Space and Structure context automatically. None removes the public destination. Page and template mappings are mutually exclusive, and {brm_community:container_url} returns whichever published destination is active.
Inside BRM Community Items, assign Items: Item to exactly one direct Block. That is the repeated post card; a second Block with the same role repeats every post twice. Build state variants inside the one card and control them with Bricks conditions. For example, show a visible Solved badge only when brm_community_is_solved equals yes. Do not display {brm_community:is_accepted_child} directly because boolean tags return data such as 0 or 1.
Feed items controls which conversation levels become separate rows in Community feeds. Root posts only keeps replies inside their conversation, while Posts and replies includes every level. Selected item types reveals the actual semantic roles for that Space—for example Question, Answer, and Comment. Root items are always included; select the child types that should also appear independently.
To create or change those roles, open the Space and expand Advanced settings → Item types. Name each level in singular and plural form, set where it starts and ends in the reply depth, and choose whether it can receive replies, require a title, or accept attachments and rich text. Add and remove child types directly; there are no identifiers to configure. Under Reply permalinks, choosing Selected item types reveals the child-type checklist that decides which replies can open on their own dedicated page.
Reset to preset is an immediate server-side action after you confirm the dialog. It resets the Space’s dedicated behavior Structure and reloads the Builder; you do not need to click Save changes afterward, and reloading the page will not undo it. The Space itself, its URL key, Audience connections, writing profile, and moderation policy stay unchanged.
Settings: URLs, templates, notifications, editor profiles
Community Item URLs and the default conversation template
- In Settings, enable Community Item URLs (permalinks) if members should open a dedicated conversation page.
- Choose which Item roles get a context page. Structure presets default differently: social often uses root-only; forums and Q&A may allow selected roles; some announcement models disable child permalinks.
- Create or import a Bricks Content template for the conversation layout (Template Assistant includes one).
- Select that template as the default conversation template and save.
- Smoke-test by creating an Item and opening its permalink. The request becomes a virtual document that seeds Community context and renders the selected Bricks Content template with normal header, content, and footer lifecycle.
If URLs stay disabled, build conversation views as normal pages that resolve the active Item through BRM Community Area and query parameters or linked navigation. Direct Item URLs are optional projected routes, not WordPress posts.
The Space URL key in Builder names that Space’s route identity; the Settings card controls how individual conversation Items receive direct URLs. A Changed pill means the field differs from AtomikMembers’ product default—it does not mean the value is unsaved. Unsaved edits are tracked separately by the Settings save bar and leave-page warning.
Notifications and email
- Decide which events create notifications (replies, mentions, accepted answers, moderation, membership changes, and related events).
- Configure email delivery and frequency. Email never replaces the in-product notification; it follows after the notification exists and the member still opts in at global, Space, or Item level.
- Build a Notifications page with BRM Community Notifications and a Button using Mark Notification Read.
- On Space and Item cards, gate subscribe controls with
brm_community_can_subscribe/ container subscription conditions.
The main notification switches configure the in-product notification records rendered by BRM Community Notifications. The Email notifications subsection controls whether those existing notifications also become immediate, daily-digest, or weekly-digest emails; Daily digest time and Weekly digest time use the site’s configured timezone.
Frontend display independently decides where the complete Notifications screen lives. Choose a normal WordPress page, a shared published Bricks Content template, or no dedicated destination. Template mode uses /community-notifications/ and automatically displays the current logged-in member’s notifications; it does not need a Space or Item context. Link menus or buttons with {brm_community:notifications_url} so they continue working if the destination mode changes.
Editor profiles
Editor profiles control which composer tools, mention/reference behavior, and attachment modes a Space uses. Assign a profile on the Space inspector. Create additional profiles in Settings when social timelines, support Q&A, and announcement Spaces need different toolbars. The profile is the admin source of truth; Bricks Buttons only present the tools the runtime profile allows.
Protected Media, Realtime, and Member Chat
Community files use private protected-media objects. Local files live outside every web root; S3/R2/MinIO and Cloudflare origins must remain private. Every delivery URL is short-lived, session-bound, and rechecks the exact Community Item or Chat message/room. The uploader does not retain access when the associated discussion is no longer visible.
Community refresh supports auto, off, polling, and realtime with Pusher or Ably. Invalidations contain only IDs and cursors; browsers fetch authoritative secured state. Hidden or offline tabs stop polling; “off” means no refresh requests. Social presets often default to auto; forum, Q&A, support, and lesson discussions often default to off.
Use the native Create or Open Linked Chat action only where a room is useful. Community Item creation never creates a room automatically. Place BRM Mentions & References inside an Item, Reply, or Chat message layout; it repeats only relations the current viewer may still read and never copies protected target content.
Use the Template Assistant
- Confirm the Builder graph is saved (Sections, Spaces, Feeds, Audiences).
- Open the BricksMembers Template Assistant and select Community & Groups.
- Import in a sensible order: reusable parts (navigation, header, card, composer) first, then Space/forum/activity pages, then conversation template, then empty/error/locked/no-access states.
- When the assistant asks for live Feeds, Sections, Spaces, editor profiles, or destination pages, pick the live resources. Do not paste raw IDs into JSON.
- Paste or apply the resulting Bricks structure onto the destination page or Content template.
- Assign the conversation Content template in Community Settings if you use Community Item URLs.
- Customize with native Bricks controls, classes, conditions, and
{brm_community:*}tags.
Standalone and ACSS variants are both available. Pick the set that matches your design system. The assistant does not replace Audience or Structure setup; it only scaffolds the frontend.
Day-1 Bricks Page Recipes
| Page | Recommended Bricks foundation |
|---|---|
| Space page | BRM Community Area for the Space, join/request/leave Buttons, Composer, Items, empty and locked states |
| Conversation page | Area for the active Item, Collection Type Ancestors, Item content, reply Composer, one BRM Community Replies branch |
| Activity feed | BRM Community Items with Posts Source All Spaces the Member Can Access or Saved Feed |
| Forum directory | Collection Type Sections, nested Collection Type Spaces with Section Source Current Section |
| Member profile activity | Collection Type Member Activity |
| Search | BRM Community Search with optional custom result children |
| Notifications | BRM Community Notifications plus Mark Notification Read |
| Lesson discussion | BRM Community Link with Link Direction Show linked discussion, then Composer and Items |
For a multi-Space activity page, point Community Items at a Saved Feed. The root Composer still posts to its current Community Area Space by default. When members should choose another eligible Space, place BRM Community Destination Field inside that Composer, connect it to the same Composer Connection, and select the same Saved Feed. Removing that field removes the selector and restores the Area Space as the only destination.
Area, Connection, and empty states
- Put BRM Community Area at the top of each Community region. Keep its Area Name on Primary for a normal page.
- Leave the Community Area control on Nearest Area for Items, Composer, Replies, Search, Notifications, layout slots, and action Buttons inside that tree. Add, rename, or remove friendly custom Area names under Community → Settings → Community Areas only for advanced explicit targeting.
- Set the same Composer Connection on the Composer, its layout slots, attachment fields, and action Buttons.
- When a page needs a second independent Community region, add a second BRM Community Area and nest that region below it. Only choose a named Community Area when an element must deliberately reach a different active Area outside its nearest tree.
- Build empty, locked, no-access, and error states as conditional variants. Gate them with BRM Community conditions such as
can_view_container,can_create_root_item,is_locked, and membership status. Do not rely on CSS alone. - Collapse optional composer chrome with native Bricks conditions when the Structure disables titles, attachments, or tools.
Community Bricks Elements
- BRM Community Area (
brm-community-context) establishes Space and Item context. Space Source: Use Current Space, Choose a Space, or No Space. Its children normally stay on Nearest Area. - BRM Community Link (
brm-community-link) bridges linked WordPress content and linked discussions. - BRM Community Collection (
brm-community-collection) repeats one child design for Sections, Spaces, Ancestors, Member Activity, or Interactions. - Ancestors means the parent Item chain above the current conversation or reply. Use it for breadcrumbs or “in reply to” context; it is unrelated to WordPress page ancestors and connected-content rules.
- Member Activity can read the member supplied by profile context—normally a
?user={id}profile URL—or the currently logged-in user. Interactions always reads the current viewer’s own liked or bookmarked content and does not use profile context. - BRM Community Composer (
brm-community-composer) creates a root Item, creates a reply, or edits an Item. A root Composer uses its current Community Area Space or one explicitly selected Space. Multi-Space choice belongs to a nested BRM Community Destination Field, not an automatically injected Composer control. - BRM Community Items (
brm-community-items) renders a Space feed or cross-Space feed with Structure Policy, visibility, sort, and keyset load more. - BRM Community Replies (
brm-community-replies) loads a bounded descendant branch in one query. Give it one direct Block marked Replies: Reply; build the author, date, body, attachments, and actions inside that atomic reply card. Set Visual Nesting Depth and Indent per Level on Replies and do not nest another Replies element inside the card. - BRM Community Search and BRM Community Notifications for search and notification surfaces.
- BRM Mentions & References and BRM Community Attachment Field for relation output and uploads inside composers and cards.
Design one atomic Block child inside Items, Replies, Search, Notifications, Collection, or Mentions & References and assign that list’s repeat role to the Block. Build all native Heading, Text, Image, Link, attachment, and action elements inside it; they inherit the current row automatically. Link a feed-card title or native Text Link to {brm_community:permalink} so members can open the conversation page. Do not add a redundant Community Area inside a repeated row.
Design data-driven rows without a URL: Collection, Items, Replies, Search, and Notifications show one safe example row in Bricks Builder when live context or data is unavailable. The element repeats its real native child tree around that example, so Community dynamic tags are visible while you design. Use State → Show Example Content to turn the preview off and inspect the true empty, missing-context, or form-only state. Example content is never saved as Community content and never appears on the frontend.
Community Link and Collection Modes
| Element / control | Use it for |
|---|---|
| Link → Show linked content | Inside an Item or Reply card, render the authorized linked WordPress post |
| Link → Show linked discussion | On a lesson or host post, mount the attached Community discussion |
discussionScope | Current Post, Content Bank Source, Content Bank Proxy, or Choose a Space Manually |
| Collection → Sections / Spaces / Ancestors / Member Activity / Interactions | Directories, breadcrumbs, profile activity, and liked or bookmarked lists |
Community custom Bricks query types were removed in 1.4.0. Feeds stay on BRM Community Items; reply branches stay on BRM Community Replies.
When Show linked discussion has no attached Space, Bricks Builder keeps the missing-context notice visible and still renders the element’s authored child tree so you can select and edit it. The public frontend renders only the notice in that state; it never shows those children without a valid discussion context.
Build Item Cards with Dynamic Tags
Use {brm_community:*} in native Bricks Heading, Text, Image, and Link elements. Full tag lists live in the Dynamic Tags Reference; the groups you need on day one:
- Identity and content:
item_id,item_role,role_label,title,body,excerpt,author_name,author_avatar_url,created_at,permalink - Space and Section:
container_name,container_url,container_member_status,container_unread_count,section_name,structure_name - Counts and state:
reply_count,reaction_count,is_pinned,is_locked,is_unread - Attachments:
first_attachment_urland related status tags (protected delivery for uploaded media; the authored public HTTPS URL for an enabled external URL attachment) - Engagement and Q&A:
has_reacted,is_bookmarked,is_subscribed,is_open,is_solved,accepted_child_item_id - Permissions for labels (prefer conditions for gating):
can_reply,can_create_root_item,can_moderate - Mentions and references inside BRM Mentions & References:
{brm_relation:target_label},target_url,is_mention,is_reference
Gate Layouts with Conditions
Use the BRM Community condition group instead of comparing visible tag text.
- Show a root Composer when
brm_community_can_create_root_itemis Yes. - Show a reply Composer when
brm_community_can_replyis Yes. - Show join, request, or leave with the matching container conditions.
- Gate reaction, bookmark, subscription, upload, report, edit, delete, and moderation Buttons with the matching
brm_community_can_*condition. - Build variants with pinned, locked, unread, repost, quote, open, solved, or privacy-redacted conditions.
Native Button Actions
A native Bricks Button uses the single BricksMembers Action selector. Community actions include Submit Composer, Reset Composer, Focus Composer, Composer Tool, Open Attachment Picker, Clear Community Search, Join Container, Request Container Access, Leave Container, Mark Item Read, Mark Container Read, Toggle Reaction, Toggle Bookmark, Toggle Item Subscription, Toggle Container Subscription, Report Item, Moderate Item, Accept Child Item, Clear Accepted Child, Repost Item, Submit Quote Post, Mark Notification Read, Open Linked Chat, and Create or Open Linked Chat.
Buttons inside an Item, Reply, Search, Notification, or Area layout resolve the nearest Community target automatically. Only set an explicit Item or Space ID when the button targets something outside its current context.
Build a Fully Custom Composer
The Composer owns the runtime form while native Bricks children own the layout. On Div or Block elements, select a Community Layout Role for Toolbar, Editor, Status, Media, or Actions regions; use the Community-specific Title role where needed.
Leave Community Area on Nearest Area and select the same Composer Connection on the Composer, its slots, Attachment Fields, and Buttons. Build the toolbar with native Buttons using Composer Tool. Build attachments with BRM Community Attachment Field. The Composer has no duplicate toolbar-display fallback: if you omit tools, they are not injected. Do not replace the write flow with a Bricks Form action or custom table-writing JavaScript.
When one Saved Feed contains several Spaces, the Composer cannot safely guess a destination. Keep the Composer on its current Area Space, then add BRM Community Destination Field as an authored child, select the same Composer Connection, and choose the backend Feed used by Community Items. Members see only active Spaces in that Feed where they may create a root Item; the server rechecks the selected Space on submit. Remove the field entirely when no selector is wanted.
Connect Discussions to Lessons or Content Bank
- current_post: discussion attached to the visible WordPress post.
- bank_source: every Content Bank placement shares one source-level discussion.
- bank_proxy: each placement gets its own discussion.
- manual: explicitly selected target only.
Place brm-community-link with Link Direction Show linked discussion on the lesson or host page and choose the same discussionScope as the Builder connection. BricksMembers keeps the discussion target, visible access target, and notification target separate, so a shared source conversation still checks access against the lesson placement the member is viewing. For Field Sync between courses and products, see the Connected Content guide.
Cross-Module Integrations
- Levels and Payments: Level Audience grants unlock Spaces after Payments assigns the Level.
- Groups: Group can be an Audience source; Group and Community memberships remain separate.
- Automations: triggers for setup completion, Item create/update/moderation, reactions, bookmarks, subscriptions, accepted replies, attachments, reports, and membership changes.
- Emails: visible notification first, then preference-aware email delivery.
- Interactions: can journal reactions and bookmarks without owning Community Items.
- Analytics and Privacy: events stay ID and count safe; exports and erasure use Community’s personal-data owner; redaction preserves thread structure.
What Is Deliberately Not Included
Community stores rebuildable activity counters, but it does not calculate points, reputation, badges, leaderboards, ranks, streaks, or rewards. Those belong in separate modules. Do not use activity counters as a score.
Learn from the Included Starter Site
AtomikMembers 1.4.3 includes Starter Site pack 1.1.1 with a realistic LMS Community implementation. Install it from the Dashboard on a licensed disposable Bricks test site when you want a complete reference instead of starting from a blank graph. It includes General, Learning Discussions, and Support Sections; six practical Spaces; Level, role, public, and logged-in Audiences; course and lesson connected discussions; two Saved Feeds; direct conversation pages; search; notifications; populated activity; and a Pro learner with one Like and one Bookmark for Interactions examples.
On Community Home, the Area and root Composer use the fixed Community Feed Space as the default posting destination. Community Items reads the broader Community Activity Saved Feed. The optional Destination Field is bound to that same Saved Feed so members may deliberately override the default with another eligible Space. The Moderation tab is ready to demonstrate both workflows: one Item is awaiting publication review and one visible Item has an open report. Repair adds missing owned examples idempotently. Installer recovery, repair, reset, and removal restore only Starter Site-owned payment and Bricks settings, preserving provider credentials and unrelated global settings.
Go-Live Checklist
- Module enabled; Protected Media and Realtime tested if used.
- Recipe committed; Audiences and permission profiles saved on the right Sections/Spaces.
- Joining policies match the product (Open vs Request access vs Invite only).
- People tab reviewed for owners/moderators; a test pending request approved end to end if needed.
- Community Item URLs and default conversation template configured, or an equivalent page route documented.
- Template Assistant pages imported or custom pages built for Space, conversation, feed, search, notifications, and empty/locked/no-access states.
- Logged-in member can post, reply, react, and receive a notification.
- Logged-out or wrong-Level visitor sees the intended locked or no-access state, not an empty broken page.
- Upload path works only for permitted members and never exposes storage origins.
Troubleshooting Checklist
- No content appears: module enabled, Space active, Audience matches, Area points at the live resource, and Save changes was clicked.
- Button visible but fails: add the matching BRM Community condition; inspect membership, lock/status, Structure policy, and rate limits. The server is correctly rechecking permission.
- Uploads fail: Protected Media enabled, connection test passed, Audience allows uploads.
- Live refresh missing: Realtime enabled and tested, or accept polling/off behavior.
- Recipe created no page: expected; import Template Assistant or build in Bricks.
- Custom query filter does nothing: Bricks Query Filters do not support Community loops; use Community query controls or a Saved Feed.
- Replies not nested visually: raise Visual Nesting Depth / Indent per Level; effective depth cannot exceed Structure maximum.
- Shared Content Bank discussion has wrong access: Builder rule and Link element must use the same bank_source or bank_proxy scope.
- Community Link is empty in a Bricks template: enable Show Example Content and select an Example Post that has an attached Community Space. The canvas then renders that post’s seeded discussion and dynamic data; frontend visitors still use the real current post.
- Conversation template is empty in Builder: select the outer Community Area, enable Show Example Content, and choose an Example Conversation. Its real root post, replies, and dynamic tags appear in the canvas; frontend visitors still use the conversation URL.
- Counters or search drift: Health & tools → Data & maintenance, dry run, then repair. Do not edit Community tables manually.