Saltar al contenido
Docs

Crea flujos de trabajo a partir de disparadores y pasos, lánzalos y consulta sus ejecuciones.

URL basehttps://api.emailit.com/v2AutenticaciónErroresLímites de velocidad

Crear una automatización

Crea una automatización con el estado draft a partir de un grafo de pasos y conexiones. Requiere una clave de API con el permiso full. Las automatizaciones están en beta.

La automatización no hace nada hasta que la inicias. Cada ejecución cuesta 3 créditos al empezar, y cada email que envía send_email o forward_email cuesta 1 crédito más. En un espacio de trabajo sin verificar, esas acciones solo pueden enviar a las direcciones de email de las cuentas de los miembros del espacio de trabajo.

POST/automations

Parámetros del cuerpo

contextstringobligatorio
Sobre qué trata cada ejecución: contact, email o event. El contexto determina qué disparadores y acciones puedes usar, y no se puede cambiar después. Consulta Contextos.
namestringobligatorio
El nombre de la automatización, de hasta 191 caracteres.
descriptionstring | null
Una descripción opcional.
settingsobject
Las reglas de ejecución. Consulta Configuración.
stepsobject[]obligatorio
Los pasos de disparador y de acción, con al menos un disparador. Consulta Pasos.
connectionsobject[]obligatorio
Las aristas entre los pasos. Pasa [] para un grafo que solo tenga un disparador. Consulta Conexiones.

Configuración

exit_conditionsobject[]

Cancela la ejecución de un contacto en cuanto se cumple una de estas condiciones (contexto contact, hasta 20). Cada elemento es un selector de evento, con el nombre del disparador en event más sus campos de configuración, como { "event": "contact.tag_added", "tag": "customer" } o { "event": "contact.on_event", "event_name": "purchase" }, o una condición sobre el contacto, { "condition": { "match": "all", "rules": [...] } }, con las reglas de la acción condition. Los selectores aceptan todos los disparadores de contacto excepto los de fecha y contact.visits_url, y un filter opcional, como las configuraciones de los disparadores. Los eventos de segmento (con segment_id obligatorio) y los de comercio electrónico están en alfa, como sus disparadores. Los selectores contact.on_event, aquí y en los pasos goal y wait_until, requieren un plan Pro, Business o Custom. Consulta Condiciones de salida y objetivos.

exit_on_audience_removalbooleanpor defecto: false
true cancela una ejecución iniciada por contact.added_to_audience cuando el contacto se quita de esa lista, se da de baja de ella o se da de baja de todos los emails de marketing.
on_step_failurestringpor defecto: stop
stop marca la ejecución como failed cuando falla un paso. skip registra el paso fallido y continúa por sus aristas default (o por no después de un condition fallido).
allow_reentrybooleanpor defecto: true
false ignora un disparo cuando el mismo contacto (o email) ya tiene una ejecución en curso en esta automatización.
max_concurrent_runsintegerpor defecto: 0
El número máximo de ejecuciones con el estado running a la vez. 0 significa sin límite.
cooldown_secondsintegerpor defecto: 0
Ignora un disparo cuando el mismo contacto (o email) inició una ejecución en esta automatización hace menos de este número de segundos.

Pasos

keystringobligatorio
Tu identificador del paso, único dentro de la automatización, por ejemplo welcome_email. Las conexiones, las estadísticas de pasos y las actualizaciones hacen referencia a los pasos por su clave.
typestringobligatorio
trigger o action.
triggerstring
El nombre del disparador, obligatorio cuando type es trigger. Consulta Disparadores.
actionstring
El nombre de la acción, obligatorio cuando type es action. Consulta Acciones.
configobject
La configuración del disparador o de la acción.

Conexiones

fromstringobligatorio
La clave del paso en el que empieza la arista.
tostringobligatorio
La clave del paso siguiente.
branchstringpor defecto: default
Qué resultado del paso from sigue esta arista. Los pasos condition usan yes y no; los pasos wait_until usan matched y timeout (eventos y condiciones) o default y passed (fechas); los pasos experiment usan claves de variante. Todos los demás pasos usan default.

Contextos

Contexto Una ejecución trata sobre Disparadores Reglas
contact Un contacto. send_email se envía a ese contacto. contact.*, system.* Uno o varios disparadores. Todos deben conectarse a la misma primera acción.
email Un email (enviado o recibido). email.*, system.* Uno o varios disparadores. Todos deben conectarse a la misma primera acción.
event Solo el payload del disparador. event.*, system.* Exactamente un disparador.

Todas las acciones deben ser alcanzables desde un disparador. Una ejecución empieza en la acción conectada al disparador que se ha disparado y sigue las conexiones:

  • condition solo sigue la arista cuyo branch es yes o no, según el resultado.
  • wait_until solo sigue matched o timeout (eventos y condiciones), o default o passed (fechas).
  • experiment sigue las aristas de la variante elegida. Cuando termina ese camino, la ejecución continúa por las aristas default del paso de experimento.
  • wait retrasa el paso siguiente.
  • Todas las demás acciones siguen sus aristas default. Un paso con varias aristas de salida las recorre todas.
  • A un paso goal también se puede llegar fuera de orden: cuando el contacto cumple el objetivo, la ejecución salta a él y continúa a partir de él.

Una ejecución queda completed cuando no quedan pasos o se ejecuta un paso end_run, failed cuando falla un paso (con on_step_failure: "stop") y canceled cuando se cumple una condición de salida, la ejecución se cancela o detienes la automatización.

Disparadores

