Skip to content

Create a bulk action ​

Every bulk action follows the same three-step shape: select a target set of members, pick the action, confirm the count. The selection happens on the member list (or any list that shows members β€” connection network, group detail, ministry detail). The action picker is the action bar that appears once you've checked at least one row.

Member list with bulk action bar visible

1. Build your selection ​

Open Members (or any list that shows members). Three ways to populate the selection:

MethodBest for
Tick each row's checkboxSmall, hand-picked lists
Select all on pageA page of filtered results (typically 50 rows)
Select all matching filtersThe full filtered set β€” could be thousands

Once one row is checked, the action bar slides in at the top of the list with the selection count. As you tick or untick rows, the count updates.

TIP

"Select all matching filters" is the high-leverage move. Apply your filters first β€” Youth ministry, last seen > 4 weeks ago, has phone β€” then hit it to pull the entire matching set, not just the visible page. The action runs against every match.

The selection survives pagination β€” moving to page 2 keeps your page-1 selections. Deselect all clears everything.

2. Pick an action ​

The action bar exposes the primary actions inline plus a More actions dropdown for the less-frequent ones.

Inline buttons (always visible if you have permission):

  • Edit fields β€” opens the bulk-edit dialog.
  • Mark attendance β€” for a meeting + date.
  • Mark as lost β€” soft-archive the selection. Replaced by Restore to active when the include-lost filter is on.
  • Delete β€” soft-delete, recoverable for 30 days.
  • Merge β€” only appears when 2 or more are selected.

The More actions dropdown adds:

  • Send message β€” WhatsApp / SMS / email through configured channels.
  • Assign to org unit β€” one entry per enabled hierarchy level.
  • Assign to ministry, Assign to group, Enrol in school.
  • Add to workflow β€” manually trigger an automated flow.

Items that don't apply are hidden. If your org has no ministries set up, Assign to ministry doesn't show.

3. Confirm the count ​

Every action opens a confirmation dialog that includes the affected-row count (the effective count, which excludes any locked rows). The button reads Confirm (47) β€” never just Confirm. Read the number before clicking. If you meant to act on a slice and the number is "all members," your filters didn't apply the way you thought.

For assignment actions (org unit, ministry, group, school, workflow), the dialog also lets you search-pick the target β€” for example which group to assign to. For send-message, the dialog hands off to the message composer, which lets you draft the body and pick a template before sending.

4. Watch it run ​

Confirming closes the dialog and creates the bulk_actions row. You can:

  • Stay on the member list β€” the action runs in the background. You'll get an in-app notification when it finishes.
  • Open Bulk actions in the sidebar to watch the progress bar live. See Monitoring and retries.

WARNING

Closing the browser doesn't stop the action. Once the row is queued, the edge function processes it server-side. The only way to stop it mid-flight is to open the action's detail page and click Cancel.

Filtering before selection ​

The "select all matching filters" affordance is only as useful as your filters. The member list supports:

FilterWhere it lives
SearchTop of the list β€” type-ahead by name, email, phone
Org unitOne picker per enabled hierarchy level
Ministry / group / schoolSide panel
Member type, gender, age rangeSide panel
Custom field valuesSide panel β€” appears when you have custom fields
Lost / activeToggle at top β€” defaults to active only
Last attendanceSide panel β€” "haven't attended in N weeks"

Combine as many as you like. The filter set is reflected in the URL, so you can bookmark "Youth ministry, lost, last seen > 90d" as a working query and run a bulk action against it whenever you need to.

TIP

The same filter machinery powers the connection network and saved segments. Anywhere you can filter members, you can run bulk actions against the matching set.

What's stored ​

A bulk action records:

  • The org, the user who launched it, the action type, and the target IDs.
  • A params JSON blob with the action's specific inputs β€” e.g. the fund ID for assign-to-ministry, the message body for send-message.
  • A total count, a running success count, a failed count, and a failed_items list with one error string per failed row.
  • Timestamps for created, started, completed, and (if applicable) cancelled.

This is what shows up at Bulk actions in the sidebar and what feeds the notification you receive when it finishes. The original selection is captured as a snapshot β€” even if you later change the filters, the bulk action targets the rows that matched at launch time.

Next steps ​