Acciones
Una acción es un paso dentro de un flujo de trabajo. Una vez que el disparador se activa, GCM recorre las acciones conectadas en orden, ejecutando cada una. El catálogo completo está agrupado en cinco categorías.
Acciones de miembro
Estas leen o escriben en la tabla de miembros.
| Acción | Qué hace |
|---|---|
find_member | Busca un miembro por teléfono, correo o criterios personalizados. El resultado queda disponible para acciones posteriores. |
find_members_by_segment | Encuentra todos los miembros que coinciden con un filtro (devuelve una lista para iterar). |
create_member | Inserta un nuevo registro de miembro. |
update_member | Cambia uno o más campos en un miembro. |
change_membership_type | Convierte visitante → miembro, etc. |
mark_member_lost | Establece lost_at. |
recover_member | Limpia lost_at. |
delete_member | Borrado lógico. |
assign_unit / remove_from_unit | Asignación de unidad organizativa. |
assign_group / remove_from_group | Asignación a grupo pequeño. |
assign_ministry / remove_from_ministry | Asignación a ministerio. |
enroll_school / graduate_school / remove_from_school | Ciclo de vida del programa de escuela. |
add_note | Añade una nota al perfil del miembro. |
Acciones de comunicación
Estas envían mensajes.
| Acción | Qué hace |
|---|---|
send_message | Envía vía WhatsApp / SMS / correo a un destinatario. |
send_notification | Envía una notificación in-app o web-push al personal. |
Ambas te permiten elegir una plantilla o componer en línea. Los tokens de fusión rellenan datos dinámicos.
TIP
Prefiere siempre plantillas sobre mensajes en línea para flujos de trabajo de producción. Editar una plantilla más tarde actualiza cada flujo de trabajo que la usa.
Acciones de control de flujo
Estas controlan cómo el flujo de trabajo recorre el grafo.
| Acción | Qué hace |
|---|---|
condition | Ramifica según un booleano — salidas verdadero / falso |
split | Ejecuta múltiples ramas en paralelo |
wait_delay | Pausa N minutos / horas / días antes de continuar |
wait_until | Pausa hasta una fecha/hora específica |
wait_event | Pausa hasta que otro evento se dispare |
go_to | Salta a otro nodo (bucle / omitir) |
for_each | Itera sobre una lista — la salida de la acción anterior |
Los operadores de condición son ricos: 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, y varios más.
Acciones de datos
Estas manipulan datos sin cambiar miembros directamente.
| Acción | Qué hace |
|---|---|
set_variable | Almacena un valor para usar en acciones posteriores |
aggregate | Cuenta / suma / promedia sobre una lista |
math_operation | Sumar, restar, multiplicar, dividir |
lookup | Lee un único campo de una tabla relacionada |
Acciones de integración
Estas alcanzan fuera de GCM.
| Acción | Qué hace |
|---|---|
send_webhook | POST a una URL externa con una carga útil personalizada |
create_task | Crea una tarea en tu rastreador de tareas del equipo |
La acción de webhook es la vía de escape. Si necesitas hablar con Zapier, Slack, tu hoja de Google de administración de iglesia, o cualquier otro sistema, este es el camino.
Configurando una acción
Haz clic en cualquier nodo de acción para abrir el panel de configuración a la derecha. Cada acción tiene como mínimo:
- Nombre para mostrar — qué aparece en el lienzo.
- Configuración específica de la acción — selector de destinatario para mensajes, selector de campo para actualizaciones, etc.
- Manejo de errores — qué hacer si la acción falla (reintentar, omitir, abortar la ejecución).
La mayoría de los campos de configuración admiten tokens de fusión, así que puedes construir acciones dinámicas como "enviar un mensaje a quien sea el pastor del miembro del disparador" sin escribir código.
Manejo de errores
Cada acción puede configurarse para fallos. Opciones:
- Reintentar — vuelve a intentar hasta N veces con backoff.
- Omitir y continuar — registra el error, avanza a la siguiente acción.
- Abortar la ejecución — detiene el flujo de trabajo aquí.
Los valores por defecto son razonables:
send_message— reintenta 3 veces y luego omite.update_member— aborta en fallo (consistencia de datos).send_webhook— reintenta 3 veces y luego omite.
Idempotencia
Donde sea posible, las acciones son idempotentes — ejecutarlas dos veces con la misma entrada tiene el mismo efecto que ejecutarlas una vez. Esto importa para reintentos y para dobles disparos accidentales. send_message en particular usa una clave de idempotencia (ID de ejecución del flujo + ID de acción + ID del miembro) para que el destinatario nunca reciba duplicados si la llamada subyacente se reintenta.
Acciones personalizadas
Los tipos de acciones personalizadas no son configurables por el usuario en v1. Si necesitas comportamiento que no está en el catálogo, usa send_webhook para alcanzar una función externa. Escríbenos si tienes un patrón recurrente que debería estar integrado.
Preguntas comunes
¿Una acción puede hablar con los datos de otra organización? No. Todas las acciones están delimitadas a la organización del flujo de trabajo vía current_org_id(). Incluso si crearas una carga útil de webhook para consultar otra organización, RLS la rechazaría.
¿Puedo eliminar un nodo en medio del grafo? Sí — selecciona y presiona eliminar. Las líneas se reconectan a cualquier nodo que estuviera aguas arriba.
¿Qué pasa si mi flujo de trabajo se atasca en un wait_delay? La ejecución queda en estado en espera hasta que transcurra el retraso. Puedes cancelarla manualmente desde la página de ejecuciones si es necesario.
Próximos pasos
- Disparadores — qué activa el flujo de trabajo.
- Multi-paso y retrasos — secuencia acciones a lo largo del tiempo.
- Monitoreo de ejecuciones — depurar fallos.
