Skip to content

Actions ​

An action is a step inside a workflow. Once the trigger fires, GCM walks through the connected actions in order, executing each one. The full catalog is grouped into five categories.

Member actions ​

These read or write the member table.

ActionWhat it does
find_memberLook up a member by phone, email, or custom criteria. Result available to later actions.
find_members_by_segmentFind all members matching a filter (returns a list to loop over).
create_memberInsert a new member record.
update_memberChange one or more fields on a member.
change_membership_typeConvert visitor β†’ member, etc.
mark_member_lostSet lost_at.
recover_memberClear lost_at.
delete_memberSoft-delete.
assign_unit / remove_from_unitOrg-unit assignment.
assign_group / remove_from_groupSmall-group assignment.
assign_ministry / remove_from_ministryMinistry assignment.
enroll_school / graduate_school / remove_from_schoolSchool program lifecycle.
add_noteAppend a note to the member profile.

Communication actions ​

These send messages.

ActionWhat it does
send_messageSend via WhatsApp / SMS / email to a recipient.
send_notificationSend an in-app or web-push notification to staff.

Both let you pick from a template or compose inline. Merge tokens fill in dynamic data.

TIP

Always prefer templates over inline messages for production workflows. Editing a template later updates every workflow that uses it.

Flow-control actions ​

These control how the workflow walks the graph.

ActionWhat it does
conditionBranch on a boolean β€” true / false outputs
splitRun multiple branches in parallel
wait_delayPause N minutes / hours / days before continuing
wait_untilPause until a specific date/time
wait_eventPause until another event fires
go_toJump to another node (loop / skip)
for_eachLoop over a list β€” the previous action's output

The condition operators are rich: is, is_not, contains, greater_than, less_than, is_empty, matches_regex, is_exactly_n_days_ago, is_between_days_ago, is_today, is_within_last_n_days, is_in_next_n_days, is_during_business_hours, and several more.

Data actions ​

These manipulate data without changing members directly.

ActionWhat it does
set_variableStore a value for use in later actions
aggregateCount / sum / average over a list
math_operationAdd, subtract, multiply, divide
lookupRead a single field from a related table

Integration actions ​

These reach outside GCM.

ActionWhat it does
send_webhookPOST to an external URL with a custom payload
create_taskCreate a task in your team task-tracker

The webhook action is the escape hatch. If you need to talk to Zapier, Slack, your church management Google Sheet, or any other system, this is the way.

Configuring an action ​

Click any action node to open the config panel on the right. Every action has at minimum:

  • Display name β€” what shows on the canvas.
  • Action-specific config β€” recipient picker for messages, field selector for updates, etc.
  • Error handling β€” what to do if the action fails (retry, skip, abort the run).

Most config fields support merge tokens, so you can build dynamic actions like "send a message to whoever the trigger's member's shepherd is" without writing code.

Error handling ​

Each action can be configured for failure. Options:

  • Retry β€” try again up to N times with backoff.
  • Skip and continue β€” log the error, move to the next action.
  • Abort the run β€” stop the workflow here.

The defaults are sensible:

  • send_message β€” retry 3 times then skip.
  • update_member β€” abort on failure (data consistency).
  • send_webhook β€” retry 3 times then skip.

Idempotency ​

Where possible, actions are idempotent β€” running them twice with the same input has the same effect as running once. This matters for retries and for accidental double-triggers. send_message in particular uses an idempotency key (workflow run ID + action ID + member ID) so the recipient never gets duplicates if the underlying call retries.

Custom actions ​

Custom action types are not user-configurable in v1. If you need behavior that's not in the catalog, use send_webhook to reach an external function. Email us if you have a recurring pattern that should be built in.

Common questions ​

Can an action talk to a different organization's data? No. All actions are scoped to the workflow's organization via current_org_id(). Even if you crafted a webhook payload to query another org, RLS would refuse.

Can I delete a node mid-graph? Yes β€” select and press delete. The lines reconnect to whatever node was upstream.

What if my workflow gets stuck on a wait_delay? The run sits in waiting state until the delay elapses. You can manually cancel from the runs page if needed.

Next steps ​