Disparador Contexto Se dispara cuando
contact.added_to_audience contact Un contacto se suscribe a una lista de contactos, también cuando vuelve a suscribirse.
contact.removed_from_audience contact Se elimina un suscriptor de una lista de contactos.
contact.added_to_segment contact Un contacto entra en un segmento con seguimiento. No se dispara con los cambios causados por editar el segmento. Alfa: solo el equipo de Emailit puede añadir disparadores de segmento; las demás peticiones devuelven 403 con error: "segments_alpha".
contact.removed_from_segment contact Un contacto sale de un segmento con seguimiento. No se dispara con los cambios causados por editar el segmento. Alfa, como contact.added_to_segment.
contact.created contact Se crea un contacto.
contact.updated contact Se actualiza un contacto, también sus etiquetas y su puntuación.
contact.tag_added, contact.tag_removed contact Se añade una etiqueta al contacto o se le quita.
contact.score_changed contact Cambia la puntuación de lead del contacto.
contact.unsubscribed contact El contacto se da de baja de una lista o de todos los emails de marketing.
contact.loaded_email contact Un destinatario que es contacto del espacio de trabajo abre un email.
contact.clicked_in_email contact Un destinatario que es contacto del espacio de trabajo hace clic en un enlace con seguimiento.
contact.on_date contact Llega la fecha de un campo personalizado de fecha, opcionalmente con un desfase en días o semanas, a una hora del día en una zona horaria. Una vez, o cada año con repeat: "yearly".
contact.date_anniversary contact Cada año, en el mes y el día de un campo personalizado de fecha, con las mismas opciones.
contact.on_event contact Un evento personalizado (c:) o un evento del espacio de trabajo (w:) para el contacto. Planes Business y Custom: los demás planes reciben 403 con error: "plan_required" y required_plan: "business".
form.submitted contact Se envía un formulario con una dirección de email.
contact.on_purchase contact Un contacto realiza un nuevo pedido. Alfa: solo el equipo de Emailit puede añadir disparadores de comercio electrónico; las demás peticiones devuelven 403 con error: "commerce_alpha".
contact.abandoned_cart contact Se abandona el carrito de un contacto. Alfa, como contact.on_purchase.
contact.visits_url contact Se acepta, pero Emailit todavía no lo dispara.
email.received email Llega un email entrante.
email.delivered, email.bounced, email.complained, email.loaded, email.clicked, email.failed, email.suppressed, email.canceled email Se produce el evento de email del mismo nombre.
event.<name> event Cualquier nombre que empiece por event.. Emailit todavía no emite eventos event.*; inicia las automatizaciones de eventos con system.manual.
system.manual todos Llamas a Lanzar una ejecución.
system.schedule todos Se acepta, pero Emailit todavía no dispara los disparadores programados.

Campos de config del disparador:

audience_idstring
Para contact.added_to_audience y contact.removed_from_audience: solo se dispara para esta lista de contactos (aud_…).
segment_idstring
Para contact.added_to_segment y contact.removed_from_segment: el segmento con seguimiento (seg_…). Opcional al crear la automatización y obligatorio al actualizar sus pasos. Un segmento que no existe o que no tiene seguimiento devuelve 400.
include_current_membersbooleanpor defecto: false
Para contact.added_to_segment: en el primer inicio de la automatización, inicia también una ejecución para cada contacto que ya está en el segmento. Se siguen aplicando los ajustes de reentrada.
date_fieldstring
Para contact.date_anniversary y contact.on_date: la clave del campo personalizado que contiene la fecha, por ejemplo birthday.
offset, time, timezone, repeatobject, string, string, string
Para los disparadores de fecha: offset es { "amount": 3, "unit": "days", "direction": "before" } (unit days o weeks), time es HH:MM (por defecto, 00:00), timezone es un nombre IANA (por defecto, UTC) y repeat es once o yearly en contact.on_date.
tagstring
Para contact.tag_added y contact.tag_removed: solo esta etiqueta.
threshold, directionnumber, string
Para contact.score_changed: solo cuando la puntuación cruza threshold, hacia arriba (up, por defecto) o hacia abajo (down).
fieldstring
Para contact.updated: solo cuando ha cambiado este campo, por ejemplo custom_fields.purchased, tags o score.
event_namestring
Para contact.on_event: el nombre del evento, como purchase (coincide con c:purchase y w:purchase) o w:webinar.attended. Omítelo para cualquier evento de espacio de trabajo o personalizado. Filtra por las propiedades del evento con filter, por ejemplo properties.total.
form_idstring
Para form.submitted: solo este formulario.
filterobject

Solo se dispara cuando el evento cumple el filtro: { "match": "all", "rules": [{ "field": "subject", "operator": "contains", "value": "Invoice" }] }. match es all (por defecto) o any. field es una ruta con puntos dentro del object del evento, por ejemplo to o email.subject; un prefijo payload. inicial se ignora.

Operadores: equals, not_equals, contains, not_contains, starts_with, ends_with, greater_than, less_than, in, not_in, is_set, is_not_set. Todos los operadores excepto is_set e is_not_set necesitan un value; in y not_in aceptan un array.

Acciones

