Saltar al contenido
Docs

Crea campañas, elige sus listas de contactos y segmentos, y envíalas o prográmalas.

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

Crear una campaña

Crea una campaña con estado draft. Requiere una clave de API con el permiso full. Emite un evento campaign.created.

Una campaña nueva no tiene destinatarios. Elige sus listas de contactos y segmentos con Actualizar una campaña y después envíala o prográmala. Los créditos se cobran cuando se envía la campaña: 2 créditos por email.

POST/campaigns

Parámetros del cuerpo

namestringobligatorio
El nombre interno de la campaña. Los destinatarios no lo ven. Los demás endpoints de campañas aceptan el nombre en lugar del ID, así que, si los usas así, procura que los nombres sean únicos.
subjectstring
El asunto. Admite etiquetas de combinación como {{first_name}}.
from_emailstring
La dirección del remitente. Debe pertenecer a un dominio de envío verificado del espacio de trabajo, por ejemplo news@acme.com.
from_namestring
El nombre visible del remitente, por ejemplo Acme. El mensaje se envía desde Acme <news@acme.com>.
reply_tostring
La dirección de respuesta. Por defecto, from_email cuando se envía la campaña.
htmlstring
El cuerpo HTML que envía Emailit, renderizado con Temple para cada destinatario. Admite las etiquetas de combinación {{first_name}}, {{last_name}}, {{email}}, {{unsubscribe_url}} y {{cf.<key>}} para los campos personalizados, con valores alternativos y bloques {{#if}}. Define el cuerpo al crear la campaña.
textstring
El cuerpo en texto plano. Admite las mismas etiquetas de combinación que html.
preview_textstring
El texto de vista previa que muestran las bandejas de entrada después del asunto. Admite etiquetas de combinación. Cuando se envía la campaña, Emailit lo añade como texto oculto al principio del cuerpo HTML, salvo que el HTML ya contenga el mismo texto en un elemento oculto (por ejemplo, de un <mj-preview> de MJML).
contentstring
El código fuente del cuerpo en el editor (por ejemplo, MJML), guardado tal cual. Si no pasas ni html ni text y content_type es html o text, Emailit envía content como cuerpo HTML o en texto plano.
content_typestringpor defecto: html
El formato de content: html, text o mjml. Para el equipo de Emailit, Emailit compila el contenido mjml en html (alfa). Para todos los demás, mjml es una etiqueta: envía el HTML compilado en html.
utm_trackingbooleanpor defecto: false
Pon true para añadir parámetros UTM a todos los enlaces http y https cuando se envíe la campaña, de modo que tu analítica web atribuya las visitas a la campaña. Los parámetros que ya tiene un enlace se conservan, y los enlaces de baja y de versión web no cambian. Consulta Opciones de envío.
utm_paramsobject | null

Los valores UTM que se usan cuando utm_tracking está activado. Cada clave define un parámetro utm_:

  • source (por defecto, emailit), medium (por defecto, email) y campaign (por defecto, {campaign_name}).
  • content, term e id, que no se añaden por defecto.

Los valores son texto de hasta 191 caracteres y pueden contener los tokens {campaign_name} (el nombre de la campaña en minúsculas, con guiones), {campaign_id}, {subject}, {variant} (el nombre de la versión de la prueba A/B) y {send_date} (YYYY-MM-DD). Las claves y los tokens desconocidos devuelven 422. Las claves que no defines conservan sus valores por defecto; null o {} los restablece todos.

smart_sending_hoursinteger | null
Omite los contactos a los que otra campaña del espacio de trabajo ha enviado un email en este número de horas, de 1 a 168. null (por defecto) desactiva el envío inteligente. Se comprueba cuando la campaña empieza a enviarse. Los emails de las automatizaciones y de la API de email no cuentan.
exclude_unengagedbooleanpor defecto: false
Pon true para omitir los contactos que han recibido 3 o más emails de campaña en los últimos 90 días y no han abierto ninguno ni han hecho clic en ninguno.
tagsstring[]
Etiquetas para organizar las campañas. Hasta 20 etiquetas de hasta 50 caracteres cada una. Las etiquetas vacías se descartan y los duplicados se eliminan sin distinguir entre mayúsculas y minúsculas. Si envías tags, se sustituye la lista.
send_strategystringpor defecto: immediate
Cómo se reparte el envío en el tiempo: immediate, throttled, local_time o smart_time. Se guarda con la campaña y se usa cuando la envías sin indicar una estrategia.
send_optionsobject | null
Las opciones de send_strategy, que se guardan tal como se envían y se comprueban por completo cuando se envía la campaña. Consulta Enviar o programar una campaña.
ab_testobject | null

Una prueba A/B de 2 a 5 versiones. Una parte aleatoria de los destinatarios se reparte a partes iguales entre las versiones. Pasadas duration_hours, el resto de los destinatarios recibe la versión con el mejor resultado. Mientras dura la prueba, el estado de la campaña es testing. Las pruebas A/B se envían con la estrategia immediate, en el momento o a una hora programada.

  • enabled (booleano, por defecto true): false desactiva la prueba.
  • winner_metric (cadena, por defecto opened): opened, clicked, orders (pedidos atribuidos por email enviado) o revenue (ingresos atribuidos por email enviado). orders y revenue forman parte de Comercio electrónico, que está en alfa: las demás peticiones devuelven 403 con error: "commerce_alpha".
  • test_size_percent (entero, por defecto 20): la proporción de destinatarios que entra en la prueba, de 10 a 100. Con 100, todos entran en la prueba y no se envía ninguna ganadora.
  • duration_hours (entero, por defecto 4): cuánto dura la prueba antes de enviar la ganadora, de 1 a 168.
  • variants (array de objetos, obligatorio): de 2 a 5 versiones. Cada una puede definir name (hasta 100 caracteres; por defecto, A, B, C, etc.), subject, preview_text, from_name, from_email, reply_to, html y text. Los campos que una versión no define se toman de la campaña. Al menos una versión debe definir un asunto, un texto de vista previa, un nombre o una dirección de remitente, o un cuerpo.

Devuelve

Devuelve 201 Created con el objeto de campaña. status es draft. La respuesta no incluye html, text ni content. Incluye la configuración anterior, send_completes_at y send_summary (ambos null hasta que se envía la campaña) y ab_test con las versiones y sus ID (cvr_…). Consulta Obtener una campaña.

Devuelve 400 si falta name, 403 si la clave de API no tiene el permiso full y 422 si un ajuste o la prueba A/B no son válidos.

POST/campaigns
Terminal
curl -X POST https://api.emailit.com/v2/campaigns \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "name": "October newsletter",
    "subject": "October news for {{first_name}}",
    "from_email": "news@acme.com",
    "from_name": "Acme",
    "reply_to": "support@acme.com",
    "html": "<p>Hi {{first_name}},</p><p>Here is what changed this month.</p><p><a href=\"{{unsubscribe_url}}\">Unsubscribe</a></p>",
    "text": "Hi {{first_name}}, here is what changed this month. Unsubscribe: {{unsubscribe_url}}"
  }'
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "draft",
  "subject": "October news for {{first_name}}",
  "from_email": "news@acme.com",
  "from_name": "Acme",
  "reply_to": "support@acme.com",
  "preview_text": null,
  "content_type": "html",
  "created_at": "2026-10-01T09:30:12.482193Z",
  "updated_at": "2026-10-01T09:30:12.482193Z",
  "utm_tracking": false,
  "utm_params": null,
  "smart_sending_hours": null,
  "exclude_unengaged": false,
  "tags": [],
  "send_strategy": "immediate",
  "send_options": null,
  "send_completes_at": null,
  "send_summary": null,
  "ab_test": {
    "enabled": false,
    "variants": []
  }
}

