Add members to a ministry β
A ministry without members is just a label. This article covers the three ways to add people to a ministry, how to find the right person quickly, and how to remove someone when their season of service ends.
Open the ministry β
From Ministries, click any card to open the detail page. The page header shows the ministry name, total member count, and two buttons: Edit (rename) and Add member.

If the ministry is brand new, the members section in the middle of the page will show an empty state with a call-to-action β clicking it opens the same add-member dialog.
Add a single member β
Click Add member. A small dialog opens with a single field β a searchable dropdown.
Start typing the person's name. The dropdown queries the members table as you type and shows matches with their photo, name, and member type badge. Pick the right person and click Add.
A few things happen:
- The dialog closes.
- A toast appears at the bottom: Member added to ministry.
- The members list refreshes β the new person appears at the bottom of the roster.
- The header count updates from N to N+1.
- The list page back-cache also invalidates, so the count is correct when you navigate back.
What if the person is already in the ministry? β
The dialog catches this before saving. You'll see a destructive toast: Already a member β this person is already in this ministry. Pick someone else, or close the dialog.
What if the person isn't in your members list? β
You can't add a non-member to a ministry. Ministries are for tracking people who exist in your church database. If someone is helping out who isn't yet a member, add them through Add a member first, then come back to assign them to the ministry. (If they're truly a one-time visitor helping with a specific event, that's better tracked through Attendance than ministry membership.)
Add many members at once β
For batches β onboarding a new cohort of volunteers, restructuring after a leadership change β use Bulk actions:
- Open Members.
- Filter to the people you want to add (e.g. Member type = Volunteer + Joined after 2026-01-01).
- Click Select all at the top of the filtered list.
- Open the bulk action menu and choose Assign to ministry.
- Pick the ministry. Confirm.
Every selected member gets a ministry_members row created β same as the single-add path, just looped server-side. A success toast confirms the count: N members assigned to ministry.
This path is much faster than adding one at a time when you're moving more than five or so people.
Search within the ministry's roster β
Once the roster grows past a dozen, finding one person on the page becomes slower. There's a search box at the top of the members section β type a partial name and the list filters in real time. The search matches first or last name as you type.
The search is client-side and only filters what's already loaded β it doesn't query the server again. So if a ministry has 200 members, all 200 are in memory and search is instant.
Open a member's profile from the ministry β
Click any member row in the list to open their quick view β a slide-over panel with their photo, contact details, profile completeness, and shortcuts to their full profile. This is faster than navigating to the member's page when you just need a phone number or to confirm who they are.
The roster shows three pieces of context per member: their member type badge (Member, Visitor, Volunteer, etc.), their org unit (campus or center, if hierarchy is configured), and their primary phone. That's usually enough to identify the right person without opening their full profile.
Remove a member from the ministry β
On a desktop, hover over the member's row and a trash icon appears at the right edge. On mobile, the trash icon is always visible β there's no hover to depend on.
Click the trash. A confirmation dialog asks: Remove member from ministry? β and the supporting text is important: This will remove the member from this ministry only. The member's profile stays, their attendance history stays, their other ministry assignments stay. Only this one ministry_members join row is soft-deleted.
Confirm. The row disappears from the list and the count drops by one. The toast confirms: Member removed from ministry.
WARNING
Remove on a ministry is not Lost on a member. If someone has actually left the church, mark them as lost via the member's profile (see Active vs lost members) β that automatically removes them from all ministries, groups, and attendance going forward. Removing from a single ministry is for when a person is rotating off that team but staying active in the church.
What gets stored β
Each membership is a row in ministry_members with three fields that matter: ministry_id, member_id, and created_at. There's no role, no start date, no end date β just "is on the roster, yes/no."
If you need richer data on the relationship β when someone joined the team, what role they play, whether they're a lead vs. a member β the convention today is to add custom fields on the member side. The future ministry-roles feature is on the roadmap but not shipped.
Next steps β
- Leaders and permissions β set up who can manage the roster.
- Ministry attendance β track who actually showed up.
- Delete a ministry β when it's time to retire a team.