Acción Contexto Configuración
send_email todos type (obligatorio, template), template_id (obligatorio: un ID tem_ o el alias de una plantilla publicada), from, subject, reply_to, to, email_type, tracking
forward_email email, event to (obligatorio), from, subject, email_id
wait todos seconds (obligatorio, de 0 a 2.592.000, es decir, 30 días)
wait_until todos (modos event y condition: contact) mode (date, event o condition) y los campos de ese modo
condition todos filter (obligatorio, consulta Condiciones)
goal contact event o condition, if_not_met
experiment todos variants (obligatorio), control
call_webhook todos url (obligatorio), method, headers, body, secret, fail_on_error
run_automation todos automation_id (obligatorio), exit_current
exit_automation contact automation_ids o all: true
end_run todos Ninguna
end todos Ninguna
add_tag, remove_tag contact tags (obligatorio)
update_score contact operation (add, subtract o set), value (obligatorio)
add_to_audience contact audience_id (obligatorio), emit_events
remove_from_audience contact audience_id (obligatorio), mode (remove o unsubscribe), emit_events
update_subscription contact action (subscribe o unsubscribe, obligatorio), scope (audience, all_audiences o global), audience_id
edit_contact contact fields (obligatorio), emit_events
add_to_suppressions email, event type, reason, email
remove_from_suppressions email, event email
create_contact email, event email, first_name, audience_id, emit_events
  • send_email envía la plantilla. Por defecto, from es el remitente de la plantilla, y debe pertenecer a un dominio de envío verificado. subject sustituye el asunto de la plantilla. reply_to es una dirección o un array de direcciones, y puede ser un marcador. En el contexto contact, el email se envía al contacto de la ejecución; en los contextos email y event, indica to. email_type es marketing (por defecto en el contexto contact: se omite para los contactos dados de baja y lleva un enlace de baja y cabeceras List-Unsubscribe) o transactional. tracking: { "loads": true, "clicks": true } sustituye la configuración de seguimiento del dominio, y tracking: {} vuelve a ella.
  • wait_until espera a una fecha: { "mode": "date", "date": { "type": "global", "key": "webinar_date" }, "offset": { "amount": 1, "unit": "days", "direction": "before" }, "time": "09:00", "timezone": "Europe/Prague", "if_passed": "continue" }, donde date.type es contact (con field), global (con key), fixed (con value) o payload (con path), e if_passed es continue o branch. Para un evento: { "mode": "event", "event": { "event": "contact.clicked_in_email" }, "timeout": { "amount": 2, "unit": "days" } }. Para una condición: { "mode": "condition", "condition": { ... }, "timeout": ... }. Las esperas duran como máximo 365 días. Consulta Wait until.
  • goal acepta un selector de evento en event (como en exit_conditions) o una condition. Cuando el contacto lo cumple, la ejecución salta al objetivo. if_not_met (continue, wait o end) decide qué ocurre cuando una ejecución llega al objetivo antes de cumplirlo. Los pasos de objetivo requieren un plan Pro, Business o Custom.
  • forward_email reenvía el email de la ejecución (o el email de email_id) a to. Por defecto, from es el remitente original y subject es Fwd: <original subject>.
  • condition acepta { "match": "all" | "any", "rules": [...] }. Consulta Condiciones. El paso continúa por yes o por no.
  • experiment elige al azar, según su peso, una de las variants (y control), cada una con la forma { "key": "a", "weight": 50 }, y continúa por la rama que lleva el nombre de la clave elegida.
  • call_webhook envía una petición HTTP (método por defecto POST, Content-Type JSON) y registra la clase de estado (2xx, 4xx, 5xx), timeout o network_error. Sin body, envía la automatización, la ejecución, el contacto y el payload en JSON. Con secret, el cuerpo se firma en X-Emailit-Signature. Una respuesta que no sea 2xx no hace fallar el paso, salvo que fail_on_error sea true. Las direcciones privadas están bloqueadas.
  • run_automation inicia una ejecución de otra automatización en marcha para el mismo contacto, con el payload de esta ejecución. La ejecución actual continúa, o termina con exit_current: true.
  • exit_automation cancela las ejecuciones en curso del contacto en las automatizaciones de automation_ids, o en todas las demás automatizaciones con all: true.
  • end_run termina la ejecución, incluidas las demás ramas. end solo termina su propia rama.
  • add_tag y remove_tag cambian las etiquetas del contacto. update_score cambia la puntuación de lead.
  • update_subscription suscribe al contacto o lo da de baja de una lista, de todas las listas (solo unsubscribe) o de todos los emails de marketing (global).
  • remove_from_audience elimina la pertenencia del contacto a la lista (mode: "remove", por defecto) o lo mantiene en la lista como dado de baja (mode: "unsubscribe").
  • emit_events (por defecto true) en add_to_audience, remove_from_audience, create_contact y edit_contact envía los eventos subscriber.* y contact.* habituales, así que los webhooks los reciben y se inician otras automatizaciones. Los pasos guardados antes del 2026-10-20 tienen emit_events: false, y sus pasos remove_from_audience tienen mode: "unsubscribe".
  • edit_contact acepta fields: [{ "key": "first_name", "value": "Ada" }]. Las claves email, first_name, last_name y unsubscribed actualizan el contacto; cualquier otra clave (con o sin custom_fields.) asigna un valor a un campo personalizado, convertido a su tipo. operation es set (por defecto), clear, increment o decrement.
  • add_to_suppressions bloquea la dirección de la ejecución (type por defecto recipient, reason por defecto automation). remove_from_suppressions la desbloquea. En el contexto event, pasa email.
  • create_contact crea el contacto (o encuentra el que ya existe) y, opcionalmente, lo suscribe a audience_id. En el contexto email, email es por defecto el destinatario del email.

Los valores de cadena de la configuración de cualquier acción pueden usar marcadores que Emailit rellena cuando se ejecuta el paso: {{contact.email}}, {{cf.plan}}, {{global.webinar_link}}, {{email.mail_from}}, {{payload.object.subject}} o {{meta.source_event_id}}, por ejemplo "to": "{{email.mail_from}}". Las plantillas que envía send_email, y su subject, se renderizan con Temple y también tienen directamente los campos del contacto, como {{ first_name }}, {{tags}} y {{score}}.

Condiciones

Un filtro condition (y también las condiciones de wait_until y goal y las exit_conditions) es { "match": "all" | "any", "rules": [...] }. Una regla es { "field", "operator", "value" }, o un grupo anidado { "match", "rules" }, con hasta 3 niveles y 50 reglas.

field operator value
Campos del contacto (email, first_name, last_name, created_at, unsubscribed, score), subscribed, custom_fields.<key>, global.<key>, payload.<path>, meta.<path>, contact.<path>, email.<path> equals, not_equals, contains, not_contains, starts_with, ends_with, in, not_in, is_set, is_not_set, greater_than, less_than, greater_or_equal, less_or_equal, is_true, is_false, before, after, on, is_past, is_future, within_last, within_next, more_than_ago, more_than_from_now El valor. Los operadores de días aceptan un número de días o { "amount", "unit" }. No hace falta con is_set, is_not_set, is_true, is_false, is_past ni is_future.
tags contains, not_contains, in, not_in, is_set, is_not_set Una etiqueta, o un array para in y not_in.
audience is_subscribed, is_not_subscribed, is_member, is_not_member Un ID de lista (aud_…).
engagement opened, not_opened, clicked, not_clicked "run", "automation", { "scope": "step", "step": "<key>" }, { "scope": "any", "days": 30 } o { "scope": "campaign", "campaign_id": "cmp_…" }.
segment is_member, is_not_member Un ID de segmento (seg_…), con seguimiento o sin él. Alfa.
commerce.<field> Los operadores de segmento del campo, salvo cinco que usan los nombres de esta tabla: greater_or_equal, less_or_equal, within_last, within_next y more_than_ago El valor que acepta la regla de segmento. Alfa. Consulta más abajo.

