Disparadores
Un disparador es lo que inicia una ejecución de flujo de trabajo. Cada flujo de trabajo necesita al menos uno. GCM viene con unas dos docenas de disparadores integrados que cubren miembros, asistencia, donaciones, formularios, horarios y webhooks externos.
Grupos de disparadores
| Grupo | Cuándo se activa |
|---|---|
| Instantáneo | Justo cuando un evento ocurre en la base de datos (miembro creado, donación registrada, etc.) |
| Programado | En una expresión cron o fecha futura única |
| Manual | Cuando un administrador inicia manualmente el flujo de trabajo |
Disparadores instantáneos (miembro)
| Disparador | Se activa cuando |
|---|---|
member.created | Se guarda un nuevo registro de miembro |
member.updated | Cualquier campo en un miembro cambia |
member.deleted | Un miembro es borrado lógicamente |
member.birthday | El date_of_birth de un miembro coincide con la fecha de hoy |
member.marked_lost | lost_at se establece en un miembro |
member.recovered | lost_at se limpia en un miembro previamente perdido |
member.type_changed | El tipo de miembro cambia (ej. Visitante → Miembro) |
member.unit_assigned | Un miembro es añadido a una unidad organizativa |
member.unit_removed | Un miembro es removido de una unidad organizativa |
member.group_assigned | Un miembro es añadido a un grupo pequeño |
member.group_removed | Un miembro es removido de un grupo pequeño |
member.ministry_assigned | Un miembro es añadido a un ministerio |
member.ministry_removed | Un miembro es removido de un ministerio |
member.school_enrolled | Un miembro inicia un programa de escuela |
member.school_graduated | Un miembro completa un programa de escuela |
member.school_removed | Un miembro es removido de un programa de escuela |
member.note_added | Se añade una nota al perfil de un miembro |
member.tagged | Se añade una etiqueta a un miembro |
Disparadores instantáneos (asistencia y donaciones)
| Disparador | Se activa cuando |
|---|---|
attendance.marked | Un miembro hace check-in en una reunión |
attendance.removed | Una fila de asistencia es eliminada |
giving.recorded | Una donación es creada (manual o en línea) |
donation.refunded | Una donación es reembolsada |
Disparadores instantáneos (otros)
| Disparador | Se activa cuando |
|---|---|
event.created | Se crea un evento de calendario |
form.submitted | Se envía un formulario público (ej. formulario de visitante) |
webhook.received | Un sistema externo hace POST a la URL de webhook entrante de tu iglesia |
Disparadores programados
| Disparador | Cuándo |
|---|---|
schedule | Cron recurrente — ej. cada lunes 9 AM |
schedule.once | Un único momento futuro |
scheduled_query | Consulta periódica de la base de datos (ej. comprobación nocturna sin asistencia por 6 semanas) |
El disparador schedule usa sintaxis cron estándar. Lo traducimos a la zona horaria de tu iglesia (configurada en Configuración → Organización), así que 0 9 * * 1 significa "9 AM lunes en la hora local de tu iglesia."
Disparadores manuales
| Disparador | Cuándo |
|---|---|
manual | Un administrador hace clic en el botón ejecutar-ahora |
manual_enrollment | Un administrador inscribe uno o más miembros directamente |
Útil para envíos ad-hoc — ej. un mensaje único "tenemos un cambio de servicio mañana".
Configuración de disparadores
La mayoría de los disparadores tienen configuración extra:
- Filtros — solo se activan cuando se cumplen condiciones extra. Ej.
member.createddonde tipo de miembro es Visitante. - Alcance de unidad organizativa — solo se activa para miembros en unidades específicas.
- Alcance de tipo de membresía — solo se activa para visitantes, miembros, líderes, etc.
Estos filtros se evalúan antes de que se encole una ejecución — los eventos que no coinciden omiten el flujo de trabajo sin crear una fila de ejecución.
Sujeto y tokens
Cada disparador se activa con un sujeto — usualmente el miembro al que concierne el evento. Ese sujeto está disponible a través del flujo de trabajo como tokens de fusión:
{{trigger.member.first_names}}— para un disparador de miembro.{{trigger.donation.amount}}— paragiving.recorded.{{trigger.attendance.meeting.name}}— paraattendance.marked.
El selector de tokens muestra qué está disponible según el disparador que elegiste.
Flujos de trabajo multi-disparador
Un flujo de trabajo puede tener múltiples disparadores que todos canalizan en la misma secuencia de acciones. Patrón común:
- Bienvenida a recién llegados con tanto
member.createdcomomember.recoveredcomo disparadores, ambos llevando a un envío de "bienvenida".
Los dos disparadores se conectan a un nodo de unión de disparadores que se ramifica hacia las acciones compartidas.
Salvaguardas de frecuencia
Algunos disparadores se activan mucho. member.updated se activará cada vez que alguien toque cualquier campo. Para evitar flujos de trabajo desbocados:
- Usa filtros de disparador para acotar lo que es elegible (solo cuando el estado cambia).
- Usa limitación de tasa a nivel del flujo de trabajo — como máximo N ejecuciones por miembro por día.
- Usa claves de idempotencia en acciones send-message para que los reintentos no dupliquen.
WARNING
El error clásico: un flujo de trabajo que actualiza un campo personalizado en member.updated, causando un bucle infinito. El constructor te advierte si creas este patrón; por favor presta atención a la advertencia.
Preguntas comunes
¿Puedo disparar en un cambio de campo personalizado? Sí — usa member.updated con un filtro en la clave de campo específica.
¿Por qué mi flujo de trabajo member.created no se ejecuta para miembros importados en masa? La importación masiva omite los disparadores de flujo de trabajo por defecto para evitar mensajear al mundo durante la migración. Hay una casilla de verificación en la pantalla de revisión de importación para optar.
¿Puede un solo evento disparar múltiples flujos de trabajo? Sí. Cada flujo de trabajo con un disparador coincidente se activa independientemente. El orden no está garantizado.
Próximos pasos
- Acciones — qué hacer después del disparador.
- Multi-paso y retrasos — secuenciación.
- Monitoreo de ejecuciones — ver qué se activó y por qué.
