Overview
Groups model the organisational structure of a church. They are stored as a tree using a closure table, making it fast to query all groups under a given node at any depth. See Group Hierarchy for how the levels relate to each other.Creating and managing groups
A group requires at minimum a name and a category. It can optionally have:- A parent group (which places it in the tree)
- A description
- An address (useful for fellowships that meet at a specific location)
- A privacy setting (
Public/Private) - A
metaDataJSON blob for category-specific extras
Group categories
Categories are defined per tenant via theGroupCategory entity. The standard categories for a six-level church hierarchy are created automatically when the tenant is seeded. Custom categories can be added for auxiliary groups (worship teams, committees, etc.).
Group memberships
A contact joins a group through aGroupMembership record. Each membership specifies the contact’s role within that group.
Adding members
Membership requests
When a contact applies to join a group, aGroupMembershipRequest is created. A group leader can approve or reject it:
Importing groups
Groups can be bulk-imported via CSV through thegroup-import endpoint. This is useful when setting up a new tenant from an existing directory.
Group combo
Thegroup-combo endpoint returns a flat list of groups suitable for populating select dropdowns in the client UI. It accepts a category filter to restrict results to a specific hierarchy level.