> ## Documentation Index
> Fetch the complete documentation index at: https://help.asistian.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Eventos de automatización

> La lista completa de eventos que pueden iniciar una automatización o enviar un webhook: cuándo se dispara cada uno, qué datos trae y cuáles dependen de un módulo.

Toda automatización empieza con un **evento**: lo que tiene que pasar para que
se ejecute. Esta página es la lista completa de lo que aparece en **Tipo de
Evento**, en el primer nodo del editor de automatizaciones.

Cualquiera de estos eventos sirve para **avisar a otro sistema**: agrega la
acción [Enviar Webhook](/mintlify/automatizaciones/webhook-saliente) y Asistian
manda los datos del evento a tu URL. Para lo contrario —que tu sistema dispare
una automatización— usa el evento
[Webhook entrante](/mintlify/automatizaciones/webhook-entrante).

<Note>
  Lo que ves en tu cuenta depende de lo que tengas activo: los eventos de
  **Oportunidades** solo aparecen con el módulo de oportunidades encendido, y
  los de **Legal** y **Fitness**, solo si tu cuenta tiene esa especialidad.
</Note>

## Cómo leer las tablas

* **Evento**: el nombre tal como aparece en el editor.
* **Clave**: el nombre técnico. Llega en `data.event_type` del
  [cuerpo por defecto](/mintlify/automatizaciones/webhook-saliente#el-cuerpo-por-defecto)
  de un webhook, y sirve para distinguir eventos si mandas varios a la misma URL.
* **Datos que trae**: los objetos principales del evento. Llegan dentro de
  `data` en el cuerpo por defecto, y puedes usarlos como variables en un
  [payload personalizado](/mintlify/automatizaciones/webhook-saliente#payload-personalizado),
  un mensaje o una tarea. El **contacto** llega como `contact` (y también como
  `client`, por ejemplo `{{client.name}}`), y la **conversación** como
  `conversation` (y también como `lead`, por ejemplo `{{lead.id}}`).

Los eventos marcados con 🕒 no los dispara una acción de alguien: Asistian los
revisa solo, cada cierto tiempo. No necesitan un nodo de **Retraso** para
programarse.

## Contactos

| Evento | Clave | Se dispara cuando… | Datos que trae |
| - | - | - | - |
| **Contacto creado** | `contact_created` | Se crea un contacto nuevo: al escribir por primera vez, al capturarlo a mano, desde un formulario o por API. No se dispara en importaciones ni en la sincronización inicial de WhatsApp. | Contacto; si ya tiene conversación (`has_conversation`) |
| **Contacto cambia de etapa** | `lead_stage_changed` | El contacto entra a una etapa de un buzón, tenga o no una conversación abierta. | Contacto, etapa nueva y anterior (`new_stage`, `old_stage`), buzón (`pipeline`), posición en el buzón (`position`) y la conversación, si hay |
| **Contacto calificado** | `contact_qualified` | El contacto califica por primera vez en un buzón. También cuenta si se gana o se pierde sin haber pasado por la etapa calificada. | Contacto, posición en el buzón, etapa y quién lo movió (`changed_by_type`) |
| **Contacto descalificado** | `contact_disqualified` | El contacto se descalifica en un buzón: no era un prospecto real. | Igual que calificado, más la razón de cierre |
| **Contacto ganado** | `contact_won` | El contacto se marca como ganado en un buzón. | Igual que calificado |
| **Contacto perdido** | `contact_lost` | El contacto se marca como perdido en un buzón. | Igual que calificado, más la razón de cierre |
| **Etiqueta asignada al contacto** | `tag_assigned` | A un contacto se le asigna una etiqueta. | Contacto, etiqueta (`tag`) y quién la asignó (`changed_by_type`) |
| **Cumpleaños del contacto** 🕒 | `scheduled_birthday` | Se revisa a diario y se dispara en la fecha de cumpleaños del contacto. | Contacto y su conversación |
| **Contacto sin actividad** 🕒 | `scheduled_inactivity` | El contacto no tiene mensajes desde hace el tiempo que configures. | Contacto, conversación y posición en el buzón |

## Formularios

| Evento | Clave | Se dispara cuando… | Datos que trae |
| - | - | - | - |
| **Formulario contestado** | `form_submitted` | Alguien termina de contestar un formulario, por su enlace personal, el enlace público o desde el chat. Una vez por respuesta. | Formulario (`form`), respuesta (`form_submission`) y contacto. En mensajes: `{{form.name}}`, `{{form_answers_text}}` y `{{answers.<pregunta>}}` |

## Conversaciones

| Evento | Clave | Se dispara cuando… | Datos que trae |
| - | - | - | - |
| **Conversación creada** | `lead_created` | Se abre una conversación en un canal. Un contacto puede tener varias; para reaccionar una sola vez por persona, usa **Contacto creado**. | Conversación, contacto, etapa y canal (`channel_type`, `channel_instance`) |
| **Mensaje recibido** | `message_received` | Llega un mensaje nuevo a una conversación. | Mensaje (`message`), conversación y contacto |
| **Conversación asignada** | `lead_updated` | Cambia el agente o el equipo asignado a la conversación. | Conversación, contacto, y agente y equipo nuevos y anteriores (`agent_id`, `old_agent_id`, `team_id`, `old_team_id`) |
| **Conversación marcada como Listo** | `lead_archived` | La conversación se marca como **Listo** en la bandeja. | Conversación y quién la marcó (`archived_by`) |
| **Seguimiento vencido** 🕒 | `lead_follow_up_breached` | Se revisa cada minuto: venció el plazo de seguimiento de una etapa, o un compromiso de la IA, sin que nadie atendiera al contacto. | Conversación, el seguimiento (`task`, `source`), etapa y responsable (`owner_user_id`) |

## Reservas

| Evento | Clave | Se dispara cuando… | Datos que trae |
| - | - | - | - |
| **Reserva creada** | `booking_created` | Se agenda una reserva o cita. | Reserva (`booking`) y contacto |
| **Reserva actualizada** | `booking_updated` | Cambian los datos de una reserva. | Reserva y los campos que cambiaron |
| **Reserva reprogramada** | `booking_rescheduled` | La reserva se mueve a otro horario desde Asistian. Un cambio que llega por la sincronización con Google Calendar no la dispara. | Reserva, horario anterior (`previous_start_time`, `previous_end_time`) y contacto |
| **Reserva cancelada** | `booking_cancelled` | La reserva se cancela. | Reserva |
| **Estado de la reserva cambiado** | `booking_status_changed` | La reserva cambia de estado: confirmada, completada, el cliente no asistió, se reactivó… | Reserva y estado nuevo y anterior (`status`, `old_status`) |

<Tip>
  Para reaccionar a una cita **confirmada**, **completada** o en la que el
  cliente **no asistió**, usa **Estado de la reserva cambiado** con una
  condición sobre el estado nuevo.
</Tip>

## Ventas

| Evento | Clave | Se dispara cuando… | Datos que trae |
| - | - | - | - |
| **Venta creada** | `sale_created` | Se registra una venta o un pedido. | Venta (`sale`), sucursal (`branch`), etapa y contacto |
| **Etapa de la orden cambiada** | `sale_stage_changed` | La venta pasa a otra etapa (por ejemplo, pagada o enviada). | Venta, etapa nueva y anterior, si se ganó o se perdió en este movimiento (`sale_won_now`, `sale_lost_now`) y contacto |
| **Cotización generada** | `sale_quote_generated` | Se genera la cotización de una venta. | Venta y contacto |
| **Puntos de recompensa ganados** | `rewards_points_earned` | El contacto gana puntos del programa de recompensas. | Contacto y puntos (`rewards.points_earned`, `rewards.balance`, `rewards.tier`) |

## Oportunidades

Solo con el módulo de oportunidades encendido. Todos traen la oportunidad
(`deal`), el nombre de su etapa (`stage_name`), el contacto y quién hizo el
cambio (`changed_by_type`), más lo que se indica en cada fila.

| Evento | Clave | Se dispara cuando… | Además trae |
| - | - | - | - |
| **Oportunidad creada** | `deal_created` | Se crea una oportunidad: a mano, desde una automatización, la IA o una conversación. | Etapa nueva |
| **Oportunidad cambió de etapa** | `deal_stage_changed` | Pasa a otra etapa abierta de su embudo. | Etapa nueva y anterior |
| **Oportunidad entró a una etapa (movida, ganada, perdida, reabierta o cambiada de embudo)** | `deal_stage_entered` | Entra a una etapa por cualquier camino. Es el evento de las automatizaciones «al entrar» de cada etapa. | Etapa nueva (`new_stage`) y la anterior |
| **Oportunidad ganada** | `deal_won` | Se marca como ganada. | Etapa nueva y anterior |
| **Oportunidad perdida** | `deal_lost` | Se marca como perdida. El motivo viaja en `deal.lost_reason`. | Etapa nueva y anterior |
| **Oportunidad reabierta** | `deal_reopened` | Una oportunidad cerrada vuelve a abrirse. | Resultado anterior (`previous_outcome`) |
| **Oportunidad archivada** | `deal_archived` | Se archiva. | — |
| **Oportunidad restaurada** | `deal_restored` | Se restaura una archivada. | — |
| **Oportunidad movida de embudo** | `deal_pipeline_changed` | Pasa a otro embudo. | Etapa nueva y anterior |
| **Cotización o pedido vinculado** | `deal_sale_linked` | Se vincula una cotización o un pedido a la oportunidad. | Venta (`sale`) |
| **Cotización o pedido desvinculado** | `deal_sale_unlinked` | Se desvincula una cotización o un pedido. | Venta (`sale`) |
| **Propuesta seleccionada** | `deal_proposal_selected` | Se elige una de las propuestas de la oportunidad. | Venta (`sale`) |
| **Cotización rechazada** | `deal_quote_rejected` | El cliente rechaza una cotización. | Venta (`sale`) |
| **Oportunidad editada (monto, calificación, cierre, empresa o título)** | `deal_updated` | Cambia alguno de esos datos. | Campos que cambiaron (`changed_fields`) y sus valores anteriores (`previous`) |
| **Oportunidad reasignada** | `deal_assigned` | Cambia el responsable. | Responsable anterior (`previous_agent_id`) |
| **Participante agregado a una oportunidad** | `deal_participant_added` | Se agrega un participante. | Participante (`participant`) |
| **Cierre estimado de una oportunidad** 🕒 | `scheduled_deal_close` | La fecha estimada de cierre se acerca o ya pasó, según lo que configures. | Días para el cierre (`days_to_expected_close`) y si ya venció (`expected_close_is_overdue`) |
| **Oportunidad sin movimiento en su etapa** 🕒 | `scheduled_deal_inactivity` | La oportunidad lleva en la misma etapa el tiempo que configures. | Días en la etapa (`days_in_stage`) y desde cuándo (`stage_entered_at`) |

## Tableros

| Evento | Clave | Se dispara cuando… | Datos que trae |
| - | - | - | - |
| **Nuevo ítem de tablero** | `ticket_created` | Se crea un ítem en cualquier [tablero](/mintlify/bandeja/tableros) (un ticket, un caso, un proyecto…). Agrega una condición de tablero para acotarlo a uno. | Ítem (`ticket`), tablero (`board`), etapa, tipo y contacto |
| **Ítem de tablero actualizado** | `ticket_updated` | Cambia un ítem de tablero. | Ítem, tablero, y etapa y agente nuevos y anteriores |
| **Ítem de tablero cambió de etapa** | `ticket_stage_changed` | Un ítem pasa a otra etapa de su tablero. | Ítem, tablero y etapa nueva y anterior |

## Tareas

| Evento | Clave | Se dispara cuando… | Datos que trae |
| - | - | - | - |
| **Tarea creada** | `task_created` | Se crea una tarea. | Tarea (`task`), prioridad, estado y fecha límite |
| **Tarea completada** | `task_completed` | Una tarea se marca como completada. | Igual que tarea creada |
| **Cambio de estado de tarea** | `task_status_changed` | Una tarea cambia de estado, incluidas cancelada y en progreso. | Igual que tarea creada |
| **Tarea vencida** 🕒 | `task_overdue` | Una tarea pasó su fecha límite y todavía no se había avisado. | Igual que tarea creada |

## Legal

Solo en cuentas con la especialidad Legal.

| Evento | Clave | Se dispara cuando… | Datos que trae |
| - | - | - | - |
| **Caso legal creado** | `legal_case_created` | Se crea un caso legal. La conversación del cliente queda disponible para mandarle mensajes. | Caso (`legal_case`), cliente legal (`legal_client`) y contacto |
| **Cambio de etapa de caso legal** | `legal_case_stage_changed` | Un caso cambia de etapa. | Caso, cliente legal, contacto y etapa nueva y anterior |
| **Cliente legal creado** | `legal_client_created` | Un contacto se convierte en cliente de la firma. | Cliente legal y contacto |
| **Cambio de estatus de cliente legal** | `legal_client_status_changed` | Cambia el estatus del cliente (Nuevo, Activo, Suspendido, Inactivo, Rechazado). | Cliente legal, contacto y estatus nuevo y anterior |
| **Proceso legal creado** | `legal_proceeding_created` | Se crea un proceso o expediente. | Proceso (`legal_proceeding`) y contacto |
| **Cambio de etapa de proceso legal** | `legal_proceeding_stage_changed` | Un proceso cambia de etapa. | Proceso, contacto y etapa nueva y anterior |
| **Actualización legal registrada** | `legal_update_created` | Se registra una actualización o un acuerdo, capturado a mano o detectado en Drive. | Actualización (`legal_update`) y contacto |
| **Actualización legal publicada** | `legal_update_published` | Una actualización se publica al cliente. Volver a publicarla la dispara de nuevo. | Actualización y contacto |
| **Cambio de estatus de proyecto legal** | `legal_project_status_changed` | Un proyecto cambia de estatus. | Proyecto (`legal_project`), proceso y estatus nuevo y anterior |
| **Proyecto legal vencido** 🕒 | `legal_project_overdue` | Un proyecto pasó su fecha límite sin presentarse. | Proyecto |

## Fitness

Solo en cuentas con la especialidad Fitness. Todos traen al miembro (el
contacto) y el pase, el pago, la lista de espera o el documento del evento.

| Evento | Clave | Se dispara cuando… |
| - | - | - |
| **Pase fitness emitido** | `fitness_pass_issued` | Se registra una membresía, un paquete o un pase por visita. |
| **Pase fitness activado** | `fitness_pass_activated` | El pago, los documentos y la aptitud permiten activar el acceso. |
| **Pase fitness próximo a vencer** 🕒 | `fitness_pass_expiring` | Un pase entra en su ventana de renovación (una sola vez). |
| **Pase fitness vencido** 🕒 | `fitness_pass_expired` | Un pase activo llega a su vencimiento. |
| **Miembro fitness inactivo** 🕒 | `fitness_member_inactive` | Un miembro activo supera los días configurados sin asistencias ni check-in. |
| **Pago fitness pendiente** | `fitness_payment_pending` | Se crea una venta fitness pendiente de pago. |
| **Pago fitness registrado** | `fitness_payment_paid` | El personal registra el pago de una venta fitness. |
| **Ingreso a lista de espera** | `fitness_waitlist_created` | Un miembro entra a una lista de espera. |
| **Cupo de lista de espera ofrecido** | `fitness_waitlist_offered` | Se aparta un cupo y se ofrece al siguiente miembro. |
| **Cupo de lista de espera aceptado** | `fitness_waitlist_accepted` | El miembro acepta el cupo y se crea su reserva. |
| **Oferta de lista de espera vencida** 🕒 | `fitness_waitlist_expired` | Vence una oferta de lista de espera. |
| **Documento fitness solicitado** | `fitness_document_requested` | Se le pide un documento al miembro. |
| **Documento fitness aceptado** | `fitness_document_accepted` | Se acepta un documento, por WhatsApp o en el registro del personal. |

## Webhooks

| Evento | Clave | Se dispara cuando… | Datos que trae |
| - | - | - | - |
| **Webhook entrante** | `incoming_webhook` | Tu sistema manda un `POST` a la URL de la automatización. | El JSON que mandaste. Ver [webhook entrante](/mintlify/automatizaciones/webhook-entrante) |

## Cuál elegir

<AccordionGroup>
  <Accordion title="¿Conversación creada o Contacto creado?">
    **Conversación creada** se dispara cada vez que se abre una conversación,
    y un mismo contacto puede tener varias (una por canal). Si quieres
    reaccionar **una sola vez por persona** —por ejemplo, darla de alta en tu
    CRM—, usa **Contacto creado**.
  </Accordion>

  <Accordion title="¿Contacto cambia de etapa o Contacto calificado/ganado/perdido?">
    **Contacto cambia de etapa** se dispara en **cada** movimiento entre
    etapas. **Calificado**, **descalificado**, **ganado** y **perdido** se
    disparan solo en ese momento del embudo, sin importar el nombre de la
    etapa. Para avisar a tu CRM de una venta cerrada, **Contacto ganado** es
    más seguro que una condición sobre el nombre de la etapa.
  </Accordion>

  <Accordion title="¿Oportunidad cambió de etapa u Oportunidad entró a una etapa?">
    **Cambió de etapa** solo cuenta los movimientos entre etapas abiertas.
    **Entró a una etapa** cuenta también ganar, perder, reabrir y cambiar de
    embudo: úsalo cuando lo que importa es la etapa de destino.
  </Accordion>

  <Accordion title="Quiero mandar varios eventos a la misma URL">
    Crea una automatización por evento, todas con la misma URL en **Enviar
    Webhook**, y pon un **Nombre del Evento** distinto en cada una. Tu sistema
    los distingue por el encabezado `X-Webhook-Event` o por `data.event_type`.
  </Accordion>
</AccordionGroup>

<CardGroup cols={2}>
  <Card title="Enviar datos a otro sistema" icon="arrow-up-right" href="/mintlify/automatizaciones/webhook-saliente">
    La acción **Enviar Webhook**: cuerpo, firma y variables.
  </Card>

  <Card title="Cómo funcionan las automatizaciones" icon="bolt" href="/mintlify/automatizaciones/introduccion">
    Evento, condiciones, esperas y acciones.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.