Obtener una campaña

Obtiene una campaña por su ID o su nombre. Requiere una clave de API con el permiso full.

GET/campaigns/{id}

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña. Codifica para URL los nombres que contengan espacios o caracteres especiales.

Devuelve

Devuelve el objeto de campaña.

objectstring
Siempre campaign.
idstring
El ID de la campaña, con el prefijo cmp_.
statusstring
draft, scheduled, queued, sending, testing, sent, canceled o archived. queued significa que una campaña programada ha llegado a su hora de envío y espera a que la procese un worker. testing significa que hay una prueba A/B en curso y todavía no se ha enviado la ganadora. Un envío repartido en el tiempo sigue en sending hasta que toca su último lote.
namestring
El nombre interno de la campaña.
subjectstring
El asunto, con las etiquetas de combinación sin resolver.
from_emailstring
La dirección del remitente. "" hasta que se define.
from_namestring
El nombre visible del remitente. "" hasta que se define.
reply_tostring
La dirección de respuesta. "" significa que las respuestas van a from_email.
preview_textstring | null
El texto de vista previa que muestran las bandejas de entrada después del asunto.
content_typestring
La etiqueta de formato del código fuente del editor: html, text o mjml en las campañas creadas con la API. Las campañas cuyo MJML compiló Emailit (alfa) también devuelven un objeto mjml con las versiones del documento.
scheduled_atstring | null
Cuándo se envía una campaña programada, en UTC.
sent_atstring | null
Cuándo empezó el envío.
utm_trackingboolean
Si se añaden parámetros UTM a los enlaces de la campaña.
utm_paramsobject | null
Los valores UTM que sustituyen a los valores por defecto, o null. Consulta Crear una campaña.
smart_sending_hoursinteger | null
Se omiten los contactos a los que otra campaña ha enviado un email en este número de horas. null si el envío inteligente está desactivado.
exclude_unengagedboolean
Si se omiten los contactos que han recibido 3 o más emails de campaña en los últimos 90 días y no han abierto ninguno ni han hecho clic en ninguno.
tagsstring[]
Las etiquetas de la campaña.
send_strategystring
immediate, throttled, local_time o smart_time.
send_optionsobject | null
Las opciones de la estrategia. Consulta Enviar o programar una campaña.
send_completes_atstring | null
En un envío repartido en más de un minuto, cuándo toca su último lote. Después, la campaña pasa a sent.
send_summaryobject | null