Los campos sin prefijo se resuelven contra el contacto (first_name, custom_fields.plan) o el email (rcpt_to, subject) de la ejecución. subscribed es true cuando el contacto puede recibir emails de marketing.

Las reglas commerce.<field> usan los campos de comercio electrónico de los segmentos y se evalúan de la misma forma: orders_count, total_spent, average_order_value, first_order_at, last_order_at, expected_next_order_at, last_active_at, churn_risk, purchased, viewed_product, used_coupon y cart, por ejemplo { "field": "commerce.purchased", "operator": "has", "value": { "days": 30, "product_ids": ["sku-1"] } }. Las reglas de segmento y de comercio electrónico están en alfa: las demás peticiones que las añaden devuelven 403 con error segments_alpha o commerce_alpha. Las automatizaciones que ya las tienen siguen funcionando para todos.

Devuelve

Devuelve 201 Created con la automatización en data, incluidos el ID de cada paso (aus_…) y las conexiones. status es draft.

La creación comprueba la estructura del grafo: los nombres de los disparadores y de las acciones según el contexto, que las claves sean únicas, que las conexiones y las ramas sean válidas, que todos los pasos sean alcanzables, los settings y que cualquier dirección from de send_email use un dominio de envío verificado. No comprueba que la configuración de cada acción esté completa; eso lo hace Actualizar una automatización. Los errores devuelven 400 con errors indexado por la ruta del campo.

Las funciones que el plan del espacio de trabajo no incluye devuelven 403 con error: "plan_required", el plan más bajo que las incluye en required_plan y un message. Los pasos goal y los selectores contact.on_event en exit_conditions, goal y wait_until requieren pro, y el disparador contact.on_event requiere business.

POST/automations
Terminal
curl -X POST https://api.emailit.com/v2/automations \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Welcome series",
    "context": "contact",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "settings": { "allow_reentry": false },
    "steps": [
      {
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "key": "welcome_email",
        "type": "action",
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "key": "wait_1_day",
        "type": "action",
        "action": "wait",
        "config": { "seconds": 86400 }
      },
      {
        "key": "is_free_user",
        "type": "action",
        "action": "condition",
        "config": {
          "filter": {
            "match": "all",
            "rules": [{ "field": "custom_fields.plan", "operator": "is_not_set" }]
          }
        }
      },
      {
        "key": "upgrade_tips",
        "type": "action",
        "action": "send_email",
        "config": { "type": "template", "template_id": "getting-started-tips" }
      },
      { "key": "done", "type": "action", "action": "end" }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email" },
      { "from": "welcome_email", "to": "wait_1_day" },
      { "from": "wait_1_day", "to": "is_free_user" },
      { "from": "is_free_user", "to": "upgrade_tips", "branch": "yes" },
      { "from": "is_free_user", "to": "done", "branch": "no" }
    ]
  }'
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "draft",
    "settings": { "allow_reentry": false },
    "last_triggered_at": null,
    "published_at": null,
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-01T09:41:05.318274+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "key": "wait_1_day",
        "type": "action",
        "trigger": null,
        "action": "wait",
        "config": { "seconds": 86400 }
      },
      {
        "id": "aus_3HOgOzxaXBgVRpLFtpvJNo4vd5c",
        "key": "is_free_user",
        "type": "action",
        "trigger": null,
        "action": "condition",
        "config": {
          "filter": {
            "match": "all",
            "rules": [{ "field": "custom_fields.plan", "operator": "is_not_set" }]
          }
        }
      },
      {
        "id": "aus_3gCI5SWMPFVhOSawR6nz8sF55wp",
        "key": "upgrade_tips",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "getting-started-tips" }
      },
      {
        "id": "aus_3Pq7Wd2LxN8cVt5RmK0sHy4BfJe",
        "key": "done",
        "type": "action",
        "trigger": null,
        "action": "end",
        "config": {}
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" },
      { "from": "welcome_email", "to": "wait_1_day", "branch": "default" },
      { "from": "wait_1_day", "to": "is_free_user", "branch": "default" },
      { "from": "is_free_user", "to": "upgrade_tips", "branch": "yes" },
      { "from": "is_free_user", "to": "done", "branch": "no" }
    ]
  },
  "message": "Automation was successfully created.",
  "notify": true
}

Obtener una automatización

Obtiene una automatización con su grafo completo. Requiere una clave de API con el permiso full.

GET/automations/{id}

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Devuelve

Devuelve la automatización en data.

idstring
El ID de la automatización, con el prefijo aut_.
contextstring
contact, email o event.
namestring
El nombre de la automatización.
descriptionstring | null
Una descripción opcional.
statusstring
draft, running, paused, stopped o archived.
settingsobject
Las reglas de ejecución: on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Vacío si no has configurado ninguna.
last_triggered_atstring | null
Cuándo inició la automatización una ejecución por última vez.
published_atstring | null
Cuándo se inició la automatización por primera vez.
stepsobject[]
El id (aus_…), key, type, trigger, action y config de cada paso. Los detalles de las ejecuciones hacen referencia a los pasos por su id; las estadísticas, por su key.
connectionsobject[]
Las claves de paso from y to de cada arista y su branch.

Para saber qué significa cada disparador, acción y opción de configuración, consulta Crear una automatización. Devuelve 404 si la automatización no existe o se eliminó.

GET/automations/{id}
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "running",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-03T14:12:40.551870+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      },
      {
        "id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "key": "wait_1_day",
        "type": "action",
        "trigger": null,
        "action": "wait",
        "config": { "seconds": 86400 }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" },
      { "from": "welcome_email", "to": "wait_1_day", "branch": "default" }
    ]
  }
}

Actualizar una automatización

Actualiza el nombre, la descripción, la configuración o el grafo de una automatización. Requiere una clave de API con el permiso full. El contexto no se puede cambiar.

Para cambiar el grafo, envía steps y connections juntos; sustituyen el grafo actual. Los pasos cuya key ya existe conservan su ID y su historial de ejecuciones, los pasos que no incluyas se eliminan y las claves nuevas se añaden. A diferencia de la creación, la actualización también valida la configuración de cada acción (por ejemplo, send_email necesita type y template_id, y wait necesita seconds). Cuando un paso conserva su key y su acción, los ajustes que no incluyas en su config conservan sus valores guardados: email_type y tracking en send_email, emit_events en los pasos de contacto y mode en remove_from_audience. Envía un ajuste para cambiarlo; tracking: {} vuelve a la configuración de seguimiento del dominio.

