Skip to main content

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 metaData JSON blob for category-specific extras

Group categories

Categories are defined per tenant via the GroupCategory 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 a GroupMembership record. Each membership specifies the contact’s role within that group.

Adding members

Membership requests

When a contact applies to join a group, a GroupMembershipRequest is created. A group leader can approve or reject it:

Importing groups

Groups can be bulk-imported via CSV through the group-import endpoint. This is useful when setting up a new tenant from an existing directory.

Group combo

The group-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.

API endpoints

Full reference: Groups API.