Lo que hizo el último envío, o null antes de que se envíe la campaña:

  • recipients: los contactos de las listas de contactos y los segmentos, una vez por dirección.
  • suppressed: los omitidos porque la dirección está bloqueada.
  • smart_sending_skipped: los omitidos por smart_sending_hours.
  • unengaged_skipped: los omitidos por exclude_unengaged.
  • sent: los contactos a los que se envió la campaña. En una prueba A/B, solo el grupo de prueba.
  • batches: el número de lotes de envío.
  • completes_at: igual que send_completes_at.
ab_testobject

La prueba A/B. Sin prueba: { "enabled": false, "variants": [] }. Con prueba: enabled, winner_metric, test_size_percent, duration_hours y variants. Cada versión tiene id (cvr_…), name, subject, preview_text, from_name, from_email, reply_to, html, text (null si la versión usa el valor de la campaña) e is_winner. Consulta Crear una campaña.

recipientsobject[]
Las listas de contactos y los segmentos a los que se dirige la campaña. Cada elemento tiene audience_id (aud_…) o segment_id (seg_…), y exclude (true para una exclusión).

El cuerpo (html, text y content) no se incluye en la respuesta. Para la interacción y los ingresos, usa Obtener las estadísticas de una campaña o el informe del panel, en Email MarketingCampaigns.

Devuelve 404 si ninguna campaña del espacio de trabajo coincide con id.

GET/campaigns/{id}
Terminal
curl https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "scheduled",
  "subject": "October news for {{first_name}}",
  "from_email": "news@acme.com",
  "from_name": "Acme",
  "reply_to": "support@acme.com",
  "preview_text": null,
  "content_type": "html",
  "sent_at": null,
  "scheduled_at": "2026-10-08 09:00:00+00",
  "created_at": "2026-10-01 09:30:12.482193+00",
  "updated_at": "2026-10-01 10:02:47.118204+00",
  "utm_tracking": true,
  "utm_params": {
    "campaign": "{campaign_name}-{send_date}"
  },
  "smart_sending_hours": 16,
  "exclude_unengaged": true,
  "tags": ["newsletter", "q4"],
  "send_strategy": "throttled",
  "send_options": {
    "per_hour": 5000
  },
  "send_completes_at": null,
  "send_summary": null,
  "ab_test": {
    "enabled": false,
    "variants": []
  },
  "recipients": [
    { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
    { "segment_id": "seg_3Kq8VbN2xYt5Lm9Pw1Rc7Hd4Zf0", "exclude": true }
  ]
}

Actualizar una campaña

Actualiza los campos que pasas y deja los demás sin cambios. Úsalo para elegir las listas de contactos y los segmentos de la campaña antes de enviarla. Requiere una clave de API con el permiso full. Emite un evento campaign.updated.

Una campaña programada envía lo que esté guardado a su hora de envío, así que puedes seguir editándola después de programarla.

POST/campaigns/{id}

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña.

Parámetros del cuerpo