Pausa la automatización antes de cambiar el grafo de una automatización en marcha y después vuelve a iniciarla para que los nuevos disparadores surtan efecto.

POST/automations/{id}

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Parámetros del cuerpo

namestring
El nombre, de hasta 191 caracteres.
descriptionstring
La descripción.
settingsobject
Sustituye toda la configuración: exit_conditions, exit_on_audience_removal, on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Consulta Configuración. Las condiciones de salida nuevas se aplican a las ejecuciones en curso, también en las automatizaciones en marcha.
stepsobject[]
La lista completa de pasos. Obligatorio si envías connections. Consulta Pasos.
connectionsobject[]
La lista completa de conexiones. Obligatorio si envías steps. Consulta Conexiones.

Devuelve

Devuelve la automatización actualizada en data, con message y notify. Devuelve 400 con errors indexado por la ruta del campo si la validación falla, 403 con error: "plan_required" cuando la actualización añade un paso, un disparador o una condición de salida que el plan no incluye (consulta Crear una automatización), y 404 si la automatización no existe. Lo que la automatización ya tiene sigue estando permitido después de bajar de plan.

POST/automations/{id}
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Welcome series (v2)",
    "settings": { "allow_reentry": false, "on_step_failure": "skip" }
  }'
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series (v2)",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "paused",
    "settings": { "allow_reentry": false, "on_step_failure": "skip" },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-04T08:15:22.730115+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully updated.",
  "notify": true
}

Listar automatizaciones

Devuelve las automatizaciones del espacio de trabajo, de la más reciente a la más antigua, sin sus pasos ni sus conexiones. Requiere una clave de API con el permiso full. Las automatizaciones eliminadas no se listan.

GET/automations

Parámetros de consulta

pageintegerpor defecto: 1
El número de página, empezando por 1.
per_pageintegerpor defecto: 25
Automatizaciones por página, de 1 a 100.
filter[context]string
Solo las automatizaciones con este contexto: contact, email o event.
filter[status]string
Solo las automatizaciones con este estado: draft, running, paused, stopped o archived.
filter[name]string
Búsqueda en parte del nombre, sin distinguir mayúsculas y minúsculas.
sortstringpor defecto: created_at
El campo de ordenación: name, created_at, updated_at o last_triggered_at.
orderstringpor defecto: desc
El sentido de la ordenación: asc o desc.

También puedes usar los filtros genéricos key.condition=value sobre name, status, context y created_at, con match. Consulta Filtrado.

Devuelve

dataobject[]
Las automatizaciones de esta página: id, context, name, description, status, settings, last_triggered_at, published_at, created_at, updated_at. En esta lista, settings siempre es un objeto vacío; para consultarlo, obtén la automatización.
total_recordsinteger
El número de automatizaciones que coinciden.
per_pageinteger
El tamaño de página usado.
current_pageinteger
El número de esta página.
total_pagesinteger
El número de páginas.
GET/automations
Terminal
curl -G https://api.emailit.com/v2/automations \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  --data-urlencode "filter[status]=running" \
  -d sort=last_triggered_at \
  -d per_page=50
JSON
{
  "data": [
    {
      "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
      "context": "contact",
      "name": "Welcome series",
      "description": "Welcome new subscribers, then nudge free users a day later.",
      "status": "running",
      "settings": {},
      "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
      "published_at": "2026-10-01T10:00:02.204118+00:00",
      "created_at": "2026-10-01T09:41:05.318274+00:00",
      "updated_at": "2026-10-03T14:12:40.551870+00:00"
    }
  ],
  "total_records": 1,
  "per_page": 50,
  "current_page": 1,
  "total_pages": 1
}

Eliminar una automatización

Elimina una automatización. Desaparece de las listas y deja de reaccionar a los disparadores. Requiere una clave de API con el permiso full.

Las ejecuciones que ya están en curso no se cancelan. Para cancelarlas, detén la automatización antes de eliminarla.

DELETE/automations/{id}

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Devuelve

Devuelve un message que confirma la eliminación. Devuelve 404 si la automatización no existe o ya se eliminó.

DELETE/automations/{id}
Terminal
curl -X DELETE https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "message": "Automation was deleted successfully.",
  "notify": true
}

Iniciar una automatización

Cambia el estado de la automatización a running. A partir de ese momento, los disparadores que coinciden inician ejecuciones; los eventos que se produjeron antes de iniciarla, no. Requiere una clave de API con el permiso full.

Puedes iniciar una automatización draft, paused o stopped. El primer inicio asigna published_at. Solo en el primer inicio, los disparadores contact.added_to_segment con include_current_members: true también inician una ejecución para cada contacto que ya está en su segmento con seguimiento.

Al iniciarla no se vuelve a validar el grafo. Si creaste la automatización con Crear una automatización, que solo comprueba la estructura, asegúrate de que la configuración de cada acción esté completa, o envía el grafo una vez con Actualizar una automatización, que lo valida por completo. Un paso con una configuración incompleta falla cuando una ejecución llega a él.

POST/automations/{id}/start

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Devuelve

Devuelve la automatización en data con status igual a running. Devuelve 404 si la automatización no existe.

POST/automations/{id}/start
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/start \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "running",
    "settings": { "allow_reentry": false },
    "last_triggered_at": null,
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-01T10:00:02.204118+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully started.",
  "notify": true
}

Pausar una automatización

Cambia el estado de la automatización a paused. Sus disparadores dejan de iniciar ejecuciones nuevas, pero las ejecuciones en curso continúan, incluidas las que están esperando en un paso wait. Requiere una clave de API con el permiso full.

Si además quieres cancelar las ejecuciones en curso, detén la automatización. Para que vuelva a reaccionar a los disparadores, iníciala de nuevo.

POST/automations/{id}/pause

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Devuelve

Devuelve la automatización en data con status igual a paused. Devuelve 404 si la automatización no existe.

POST/automations/{id}/pause
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/pause \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "paused",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-04T08:10:51.004732+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully paused.",
  "notify": true
}

