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

on_step_failurestringpor defecto: stop
stop marca la ejecución como failed cuando falla un paso. skip registra el paso fallido y deja que el resto de la ejecución termine.
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 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.
  • 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.

Una ejecución queda completed cuando no quedan pasos, failed cuando falla un paso (con on_step_failure: "stop") y canceled cuando 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.updated contact Se actualiza un contacto.
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.date_anniversary contact Cada día a las 00:00 UTC, para los contactos cuyo campo personalizado de fecha (YYYY-MM-DD) coincide en mes y día con la fecha de hoy.
contact.on_date contact Cada día a las 00:00 UTC, para los contactos cuyo campo personalizado de fecha es igual a la fecha de hoy.
contact.visits_url, contact.on_purchase, contact.on_event contact Se aceptan, pero Emailit todavía no los 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_…).
date_fieldstring
Para contact.date_anniversary y contact.on_date: la clave del campo personalizado que contiene la fecha, por ejemplo birthday.
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
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)
condition todos filter (obligatorio, consulta más abajo)
experiment todos variants (obligatorio), control
call_webhook todos url (obligatorio), method, headers, body
run_automation todos automation_id (obligatorio)
end todos Ninguna
add_to_audience contact audience_id (obligatorio)
remove_from_audience contact audience_id (obligatorio)
edit_contact contact fields (obligatorio)
add_to_suppressions email, event type, reason, email
remove_from_suppressions email, event email
create_contact email, event email, first_name, audience_id
  • 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. En el contexto contact, el email se envía al contacto de la ejecución; en los contextos email y event, indica to.
  • 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": [...] } con los mismos operadores que los filtros de los disparadores. Los campos sin prefijo se resuelven contra el contacto (first_name, custom_fields.plan) o el email (rcpt_to, subject) de la ejecución; añade a un campo el prefijo contact., email., payload. o meta. para indicarlo de forma explícita. 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. Una respuesta que no sea 2xx no hace fallar el paso.
  • run_automation inicia una ejecución de otra automatización en marcha con el payload de esta ejecución. La ejecución actual continúa.
  • edit_contact acepta fields: [{ "key": "first_name", "value": "Ada" }]. Las claves email, first_name, last_name y unsubscribed actualizan el contacto; cualquier otra clave asigna un valor a un campo personalizado.
  • 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}}, {{email.mail_from}}, {{payload.object.subject}} o {{meta.source_event_id}}, por ejemplo "to": "{{email.mail_from}}". Las plantillas que envía send_email también renderizan directamente los campos del contacto, como {{ first_name }}.

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 sean válidas, que todos los pasos sean alcanzables 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.

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).

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: on_step_failure, allow_reentry, max_concurrent_runs, cooldown_seconds. Consulta Configuración.
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, y 404 si la automatización no existe.

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.

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.

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 (se detuvo la automatización).
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 y un array run_steps.

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).
run_stepsobject[]

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

  • step_id: el ID del paso (aus_…). Relaciónalo con steps[].id de Obtener una automatización.
  • status: running, waiting (un paso wait cuyo tiempo aún no ha transcurrido), completed o failed.
  • 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.

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"
      }
    ]
  }
}

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.