namestring
El nombre interno de la campaña.
subjectstring
El asunto. Admite etiquetas de combinación.
from_emailstring
La dirección del remitente, de un dominio de envío verificado.
from_namestring
El nombre visible del remitente.
reply_tostring
La dirección de respuesta. Una cadena vacía significa que las respuestas van a from_email.
preview_textstring
El texto de vista previa que muestran las bandejas de entrada después del asunto. Emailit lo añade como texto oculto al principio del cuerpo HTML cuando se envía la campaña. Consulta Crear una campaña.
contentstring
El código fuente del cuerpo en el editor, guardado tal cual. Si cambias content o content_type y el formato es html o text, Emailit envía content como el nuevo cuerpo HTML o en texto plano.
content_typestring
El formato de content: html, text o mjml. Para el equipo de Emailit, Emailit compila el contenido mjml en html (alfa). Para todos los demás, mjml es una etiqueta.
utm_trackingboolean
Añade parámetros UTM a los enlaces de la campaña cuando se envía. Consulta Crear una campaña.
utm_paramsobject | null
Los valores UTM: source, medium, campaign, content, term e id. Sustituye el objeto guardado; null restablece los valores por defecto. Consulta Crear una campaña.
smart_sending_hoursinteger | null
Omite los contactos a los que otra campaña ha enviado un email en este número de horas, de 1 a 168. null lo desactiva.
exclude_unengagedboolean
Omite los contactos que han recibido 3 o más emails de campaña en los últimos 90 días y no han abierto ninguno ni han hecho clic en ninguno.
tagsstring[]
Hasta 20 etiquetas de hasta 50 caracteres cada una. Sustituye las etiquetas actuales.
send_strategystring
immediate, throttled, local_time o smart_time. Se usa cuando envías la campaña sin indicar una estrategia.
send_optionsobject | null
Las opciones de send_strategy, que se comprueban por completo cuando se envía la campaña. Consulta Enviar o programar una campaña.
ab_testobject | null

La prueba A/B, con los campos que se describen en Crear una campaña. Si envías ab_test, se sustituyen la prueba y sus versiones. Para conservar el ID de una versión, y con él sus resultados, incluye su id (cvr_…) en la versión. null o "enabled": false desactiva la prueba y elimina las versiones.

recipientsobject[]

Las listas de contactos y los segmentos a los que se dirige, hasta 100 elementos. Sustituye la lista actual. Incluye al menos un elemento con exclude en false. Cada elemento tiene audience_id o segment_id, no ambos:

  • audience_id (cadena): el ID de una lista de contactos (aud_…) de este espacio de trabajo.
  • segment_id (cadena): el ID de un segmento (seg_…) de este espacio de trabajo. Los segmentos están en alfa: solo el equipo de Emailit puede añadir uno, y las demás peticiones devuelven 403 con error: "segments_alpha". Los segmentos que la campaña ya tiene se pueden mantener.
  • exclude (booleano, por defecto false): true deja fuera a los suscriptores de la lista o a los contactos del segmento, aunque también estén en un elemento incluido.

Los elementos duplicados se ignoran. Al enviar, Emailit envía un email una sola vez a cada contacto que está suscrito a una lista incluida o coincide con un segmento incluido, no está en uno excluido, no se ha dado de baja de forma global, está suscrito al menos a una lista y no tiene la dirección bloqueada. Los segmentos se evalúan en el momento del envío. Si para entonces ya no existe una lista o un segmento excluidos, la campaña no se envía.

El cuerpo HTML y el de texto se definen al crear la campaña. Los campos desconocidos del cuerpo se ignoran.

Devuelve

Devuelve el objeto de campaña actualizado, con recipients y ab_test. Consulta Obtener una campaña.

Devuelve 422 si recipients no tiene ninguna lista ni ningún segmento incluidos, tiene más de 100 elementos, tiene un elemento con los dos ID o hace referencia a una lista o un segmento de otro espacio de trabajo. También devuelve 422 si un ajuste o la prueba A/B no son válidos, o si envías ab_test para una campaña que no es un borrador ni está programada, y 404 si la campaña no existe.

POST/campaigns/{id}
Terminal
curl -X POST https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "subject": "Your October update, {{first_name}}",
    "recipients": [
      { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV" },
      { "segment_id": "seg_3Kq8VbN2xYt5Lm9Pw1Rc7Hd4Zf0", "exclude": true }
    ]
  }'
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "draft",
  "subject": "Your October update, {{first_name}}",
  "from_email": "news@acme.com",
  "from_name": "Acme",
  "reply_to": "support@acme.com",
  "preview_text": null,
  "content_type": "html",
  "scheduled_at": null,
  "created_at": "2026-10-01 09:30:12.482193+00",
  "updated_at": "2026-10-01 10:02:47.118204+00",
  "utm_tracking": false,
  "utm_params": null,
  "smart_sending_hours": null,
  "exclude_unengaged": false,
  "tags": [],
  "send_strategy": "immediate",
  "send_options": null,
  "send_completes_at": null,
  "send_summary": null,
  "ab_test": {
    "enabled": false,
    "variants": []
  },
  "recipients": [
    { "audience_id": "aud_3Cz7WJ9GpvD7P0PQez50xOmkZSV", "exclude": false },
    { "segment_id": "seg_3Kq8VbN2xYt5Lm9Pw1Rc7Hd4Zf0", "exclude": true }
  ]
}