Detener una automatización

Cambia el estado de la automatización a stopped y cancela todas las ejecuciones que siguen en running; esas ejecuciones pasan al estado canceled y sus pasos restantes no se ejecutan. Requiere una clave de API con el permiso full.

Detener una automatización solo es posible a través de la API. Si quieres que las ejecuciones en curso continúen, pausa la automatización. Puedes volver a iniciar una automatización detenida; las ejecuciones nuevas empiezan desde cero.

POST/automations/{id}/stop

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Devuelve

Devuelve la automatización en data con status igual a stopped. Devuelve 404 si la automatización no existe.

POST/automations/{id}/stop
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/stop \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "context": "contact",
    "name": "Welcome series",
    "description": "Welcome new subscribers, then nudge free users a day later.",
    "status": "stopped",
    "settings": { "allow_reentry": false },
    "last_triggered_at": "2026-10-03T14:12:40.551870+00:00",
    "published_at": "2026-10-01T10:00:02.204118+00:00",
    "created_at": "2026-10-01T09:41:05.318274+00:00",
    "updated_at": "2026-10-05T16:45:09.882301+00:00",
    "steps": [
      {
        "id": "aus_3ZqpuxjmL1szZ8og6uGL1mT6QEJ",
        "key": "joined",
        "type": "trigger",
        "trigger": "contact.added_to_audience",
        "action": null,
        "config": { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" }
      },
      {
        "id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "key": "welcome_email",
        "type": "action",
        "trigger": null,
        "action": "send_email",
        "config": { "type": "template", "template_id": "welcome", "from": "Acme <hello@acme.com>" }
      }
    ],
    "connections": [
      { "from": "joined", "to": "welcome_email", "branch": "default" }
    ]
  },
  "message": "Automation was successfully stopped.",
  "notify": true
}

Lanzar una ejecución

Dispara el disparador system.manual con el payload que elijas. La automatización debe estar en running y tener un paso de disparador system.manual; si no, no se inicia ninguna ejecución. Requiere una clave de API con el permiso full. Los disparadores manuales solo están disponibles a través de la API.

La ejecución se inicia de forma asíncrona y cuesta 3 créditos, como cualquier otra ejecución. Puedes encontrarla con Listar ejecuciones.

POST/automations/{id}/trigger

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Parámetros del cuerpo

payloadobject

Los datos de la ejecución. Emailit añade automation_id y guarda el resultado como el payload de la ejecución. Los pasos pueden leerlo con marcadores como {{payload.order_id}} y con condiciones como payload.plan.

Sobre qué trata la ejecución depende del contexto de la automatización:

  • contact: pasa contact_id (con_…). Las acciones de contacto y send_email usan ese contacto.
  • email: pasa email_id (em_…). Las acciones de email usan ese email.
  • event: cualquier dato. Indica to o email en la configuración de las acciones, por ejemplo "to": "{{payload.customer_email}}".

Devuelve

Devuelve 200 con un message cuando el disparo se pone en cola. Devuelve 422 si la automatización no está en running y 404 si no existe.

POST/automations/{id}/trigger
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/trigger \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "payload": {
      "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
      "plan": "pro",
      "order_id": "ord_1042"
    }
  }'
JSON
{
  "message": "Automation trigger dispatched."
}

Listar ejecuciones

Devuelve las ejecuciones de una automatización, de la más reciente a la más antigua. Cada ejecución es un recorrido por el grafo que inicia un disparador. Requiere una clave de API con el permiso full.

GET/automations/{id}/runs

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Parámetros de consulta

pageintegerpor defecto: 1
El número de página, empezando por 1.
per_pageintegerpor defecto: 25
Ejecuciones por página, de 1 a 100.
filter[status]string
Solo las ejecuciones con este estado: running, completed, failed o canceled.
filter[contact_id]string
Solo las ejecuciones de este contacto (con_…). Para ver las ejecuciones de un contacto en todas las automatizaciones, usa Listar las ejecuciones de un contacto.

También puedes filtrar con key.condition=value sobre status, event y created_at (por ejemplo, created_at.after=2026-10-01), y ordenar con order y direction por esas mismas claves. Consulta Filtrado.

Devuelve

dataobject[]
Las ejecuciones de esta página. Consulta los campos más abajo.
total_records, per_page, current_page, total_pagesinteger
Los datos de paginación.

Cada ejecución tiene:

idstring
El ID de la ejecución, con el prefijo aur_.
automation_idstring
La automatización (aut_…).
contact_idstring | null
El contacto de la ejecución (con_…) en el contexto contact.
email_idstring | null
El email de la ejecución (em_…) en el contexto email.
event_idstring | null
El ID del evento de origen, si el payload del disparador lo incluye.
eventstring
El disparador que inició la ejecución, por ejemplo contact.added_to_audience o system.manual.
payloadobject
Siempre es un objeto vacío en esta lista. Para consultar el payload del disparador, obtén la ejecución.
metaobject
Siempre es un objeto vacío en esta lista. Para consultar sus metadatos, como failure_reason, obtén la ejecución.
statusstring
running, completed, failed o canceled.
cancel_reasonstring | null
Por qué se detuvo una ejecución cancelada: exit_condition, left_audience, canceled_by_user (o el reason que enviaste), exited_by_api, exited_by_automation, automation_stopped o contact_deleted.
started_at, completed_at, created_at, updated_atstring | null
Marcas de tiempo en UTC.
GET/automations/{id}/runs
Terminal
curl -G https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/runs \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  --data-urlencode "filter[status]=failed"
JSON
{
  "data": [
    {
      "id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
      "automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
      "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
      "email_id": null,
      "event_id": null,
      "event": "contact.added_to_audience",
      "payload": {},
      "meta": {},
      "status": "failed",
      "started_at": "2026-10-03T14:12:40.551870+00:00",
      "completed_at": "2026-10-03T14:12:41.093355+00:00",
      "created_at": "2026-10-03T14:12:40.551870+00:00",
      "updated_at": "2026-10-03T14:12:41.093355+00:00"
    }
  ],
  "total_records": 1,
  "per_page": 25,
  "current_page": 1,
  "total_pages": 1
}

Obtener una ejecución

