Campañas
Crea campañas, elige sus listas de contactos y segmentos, y envíalas o prográmalas.
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.
/campaignsParámetros del cuerpo
namestringobligatoriosubjectstring{{first_name}}.from_emailstringnews@acme.com.from_namestringAcme. El mensaje se envía desde Acme <news@acme.com>.reply_tostringfrom_email cuando se envía la campaña.htmlstring{{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.textstringhtml.preview_textstring<mj-preview> de MJML).contentstringhtml ni text y content_type es html o text, Emailit envía content como cuerpo HTML o en texto plano.content_typestringpor defecto: htmlcontent: 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: falsetrue 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 | nullLos 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) ycampaign(por defecto,{campaign_name}).content,termeid, 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 | nullnull (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: falsetrue 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[]tags, se sustituye la lista.send_strategystringpor defecto: immediateimmediate, 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 | nullsend_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 | nullUna 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 defectotrue):falsedesactiva la prueba.winner_metric(cadena, por defectoopened):opened,clicked,orders(pedidos atribuidos por email enviado) orevenue(ingresos atribuidos por email enviado).ordersyrevenueforman parte de Comercio electrónico, que está en alfa: las demás peticiones devuelven403conerror: "commerce_alpha".test_size_percent(entero, por defecto20): 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 defecto4): 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 definirname(hasta 100 caracteres; por defecto,A,B,C, etc.),subject,preview_text,from_name,from_email,reply_to,htmlytext. 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.
{
"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": []
}
}{
"error": "Bad Request"
}{
"statusCode": 403,
"error": "Forbidden",
"message": "Permission denied: campaigns:create"
}{
"message": "Validation failed. ab_test.variants: Send 2 to 5 variants.",
"errors": {
"ab_test.variants": ["Send 2 to 5 variants."]
}
}Obtener una campaña
Obtiene una campaña por su ID o su nombre. Requiere una clave de API con el permiso full.
/campaigns/{id}Parámetros de ruta
idstringobligatoriocmp_…) 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.
objectstringcampaign.idstringcmp_.statusstringdraft, 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.namestringsubjectstringfrom_emailstring"" hasta que se define.from_namestring"" hasta que se define.reply_tostring"" significa que las respuestas van a from_email.preview_textstring | nullcontent_typestringhtml, 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 | nullsent_atstring | nullutm_trackingbooleanutm_paramsobject | nullnull. Consulta Crear una campaña.smart_sending_hoursinteger | nullnull si el envío inteligente está desactivado.exclude_unengagedbooleantagsstring[]send_strategystringimmediate, throttled, local_time o smart_time.send_optionsobject | nullsend_completes_atstring | nullsent.send_summaryobject | nullLo 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 porsmart_sending_hours.unengaged_skipped: los omitidos porexclude_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 quesend_completes_at.
ab_testobjectLa 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[]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.
{
"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 }
]
}{
"error": "Campaign not found"
}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.
/campaigns/{id}Parámetros de ruta
idstringobligatoriocmp_…) o el nombre de la campaña.Parámetros del cuerpo
namestringsubjectstringfrom_emailstringfrom_namestringreply_tostringfrom_email.preview_textstringcontentstringcontent o content_type y el formato es html o text, Emailit envía content como el nuevo cuerpo HTML o en texto plano.content_typestringcontent: 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_trackingbooleanutm_paramsobject | nullsource, medium, campaign, content, term e id. Sustituye el objeto guardado; null restablece los valores por defecto. Consulta Crear una campaña.smart_sending_hoursinteger | nullnull lo desactiva.exclude_unengagedbooleantagsstring[]send_strategystringimmediate, throttled, local_time o smart_time. Se usa cuando envías la campaña sin indicar una estrategia.send_optionsobject | nullsend_strategy, que se comprueban por completo cuando se envía la campaña. Consulta Enviar o programar una campaña.ab_testobject | nullLa 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 devuelven403conerror: "segments_alpha". Los segmentos que la campaña ya tiene se pueden mantener.exclude(booleano, por defectofalse):truedeja 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.
{
"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 }
]
}{
"message": "Validation failed.",
"errors": {
"recipients": ["One or more segments are invalid."]
}
}{
"error": "Campaign not found"
}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.
/campaignsParámetros de consulta
pageintegerpor defecto: 1limitintegerpor defecto: 10searchstringstatusstringdraft, scheduled, sending (también incluye queued), sent, canceled, archived o all.matchstringall (por defecto) exige que se cumplan todos los filtros. or coincide con cualquier filtro. Consulta Filtrado.
orderstringClave de ordenación de esta lista. Consulta las claves de ordenación más abajo.
directionstringasc 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[]total_recordsintegernext_page_urlstring | nullnull 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 | nullnull en la primera página.{
"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.
/campaigns/{id}/sendParámetros de ruta
idstringobligatoriocmp_…) o el nombre de la campaña.Parámetros del cuerpo
scheduled_atstringCuá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_strategystringCó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 enscheduled_at.throttled: a un ritmo uniforme deper_houremails, empezando ahora o enscheduled_at.local_time: una hora del reloj en la zona horaria de cada contacto.scheduled_atse 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_optionsobjectLas 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 formatoYYYY-MM-DDTHH:mm, por ejemplo2026-10-08T09:00, ytimezone(cadena, por defectoUTC), 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á enscheduled, así que debe ser un borrador. Devuelve422si la hora ya ha pasado en todas las zonas horarias.smart_time:window_hours(entero, por defecto24), 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. |
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "scheduled",
"scheduled_at": "2026-10-08T09:00:00.000000Z"
}{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "sending"
}{
"code": "unverified_workspace_recipient",
"error": "Workspace not verified",
"message": "Unverified workspaces cannot send campaigns. You can send individual emails only to workspace members' account emails."
}{
"error": "Campaign cannot be sent",
"message": "Campaign status is 'sent'. Only draft or scheduled campaigns can be sent."
}{
"error": "Campaign excludes a deleted audience or segment",
"message": "This campaign excludes an audience or segment that no longer exists. Update its recipients before sending."
}{
"error": "Invalid send strategy",
"message": "send_options.per_hour: Send between 100 and 1,000,000 emails per hour."
}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.
/campaigns/{id}/cancelParámetros de ruta
idstringobligatoriocmp_…) 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.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"status": "canceled"
}{
"error": "Campaign cannot be canceled",
"message": "Campaign status is 'scheduled'. Only 'draft' or 'sending' campaigns can be canceled."
}{
"error": "Campaign not found"
}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.
/campaigns/{id}/statsParámetros de ruta
idstringObligatorioEl 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
fromstringSolo cuenta los emails creados en este momento o después, una fecha o una fecha y hora en formato ISO 8601.
tostringSolo cuenta los emails creados en este momento o antes.
statusstringSolo 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
objectstringSiempre campaign_stats.
campaign_idstringEl ID de la campaña (cmp_...).
sentintegerLos emails creados para la campaña. sent_percent es 100, o 0 antes de que se envíe nada.
delivered, delivered_percentinteger, numberLos emails cuyo estado es delivered, loaded o clicked.
opened, opened_percentinteger, numberLos emails abiertos al menos una vez.
clicked, clicked_percentinteger, numberLos emails con al menos un clic registrado.
click_through_percentnumberclicked como porcentaje de opened.
bounced, suppressed, complained, attemptedintegerLos 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, numberLos emails que siguen en accepted o scheduled.
unsubscribed, unsubscribed_percentinteger, numberLas 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.
commerceobjectSolo 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):buyerscomo porcentaje de los emails entregados de la campaña. -
revenue_per_recipient(número):revenuedividido entre los emails entregados de la campaña. -
by_currency(array de objetos):currency,orders,revenue,buyersyaverage_order_valuede cada moneda, de más a menos ingresos.
ab_testobjectSolo en las campañas con una prueba A/B.
-
winner_metric(cadena):opened,clicked,ordersorevenue. -
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) oinconclusive. Enrevenue, 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,revenueyrevenue_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.
{
"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
}
]
}
}{
"object": "campaign_stats",
"campaign_id": "cmp_37WtKnTZIi4ZbdQ8057IgW0Pbjk",
"sent": 2496,
"sent_percent": 100,
"delivered": 2461,
"delivered_percent": 98.6,
"opened": 1004,
"opened_percent": 40.22,
"clicked": 231,
"clicked_percent": 9.25,
"click_through_percent": 23.01,
"bounced": 21,
"bounced_percent": 0.84,
"suppressed": 9,
"suppressed_percent": 0.36,
"complained": 1,
"complained_percent": 0.04,
"attempted": 0,
"attempted_percent": 0,
"not_processed": 5,
"not_processed_percent": 0.2,
"unsubscribed": 6,
"unsubscribed_percent": 0.24,
"providers": [
{
"key": "gmail",
"label": "Gmail",
"sent": 1460,
"sent_percent": 58.49,
"delivered": 1447,
"delivered_percent": 99.11,
"opened": 612,
"opened_percent": 41.92,
"clicked": 139,
"clicked_percent": 9.52,
"bounced": 9,
"bounced_percent": 0.62
},
{
"key": "other",
"label": "Other",
"sent": 1036,
"sent_percent": 41.51,
"delivered": 1014,
"delivered_percent": 97.88,
"opened": 392,
"opened_percent": 37.84,
"clicked": 92,
"clicked_percent": 8.88,
"bounced": 12,
"bounced_percent": 1.16
}
],
"commerce": {
"currency": "USD",
"revenue": 3297.4,
"orders": 38,
"buyers": 36,
"average_order_value": 86.77,
"conversion_percent": 1.46,
"revenue_per_recipient": 1.34,
"by_currency": [
{
"currency": "USD",
"orders": 38,
"revenue": 3297.4,
"buyers": 36,
"average_order_value": 86.77
}
]
},
"ab_test": {
"winner_metric": "clicked",
"leader_variant_id": "cvr_3uzJsNMbJopoPIZCgLl7zcXxALw",
"win_probability": 99.5,
"significance": "significant",
"variants": [
{
"variant_id": "cvr_3qM7nyKvTUlnBLzE9vtnG03baRV",
"name": "A",
"subject": "New trail shoes are here",
"is_winner": false,
"sent": 1248,
"delivered": 1231,
"opened": 468,
"opened_percent": 37.5,
"clicked": 97,
"clicked_percent": 7.77,
"orders": 14,
"revenue": 1188.6,
"revenue_per_recipient": 0.97
},
{
"variant_id": "cvr_3uzJsNMbJopoPIZCgLl7zcXxALw",
"name": "B",
"subject": "Your next trail shoe is 25% off",
"is_winner": false,
"sent": 1248,
"delivered": 1230,
"opened": 536,
"opened_percent": 42.95,
"clicked": 134,
"clicked_percent": 10.74,
"orders": 24,
"revenue": 2108.8,
"revenue_per_recipient": 1.71
}
]
}
}{
"error": "Campaign not found"
}{
"error": "analytics unavailable"
}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.
/campaigns/{id}Parámetros de ruta
idstringobligatoriocmp_…) o el nombre de la campaña.Devuelve
Devuelve object, id, name y deleted: true. Devuelve 404 si la campaña no existe.
{
"object": "campaign",
"id": "cmp_3zNrBaNjAoPK1l0IL2GQ3pDkubN",
"name": "October newsletter",
"deleted": true
}{
"error": "Campaign not found"
}