Listar campañas

Devuelve las campañas del espacio de trabajo, de la más reciente a la más antigua. Requiere una clave de API con el permiso full.

GET/campaigns

Parámetros de consulta

pageintegerpor defecto: 1
El número de página, empezando por 1.
limitintegerpor defecto: 10
Las campañas por página, de 1 a 100.
statusstring
Un filtro rápido por estado: draft, scheduled, sending (también incluye queued), sent, canceled, archived o all.
matchstring

all (por defecto) exige que se cumplan todos los filtros. or coincide con cualquier filtro. Consulta Filtrado.

orderstring

Clave de ordenación de esta lista. Consulta las claves de ordenación más abajo.

directionstring

asc o desc.

Claves de filtro

Los filtros usan parámetros de consulta key.condition=value, por ejemplo status.exact=sent o created_at.after=2026-09-01. Para las condiciones de cada tipo, consulta Filtrado y ordenación.

Clave Tipo Notas
name string
subject string
status enum draft, scheduled, queued, sending, sent, archived
created_at date
sent_at date

Claves de orden para order: name, subject, status, created_at, sent_at.

Devuelve

Devuelve una página de objetos de campaña sin reply_to, preview_text, content_type ni recipients, y solo con tags, send_strategy y send_completes_at de las opciones de envío. Para obtener el resto, usa Obtener una campaña.

dataobject[]
Las campañas de esta página.
total_recordsinteger
El número de campañas que coinciden con la consulta.
next_page_urlstring | null
La ruta de la página siguiente, o null en la última página. Solo incluye page y limit, así que vuelve a añadir tu búsqueda y tus filtros cuando la sigas.
previous_page_urlstring | null
La ruta de la página anterior, o null en la primera página.
GET/campaigns
Terminal
curl -G https://api.emailit.com/v2/campaigns \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -d limit=20 \
  -d status=sent \
  -d order=sent_at \
  -d direction=desc
JSON
{
  "data": [
    {
      "object": "campaign",
      "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
      "name": "October newsletter",
      "status": "sent",
      "subject": "Your October update, {{first_name}}",
      "from_email": "news@acme.com",
      "from_name": "Acme",
      "sent_at": "2026-10-08 09:00:04+00",
      "scheduled_at": "2026-10-08 09:00:00+00",
      "created_at": "2026-10-01 09:30:12.482193+00",
      "updated_at": "2026-10-08 09:00:31+00",
      "tags": ["newsletter"],
      "send_strategy": "immediate",
      "send_completes_at": null
    }
  ],
  "total_records": 34,
  "next_page_url": "/v2/campaigns?page=2&limit=20",
  "previous_page_url": null
}

Enviar o programar una campaña

Envía la campaña ahora o la programa si pasas un scheduled_at futuro. Requiere una clave de API con el permiso full y un espacio de trabajo verificado: los espacios de trabajo sin verificar no pueden enviar campañas y reciben 403. Solo se pueden enviar los borradores y las campañas programadas: una campaña que se está enviando o que ya se envió devuelve 422, así que una petición reintentada no vuelve a enviar el email a todos.

Antes de enviarla, comprueba que la campaña tiene un from_email de un dominio verificado, un asunto, un cuerpo html o text y al menos una lista de contactos o un segmento incluidos (se definen con Actualizar una campaña). Cada email cuesta 2 créditos.

POST/campaigns/{id}/send

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña.

Parámetros del cuerpo

scheduled_atstring

Cuándo enviarla. Acepta ISO 8601 (2026-10-08T09:00:00Z), una marca de tiempo Unix en segundos o lenguaje natural como tomorrow at 9am (interpretado en UTC). La hora debe ser futura y la campaña debe estar en draft.

Omítelo para enviarla ahora. Para enviar antes de tiempo una campaña programada, llama a este endpoint sin scheduled_at.

send_strategystring

