Skip to content

Bulk edit ​

Bulk edit is the workhorse action β€” it covers everything from "set everyone in this group to member type Adult" to "update the Baptism date custom field for an entire intake class." Each edit you stack onto the form applies to every selected member.

Bulk edit dialog

Open the dialog ​

From the member list, select the rows you want to change, then click Edit fields in the action bar. The dialog opens with the selection count in the header β€” confirm that count matches what you intended before adding edits.

Three kinds of fields ​

The picker groups fields into three categories. You can mix and match β€” a single bulk edit can update a direct field, a junction, and a custom field together.

TypeExamplesWhat happens
DirectMember type, gender, marital status, notesA single UPDATE on the members table for the whole chunk
JunctionOrg unit, ministry, schoolAdds or replaces the link row in the junction table
Custom fieldAnything you've defined in Custom fieldsUpserts into member_field_values

The dialog filters its picker by what your org actually uses. If you have no custom fields, the Custom field group is hidden; if no ministries are configured, the Ministry row is hidden.

Stack multiple edits ​

Click Add another edit to layer changes. A common pattern:

  • Direct: set Member type to Adult
  • Junction: assign to Org unit Branch β€” North Campus
  • Custom field: set Discipleship level to Level 2

All three apply per row, atomically per member. If any single edit fails for a given member, that member ends up in the failed list with the error β€” but the other members in the same chunk still succeed.

TIP

Set a field to an empty string or None to clear it. The dialog distinguishes "leave alone" (not in the edit list) from "set to empty" (explicit value).

Junction edit semantics ​

Junction fields behave slightly differently from direct fields. The big one to know:

  • Org unit (level N) replaces the member's existing assignment at that level. If Mary was already in North Campus at level 1, assigning her to South Campus moves her β€” it doesn't add her to both.
  • Ministry / group / school are upserts. If Mary was already in Youth ministry, the bulk edit is a no-op for her row (the upsert hits the unique constraint and is treated as success).

That means bulk edit is safe to re-run β€” it's idempotent for upsert junctions and replace-only for org unit assignments.

WARNING

Org unit re-assignment is a replace at that level only. If your hierarchy has three levels and you bulk-assign at level 1, levels 2 and 3 are untouched. Use a separate edit per level if you need to move a whole hierarchy path.

Custom field edit semantics ​

Custom fields are stored in member_field_values keyed by (member_id, field_definition_id). Bulk edit upserts that row, so re-running a custom-field bulk edit always wins β€” the latest value sticks.

The dialog renders the right input for the field type β€” date picker for dates, select for choice fields, text for free text, multi-select for multi-choice. Validation runs per row server-side, so if a member's existing value can't be parsed into the new type, that row ends up in the failed list.

What the audit log shows ​

Every member updated by a bulk edit gets updated_by stamped with the admin who ran the action, not "System." Your activity log will show:

Mary Johnson β€” member type changed from Visitor to Adult β€” by Pastor James β€” via bulk action

Click the via bulk action link to jump to the bulk action's detail page, where you can see every row it touched and any failures.

Chunking and retries ​

Bulk edits process in chunks of 50 members. Between chunks the action checks for cancellation and updates the progress bar. If a chunk's whole-table update fails (e.g. a database constraint violation), the action falls through to per-row failures, and each row in that chunk lands in failed_items with the error string.

When you retry failed items, only the failed IDs become a new bulk action β€” the same params (the same edit list) re-runs against just those rows.

Common questions ​

Can I bulk-edit a field that's read-only on the profile? Most read-only fields (email, phone with verification status, role) are still bulk-editable, but they go through the same write path as the profile β€” so verification flags reset.

What about computed fields like attendance streak? Computed fields aren't in the picker. They derive from other tables and recompute on their own schedule.

Will members be notified? No β€” bulk edit is silent. If you want members to know about a change, run a Send message right after.

Next steps ​