Skip to content

Building Your Community Structure

Set up the shape of your Chatto server before you invite a large group of members. The important choices are room layout, default access, announcement channels, roles, and the public identity of the server.

  1. Set the server name, description, logo, banner, welcome message, and message of the day.
  2. Decide which rooms everyone should see immediately.
  3. Create room groups that match how your community thinks about topics or teams.
  4. Use universal rooms for channels that every eligible member should belong to.
  5. Create custom roles only when you need a reusable permission bundle.
  6. Use room or group permissions for local behavior, not server-wide denies.
  7. Keep at least one verified owner recovery email in owners.emails.

Every channel room belongs to one room group. Groups do two jobs:

JobWhy it matters
Sidebar organizationMembers see rooms and operator-managed links in grouped sidebar sections.
Permission scopeGroup-level permissions become the default behavior for rooms in that group.

Use groups for durable categories such as Announcements, General, Project Teams, Support, or Off Topic. Avoid creating a group for every tiny topic. Room-level overrides are easier to understand when the group default already matches most rooms inside it.

Fresh servers start with a Lobby group containing #announcements and #general. You can rename the group, move rooms, add sidebar links, or replace the layout entirely.

Use a universal room when membership should be automatic for everyone who is allowed to join the room.

Good universal-room candidates:

RoomTypical policy
#announcementsEveryone sees it; only owners or trusted staff can post.
#generalEveryone can participate unless your community is invite-only or segmented.
#rulesEveryone sees it; posts are restricted.

Universal rooms do not write one membership record per user. Chatto derives effective membership from the room’s room.join permission and active room bans. If you later disable Universal, previous explicit memberships remain intact.

Start broad and add local exceptions:

GoalBest place to configure it
Ordinary member defaultsServer-scope grants on everyone
Behavior shared by a category of roomsGroup permissions
One exceptional roomRoom permissions
One exceptional userUser permission override
Reusable staff capabilityCustom role

Avoid server-scope denies unless you really want to block a capability everywhere. Chatto uses deny-wins resolution, so a broad deny can be hard to reason about later.

  • One Lobby group.
  • #announcements as universal and read-only for normal members.
  • #general as a normal or universal room.
  • One moderator or custom helper role if you need content cleanup.
  • One group for company-wide or community-wide rooms.
  • Separate groups for teams, projects, or committees.
  • Universal #announcements and possibly #general.
  • Custom roles for repeated access patterns such as staff, contractors, or project leads.
  • Universal read-only #announcements.
  • One group per track, cohort, or topic area.
  • Sidebar links for schedules, recordings, forms, or external resources.
  • Room-level posting restrictions for high-signal rooms.

Operators can edit the server name, description, welcome message, message of the day, logo, banner, and blocked username list from the admin UI.

Use these fields deliberately:

FieldOperator use
Server nameThe human name members recognize.
DescriptionLink previews and server metadata.
Welcome messageLogin-page context, onboarding notes, terms, or support links.
Message of the dayShort operational or community-wide notice for signed-in members.
Logo and bannerVisual identity for the server and login page.
Blocked usernamesPrevent impersonation, reserved names, or offensive handles before signup.