Cómo se reparte el envío en el tiempo. Por defecto, la estrategia guardada en la campaña o, si no hay ninguna, immediate. La estrategia y sus opciones se guardan en la campaña. Consulta Opciones de envío.

  • immediate: todos a la vez, ahora o en scheduled_at.
  • throttled: a un ritmo uniforme de per_hour emails, empezando ahora o en scheduled_at.
  • local_time: una hora del reloj en la zona horaria de cada contacto. scheduled_at se ignora.
  • smart_time: cada contacto a la hora a la que suele abrir o hacer clic, dentro de una ventana desde el inicio.

Las campañas con una prueba A/B solo se envían con immediate.

send_optionsobject

Las opciones de la estrategia. Por defecto, las opciones guardadas en la campaña.

  • throttled: per_hour (entero, obligatorio), de 100 a 1.000.000 emails por hora.
  • local_time: local_time (cadena, obligatorio), la hora en formato YYYY-MM-DDTHH:mm, por ejemplo 2026-10-08T09:00, y timezone (cadena, por defecto UTC), la zona horaria IANA de los contactos cuya zona horaria no se conoce. Las zonas horarias de los contactos proceden del script de seguimiento. El envío empieza cuando la zona horaria más temprana (UTC+14) llega a esa hora; los contactos de las zonas en las que ya ha pasado reciben el email al momento. Hasta entonces, la campaña está en scheduled, así que debe ser un borrador. Devuelve 422 si la hora ya ha pasado en todas las zonas horarias.
  • smart_time: window_hours (entero, por defecto 24), de 1 a 48. Cada contacto recibe el email a la hora del día (UTC) a la que más abrió o hizo clic en los últimos 90 días, con un clic contando el triple que una apertura, cuando esa hora cae dentro de la ventana. Los contactos sin ese historial lo reciben a la hora más habitual entre los demás destinatarios. Los contactos que no tienen ninguna de las dos, o cuya hora cae fuera de la ventana, lo reciben al inicio.

timezone se acepta con todas las estrategias y debe ser una zona horaria IANA válida, pero solo la usa local_time.

Devuelve

Enviar ahora: el estado cambia a sending y Emailit emite campaign.sending. Después, Emailit determina los destinatarios: todos los contactos suscritos de las listas incluidas y todos los contactos que coinciden con los segmentos incluidos, una vez por dirección, sin los contactos de las listas o los segmentos excluidos, los contactos dados de baja de forma global o que no están en ninguna lista, ni las direcciones bloqueadas. Los segmentos se evalúan en ese momento. También omite los contactos que dejan fuera smart_sending_hours y exclude_unengaged. Los emails se crean en los momentos que fija la estrategia de envío. Cuando todos los destinatarios han pasado al proceso de envío, el estado cambia a sent y Emailit emite campaign.sent. Un envío repartido en el tiempo sigue en sending hasta que toca su último lote (send_completes_at). El send_summary de la campaña muestra a cuántos contactos se envió la campaña y cuántos se omitieron. Sigue la entrega en el panel, con Obtener las estadísticas de una campaña o con los eventos de email.

Prueba A/B: el grupo de prueba recibe las versiones y el estado cambia a testing. Pasadas duration_hours, el resto de los destinatarios recibe la versión ganadora y el estado cambia a sent.

Programar: el estado cambia a scheduled y Emailit emite campaign.scheduled. A la hora programada, la campaña pasa a queued (campaign.queued) y después se envía como se describe arriba. Si mientras tanto se ha eliminado una lista o un segmento excluidos, la campaña vuelve a draft en lugar de enviarse.

La respuesta contiene object, id, name y el nuevo status, además de scheduled_at si la programas.

Código Cuándo
403 El espacio de trabajo no está verificado o la clave de API no tiene el permiso full.
404 Ninguna campaña coincide con id.
422 La campaña no es un borrador ni está programada (por ejemplo, se está enviando o ya se envió), scheduled_at no se puede interpretar o no es una hora futura, intentaste programar una campaña que no es un borrador, la campaña no tiene cuerpo html ni text, no tiene destinatarios (elígelos con Actualizar una campaña), excluye una lista o un segmento que ya no existe, o send_strategy y send_options no son válidos. El error de la estrategia indica el campo en message.
POST/campaigns/{id}/send
Terminal
curl -X POST https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN/send \
  -H "Authorization: Bearer $EMAILIT_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "scheduled_at": "2026-10-08T09:00:00Z" }'
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "scheduled",
  "scheduled_at": "2026-10-08T09:00:00.000000Z"
}