Obtiene una ejecución de una automatización, incluidos los pasos que ejecutó. Requiere una clave de API con el permiso full.

GET/automations/{id}/runs/{run_id}

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).
run_idstringobligatorio
El ID de la ejecución (aur_…).

Devuelve

Devuelve la ejecución en data con los campos que se describen en Listar ejecuciones, además de payload y meta completos, un array run_steps y un array waits.

payloadobject | null
El payload del disparador: los datos del evento ({ "object": { … } }) o el payload que pasaste a Lanzar una ejecución, con automation_id añadido.
metaobject | null
source_event_id vincula la ejecución con el evento que la inició. Las ejecuciones fallidas pueden tener failure_reason: insufficient_credits (no se pudieron cobrar los 3 créditos de la ejecución) o run_timeout (la ejecución seguía en running después de 72 horas sin ningún paso en espera). Las ejecuciones canceladas tienen cancel_reason, y las completadas que terminaron antes de tiempo tienen ended_by, como end_run_step, moved_to_automation o goal_not_met. Las ejecuciones iniciadas por otra automatización tienen depth y, además, parent_run_id (si las inició un paso Start automation) o caused_by (si las inició un cambio hecho por un paso).
run_stepsobject[]

Una entrada por cada paso al que llegó la ejecución:

  • step_id: el ID del paso (aus_…), y step_key y action, la clave y la acción del paso.
  • status: running, waiting (un paso wait o wait_until que aún no ha terminado), completed, failed, skipped (omitido porque la ejecución saltó a un objetivo o terminó antes de tiempo) o canceled.
  • outcome: el resultado, por ejemplo el último estado del email que envió un paso send_email (delivered, loaded, clicked…), skipped en un email de marketing a un contacto dado de baja, matched o not_matched en una condición, matched o timeout en un wait_until, o reached o not_reached en un objetivo.
  • data: el resultado del paso. Por ejemplo, send_email devuelve { "result": "email_queued", "email_oid": "em_…", "to": "…" }, condition devuelve { "result": true, "branch": "yes" } y los pasos fallidos devuelven { "error": "…" }.
  • started_at, completed_at, created_at.
waitsobject[]

Las esperas de la ejecución en pasos wait_until (de evento o de condición) y goal: id, step_key, kind (event o condition), event, status (waiting, matched, timed_out o canceled), timeout_at, created_at y resolved_at.

Devuelve 404 si la automatización o la ejecución no existen.

GET/automations/{id}/runs/{run_id}
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/runs/aur_3q6GdFk2eRSG093grI0v9e6REu8 \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "id": "aur_3q6GdFk2eRSG093grI0v9e6REu8",
    "automation_id": "aut_3xqC9YD79FZZA36uTekWTBO1ghe",
    "contact_id": "con_3munwNLaXKUARc6ff9wPtxKVq4A",
    "email_id": null,
    "event_id": null,
    "event": "contact.added_to_audience",
    "payload": {
      "object": {
        "id": "sub_3Fh2pQx9LmZr4Wt7Nc0bVd8KsYe",
        "object": "subscriber",
        "subscribed": true,
        "audience": { "id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "name": "Newsletter" },
        "contact": { "id": "con_3munwNLaXKUARc6ff9wPtxKVq4A", "email": "ada@example.com" }
      }
    },
    "meta": { "source_event_id": "evt_3Kd8sWq1NzXc5Vb7Mt2LpRy0HgA" },
    "status": "running",
    "started_at": "2026-10-03T14:12:40.551870+00:00",
    "completed_at": null,
    "created_at": "2026-10-03T14:12:40.551870+00:00",
    "updated_at": "2026-10-03T14:12:40.551870+00:00",
    "run_steps": [
      {
        "step_id": "aus_3V5TZIXXak1SSmGcOmzPOeFaguQ",
        "status": "completed",
        "data": {
          "result": "email_queued",
          "outcome": "accepted",
          "email_oid": "em_3Cp8cMgPskzB8tIlgUyNJkpDp9O",
          "to": "ada@example.com"
        },
        "started_at": "2026-10-03T14:12:40.702113+00:00",
        "completed_at": "2026-10-03T14:12:40.918540+00:00",
        "created_at": "2026-10-03T14:12:40.702113+00:00"
      },
      {
        "step_id": "aus_3vM0ORwEXCQcyS7rylfQBQEXjVk",
        "status": "waiting",
        "data": { "status": "waiting", "delayMs": 86400000, "seconds": 86400 },
        "started_at": "2026-10-03T14:12:41.004221+00:00",
        "completed_at": null,
        "created_at": "2026-10-03T14:12:41.004221+00:00"
      }
    ]
  }
}

Cancelar una ejecución

Cancela una ejecución que sigue en running. Los pasos que esperan en un Time delay o un Wait until se cancelan, no se ejecuta ningún paso más y el estado de la ejecución pasa a ser canceled. Requiere una clave de API con el permiso full.

Las ejecuciones canceladas no se pueden reanudar. Para cancelar todas las ejecuciones de un contacto en la automatización, usa Quitar un contacto. Para cancelar ejecuciones automáticamente, usa condiciones de salida.

POST/automations/{id}/runs/{run_id}/cancel

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).
run_idstringobligatorio
El ID de la ejecución (aur_…).

Parámetros del cuerpo

reasonstringpor defecto: canceled_by_user
Se guarda como el cancel_reason de la ejecución, de hasta 200 caracteres.

Devuelve

Devuelve la ejecución en data, con status canceled y cancel_reason. Devuelve 404 si la automatización o la ejecución no existen, y 422 si la ejecución no está en curso.

POST/automations/{id}/runs/{run_id}/cancel
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3Mv8Xq2nKp5Lt/runs/aur_7Kp2Vx9mQt4Lw/cancel \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reason": "Customer asked to stop"}'

Quitar un contacto de una automatización

Cancela todas las ejecuciones de esta automatización que siguen en running para un contacto, por ejemplo desde tu tienda cuando se paga un pedido. Las ejecuciones pasan al estado canceled. Requiere una clave de API con el permiso full.

Para sacar a los contactos automáticamente cuando ocurre algo, usa en su lugar condiciones de salida.

POST/automations/{id}/exit

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Parámetros del cuerpo