Cancelar una campaña

Cambia el estado de la campaña a canceled y emite un evento campaign.canceled. Requiere una clave de API con el permiso full.

Solo se pueden cancelar las campañas con estado draft o sending; cualquier otro estado devuelve 422. Si cancelas una campaña que se está enviando, los emails que ya están en cola para su entrega no se recuperan.

POST/campaigns/{id}/cancel

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña.

Devuelve

Devuelve object, id, name y status (canceled).

Devuelve 422 si el estado de la campaña no es draft ni sending, y 404 si la campaña no existe.

POST/campaigns/{id}/cancel
Terminal
curl -X POST https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN/cancel \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "status": "canceled"
}

Obtener las estadísticas de una campaña

Obtén el informe de una campaña: cuántos emails se enviaron, se entregaron, se abrieron y recibieron clics, los resultados por proveedor de correo, los ingresos de los pedidos atribuidos a la campaña (Comercio electrónico, alfa) y, en las pruebas A/B, los resultados por versión. El informe del panel en Email MarketingCampaigns muestra las mismas cifras. Requiere una clave de API con el permiso full.

Cada recuento es un número de emails: un email que se abrió tres veces cuenta una sola vez en opened. Los porcentajes son relativos a sent, salvo que se indique otra cosa, y tienen dos decimales.

GET/campaigns/{id}/stats

Parámetros de ruta

idstringObligatorio

El ID de la campaña (cmp_...) o el nombre de la campaña. Codifica para URL los nombres que contengan espacios o caracteres especiales.

Parámetros de consulta

fromstring

Solo cuenta los emails creados en este momento o después, una fecha o una fecha y hora en formato ISO 8601.

tostring

Solo cuenta los emails creados en este momento o antes.

statusstring

Solo cuenta los emails cuyo estado actual es este: accepted, scheduled, delivered, loaded, clicked, attempted, bounced, failed, rejected, suppressed o complained. Los demás valores se ignoran.

Los filtros se aplican a los recuentos de emails, a los proveedores y a los recuentos de la prueba A/B, y from y to también se aplican a unsubscribed. Los ingresos, los pedidos y los compradores siempre abarcan todos los pedidos atribuidos a la campaña, y sus tasas usan todos los emails entregados de la campaña.

Devuelve

objectstring

Siempre campaign_stats.

campaign_idstring

El ID de la campaña (cmp_...).

sentinteger

Los emails creados para la campaña. sent_percent es 100, o 0 antes de que se envíe nada.

delivered, delivered_percentinteger, number

Los emails cuyo estado es delivered, loaded o clicked.

opened, opened_percentinteger, number

Los emails abiertos al menos una vez.

clicked, clicked_percentinteger, number

Los emails con al menos un clic registrado.

click_through_percentnumber

clicked como porcentaje de opened.

bounced, suppressed, complained, attemptedinteger

Los emails cuyo estado es bounced, suppressed, complained o attempted (a la espera de un reintento). Cada uno tiene también un campo _percent.

not_processed, not_processed_percentinteger, number

Los emails que siguen en accepted o scheduled.

unsubscribed, unsubscribed_percentinteger, number

Las bajas procedentes de los emails de la campaña.

providersobject[]

Los resultados por proveedor de correo de los destinatarios, para los proveedores con al menos un email. key es gmail, outlook.com, live.com, hotmail.com, yahoo, icloud u other, y label es su nombre visible. Cada uno tiene sent, delivered, opened, clicked y bounced con sus campos _percent. sent_percent es la proporción de todos los emails que corresponde al proveedor; los demás porcentajes son relativos al sent del proveedor.

commerceobject

Solo para el equipo de Emailit mientras Comercio electrónico está en alfa: las demás peticiones no reciben este campo, y las variants de sus pruebas A/B no incluyen orders, revenue ni revenue_per_recipient. Los pedidos atribuidos a la campaña. Los ingresos son el total del pedido menos los reembolsos, y los pedidos cancelados no cuentan. Los importes en monedas distintas no se suman: la moneda principal es la que tiene más ingresos.

  • currency (cadena o null): la moneda principal.

  • revenue (número): los ingresos en la moneda principal.

  • orders (entero): los pedidos atribuidos en todas las monedas.

  • buyers (entero): los compradores distintos en todas las monedas. Un comprador que pagó en dos monedas cuenta una sola vez.

  • average_order_value (número): en la moneda principal.

  • conversion_percent (número): buyers como porcentaje de los emails entregados de la campaña.

  • revenue_per_recipient (número): revenue dividido entre los emails entregados de la campaña.

  • by_currency (array de objetos): currency, orders, revenue, buyers y average_order_value de cada moneda, de más a menos ingresos.

ab_testobject

Solo en las campañas con una prueba A/B.

  • winner_metric (cadena): opened, clicked, orders o revenue.

  • leader_variant_id (cadena o null): la versión con la mejor tasa hasta el momento: aperturas, clics o pedidos por email enviado, o ingresos por email enviado.

  • win_probability (número o null): la probabilidad, en porcentaje, de que la versión que va en cabeza supere de verdad a la segunda.

  • significance (cadena): significant (90 % o más, con al menos 50 emails por versión), promising (75 % o más, con el mismo mínimo), not_significant (menos del 75 % con al menos 1800 emails por versión) o inconclusive. En revenue, la probabilidad se basa en los pedidos.

  • variants (array de objetos): por cada versión, variant_id, name, subject, is_winner, sent, delivered, opened, opened_percent, clicked, clicked_percent, orders, revenue y revenue_per_recipient. Una vez que la ganadora se envía al resto de la lista de contactos, los recuentos de la versión ganadora incluyen esos emails.

Devuelve 404 si ninguna campaña coincide con id, y 503 si el almacén de analítica no está disponible.

GET/campaigns/{id}/stats
Terminal
curl https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN/stats \
  -H "Authorization: Bearer your_api_key"
JSON
{
  "object": "campaign_stats",
  "campaign_id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "sent": 12480,
  "sent_percent": 100,
  "delivered": 12302,
  "delivered_percent": 98.57,
  "opened": 5021,
  "opened_percent": 40.23,
  "clicked": 1187,
  "clicked_percent": 9.51,
  "click_through_percent": 23.64,
  "bounced": 98,
  "bounced_percent": 0.79,
  "suppressed": 42,
  "suppressed_percent": 0.34,
  "complained": 3,
  "complained_percent": 0.02,
  "attempted": 0,
  "attempted_percent": 0,
  "not_processed": 38,
  "not_processed_percent": 0.3,
  "unsubscribed": 27,
  "unsubscribed_percent": 0.22,
  "providers": [
    {
      "key": "gmail",
      "label": "Gmail",
      "sent": 7310,
      "sent_percent": 58.57,
      "delivered": 7236,
      "delivered_percent": 98.99,
      "opened": 3102,
      "opened_percent": 42.44,
      "clicked": 741,
      "clicked_percent": 10.14,
      "bounced": 41,
      "bounced_percent": 0.56
    },
    {
      "key": "other",
      "label": "Other",
      "sent": 5170,
      "sent_percent": 41.43,
      "delivered": 5066,
      "delivered_percent": 97.99,
      "opened": 1919,
      "opened_percent": 37.12,
      "clicked": 446,
      "clicked_percent": 8.63,
      "bounced": 57,
      "bounced_percent": 1.1
    }
  ],
  "commerce": {
    "currency": "USD",
    "revenue": 17311.9,
    "orders": 214,
    "buyers": 198,
    "average_order_value": 86.13,
    "conversion_percent": 1.61,
    "revenue_per_recipient": 1.41,
    "by_currency": [
      {
        "currency": "USD",
        "orders": 201,
        "revenue": 17311.9,
        "buyers": 186,
        "average_order_value": 86.13
      },
      {
        "currency": "EUR",
        "orders": 13,
        "revenue": 1052.4,
        "buyers": 12,
        "average_order_value": 80.95
      }
    ]
  }
}

Eliminar una campaña

Elimina una campaña de forma permanente. Requiere una clave de API con el permiso full. Emite un evento campaign.deleted.

Eliminar una campaña no afecta a los emails que ya se enviaron o se pusieron en cola. Para detener una campaña que se está enviando, primero cancélala.

DELETE/campaigns/{id}

Parámetros de ruta

idstringobligatorio
El ID (cmp_…) o el nombre de la campaña.

Devuelve

Devuelve object, id, name y deleted: true. Devuelve 404 si la campaña no existe.

DELETE/campaigns/{id}
Terminal
curl -X DELETE https://api.emailit.com/v2/campaigns/cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN \
  -H "Authorization: Bearer $EMAILIT_API_KEY"
JSON
{
  "object": "campaign",
  "id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
  "name": "October newsletter",
  "deleted": true
}

¿Te ha resultado útil esta página?

Gracias por tu opinión.

Gracias. Leemos todos los mensajes.