contact_idstring
El ID del contacto (con_…). Envía este campo o email.
emailstring
La dirección de email del contacto.
reasonstringpor defecto: exited_by_api
Se guarda como el cancel_reason de cada ejecución, de hasta 200 caracteres.

Devuelve

dataobject
automation_id, contact_id y canceled_runs, los ID de las ejecuciones canceladas. Vacío si el contacto no tenía ejecuciones en curso.
messagestring
Por ejemplo, Canceled 1 run.

Devuelve 400 sin contact_id ni email, y 404 si la automatización o el contacto no existen.

POST/automations/{id}/exit
Terminal
curl -X POST https://api.emailit.com/v2/automations/aut_3Mv8Xq2nKp5Lt/exit \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"email": "ada@example.com"}'

Listar las ejecuciones de un contacto

Devuelve las últimas 100 ejecuciones de un contacto en todas las automatizaciones, de más reciente a más antigua, cada una con el nombre de la automatización. Requiere una clave de API con el permiso full.

GET/automations/runs

Parámetros de consulta

contact_idstring
El ID del contacto (con_…). Envía este campo o email.
emailstring
La dirección de email del contacto.
statusstring
Solo las ejecuciones con este estado: running, completed, failed o canceled.

Devuelve

dataobject[]
Las ejecuciones, con la misma forma que en Listar ejecuciones, más automation_name.

Devuelve 400 sin contact_id ni email, y 404 si el contacto no existe.

GET/automations/runs
Terminal
curl "https://api.emailit.com/v2/automations/runs?email=ada@example.com&status=running" \
  -H "Authorization: Bearer $EMAILIT_API_KEY"

Obtener estadísticas

Devuelve los recuentos de todos los pasos de una automatización, indexados por la clave del paso. Requiere una clave de API con el permiso full.

GET/automations/{id}/stats

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).

Parámetros de consulta

sincestring
Solo cuenta las ejecuciones de pasos creadas en este momento o después. Fecha y hora RFC 3339, por ejemplo 2026-10-01T00:00:00Z.
untilstring
Solo cuenta las ejecuciones de pasos creadas en este momento o antes. Fecha y hora RFC 3339.
run_ids[]string
Solo cuenta estas ejecuciones (aur_…). Repite el parámetro para indicar varias ejecuciones.

Devuelve

Devuelve data, un objeto con una entrada por cada clave de paso. Los pasos a los que no ha llegado ninguna ejecución tienen un total de 0.

totalinteger
El número de veces que las ejecuciones llegaron al paso.
by_statusobject
Los recuentos por estado del paso: running, waiting, completed, failed.
by_outcomeobject
Los recuentos por resultado. send_email y forward_email: accepted y, después, el último estado del email (delivered, loaded, clicked, bounced, failed, complained, unsubscribed, canceled). condition: matched, not_matched. experiment: la clave de la variante elegida. call_webhook: 2xx, 4xx, 5xx, timeout, network_error. Pasos fallidos: error.
funnelobject
Solo en los pasos send_email. Recuentos acumulados: accepted incluye todos los emails que llegaron más lejos, delivered incluye los emails cargados y con clic, y loaded incluye los emails con clic. bounced, failed, complained y unsubscribed son recuentos simples.
GET/automations/{id}/stats
Terminal
curl -G https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/stats \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d since=2026-10-01T00:00:00Z
JSON
{
  "data": {
    "joined": { "total": 0, "by_status": {}, "by_outcome": {} },
    "welcome_email": {
      "total": 412,
      "by_status": { "completed": 409, "failed": 3 },
      "by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
      "funnel": {
        "accepted": 390,
        "delivered": 390,
        "loaded": 139,
        "clicked": 41,
        "bounced": 19,
        "failed": 0,
        "complained": 0,
        "unsubscribed": 0
      }
    },
    "wait_1_day": {
      "total": 409,
      "by_status": { "completed": 352, "waiting": 57 },
      "by_outcome": {}
    },
    "is_free_user": {
      "total": 352,
      "by_status": { "completed": 352 },
      "by_outcome": { "matched": 270, "not_matched": 82 }
    },
    "upgrade_tips": {
      "total": 270,
      "by_status": { "completed": 270 },
      "by_outcome": { "accepted": 12, "delivered": 180, "loaded": 61, "clicked": 17 },
      "funnel": {
        "accepted": 270,
        "delivered": 258,
        "loaded": 78,
        "clicked": 17,
        "bounced": 0,
        "failed": 0,
        "complained": 0,
        "unsubscribed": 0
      }
    },
    "done": {
      "total": 82,
      "by_status": { "completed": 82 },
      "by_outcome": {}
    }
  }
}

Obtener estadísticas de un paso

Devuelve los recuentos de un paso de una automatización. Requiere una clave de API con el permiso full. Los campos son los mismos que en Obtener estadísticas.

GET/automations/{id}/steps/{step_key}/stats

Parámetros de ruta

idstringobligatorio
El ID de la automatización (aut_…).
step_keystringobligatorio
La key del paso, por ejemplo welcome_email.

Parámetros de consulta

sincestring
Solo cuenta las ejecuciones de pasos creadas en este momento o después. Fecha y hora RFC 3339.
untilstring
Solo cuenta las ejecuciones de pasos creadas en este momento o antes. Fecha y hora RFC 3339.

Devuelve

Devuelve data con total, by_status, by_outcome y, en los pasos send_email, funnel. Devuelve 404 si la automatización o la clave del paso no existen.

GET/automations/{id}/steps/{step_key}/stats
Terminal
curl https://api.emailit.com/v2/automations/aut_3xqC9YD79FZZA36uTekWTBO1ghe/steps/welcome_email/stats \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "data": {
    "total": 412,
    "by_status": { "completed": 409, "failed": 3 },
    "by_outcome": { "delivered": 251, "loaded": 98, "clicked": 41, "bounced": 19, "error": 3 },
    "funnel": {
      "accepted": 390,
      "delivered": 390,
      "loaded": 139,
      "clicked": 41,
      "bounced": 19,
      "failed": 0,
      "complained": 0,
      "unsubscribed": 0
    }
  }
}

¿Te ha resultado útil esta página?

Gracias por tu opinión.

Gracias. Leemos todos los mensajes.