Estadísticas de mensajes
Estos métodos devuelven estadísticas de los mensajes que ha enviado. Utilícelos para listar los mensajes enviados, obtener métricas por hora de un mensaje, ver en qué punto del embudo de entrega un mensaje perdió audiencia, leer los registros de mensajes por dispositivo y contar los clics en enlaces de los correos electrónicos.
messages:list
Anchor link toMuestra la lista de mensajes enviados.
POST https://api.pushwoosh.com/api/v2/messages:list
Cabeceras
Anchor link to| Nombre | Requerido | Descripción |
|---|---|---|
Authorization | Sí | Token de la API del servidor. Debe proporcionarse en el siguiente formato: Authorization: Api <Server Key>. |
Parámetros del cuerpo de la solicitud
Anchor link to| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
platforms | No | Array | Plataformas de mensajes. Valores posibles: "IOS", "ANDROID", "OSX", "WINDOWS", "AMAZON", "SAFARI", "CHROME", "FIREFOX", "IE", "EMAIL", "HUAWEI_ANDROID", "SMS". |
date_range | No | Object | Período de informe, filtrado por fecha de creación del mensaje. date_from y date_to deben seguir el formato YYYY-MM-DD (p. ej., "2000-01-01"); ambos días se incluyen en su totalidad, por lo que date_from y date_to establecidos en la misma fecha devuelven ese día completo. Las fechas se interpretan en UTC, no en la zona horaria de su cuenta. |
campaign | No | String | Código de campaña |
filters | Sí | Object | Filtros de mensajes. |
source | No | String | Fuente del mensaje. Por ejemplo: AB_TEST, API, AUTO_PUSH, CP, CSV, CUSTOMER_JOURNEY, EMAIL_API, EMAIL_CP, GEO_ZONE, PUSH_ON_EVENT, RSS. |
messages_codes | No | Array | Códigos de mensaje obtenidos de las respuestas de la API /createMessage. |
messages_ids | No | Array | IDs de mensaje obtenidos del Historial de Mensajes |
message_type | No | String | Filtro del flujo de mensajes. Valores posibles: "TRANSACTIONAL", "BROADCAST", "ALL". Si se omite, el valor predeterminado es "ALL". |
params | No | Object | Especifica si se deben mostrar los detalles y las métricas del mensaje. Establece with_details: true para incluir el objeto "details" y with_metrics: true para incluir el objeto "metrics" en la respuesta. |
application | Sí | String | Código de aplicación de Pushwoosh. |
per_page | No | Integer | Número de resultados por página, de 1 a 499. Omite el parámetro para obtener el tamaño de página predeterminado de 500 resultados; pasar 500 o más explícitamente es rechazado con 400. |
page | No | Integer | Número de página basado en cero para la paginación. Consulta el límite de paginación profunda a continuación. |
message_type también delimita hasta dónde llega una solicitud sin fechas.
Solicitud de ejemplo
Anchor link to{ "filters": { "platforms": [], // IOS, ANDROID, OSX, WINDOWS, AMAZON, SAFARI, CHROME, FIREFOX, IE, EMAIL, HUAWEI_ANDROID, SMS "date_range": { "date_from": "string", // Formato requerido: 2000-01-01 "date_to": "string" // Formato requerido: 2000-01-01 }, "source": "API", // AB_TEST, API, AUTO_PUSH, CP, CSV, CUSTOMER_JOURNEY, EMAIL_API, EMAIL_CP, GEO_ZONE, PUSH_ON_EVENT, RSS "campaign": "string", // Código de campaña "messages_ids": [], // IDs de mensaje "messages_codes": [], // Códigos de mensaje "message_type": "ALL", // TRANSACTIONAL, BROADCAST, ALL (predeterminado) "application": "string" // Código de aplicación de Pushwoosh }, "params": { "with_details": true, // Añadir detalles del mensaje a la respuesta (objeto "details") "with_metrics": true // Añadir métricas del mensaje a la respuesta (objeto "metrics") }, "per_page": 20, // <= 499 "page": 0}Códigos de respuesta y ejemplos
{ "total": 0, "items": [{ "id": 0, "code": "string", "created_date": "string", "send_date": "string", "status": "string", "platforms": [], "source": "string", "push_info": { "details": { "title": "string", "filter_name": "string", "filter_code": "string", "content": { "key": "value" }, "platform_parameters": { "android_header": "string", "android_root_params": { "key": "value" }, "ios_title": "string", "ios_subtitle": "string", "ios_root_params": { "key": "value" }, "chrome_header": "string", "chrome_root_params": { "key": "value" }, "firefox_header": "string", "firefox_root_params": { "key": "value" }, "conditions": [ // condiciones de etiqueta (ver /developer/api-reference/messages-api/#tag-conditions) TAG_CONDITION1, TAG_CONDITION2, ..., TAG_CONDITIONN ], "conditions_operator": "AND", // operador lógico para los arrays de condiciones; valores posibles: AND, OR "data": { "key": "value" } }, "follow_user_timezone": true }, "metrics": [{ "sends": 0, "opens": 0, "deliveries": 0, "inbox_opens": 0, "unshowable_sends": 0, "errors": 0, "platform": 0 }] }, "email_info": { "details": { "template": "string", "filter_name": "string", "filter_code": "string", "subject": { "key": "value" }, "from_name": "string", "from_email": "string", "reply_name": "string", "reply_email": "string", "follow_user_timezone": true, "conditions": [ // condiciones de etiqueta (ver Messages-api - tag-conditions) TAG_CONDITION1, TAG_CONDITION2, ..., TAG_CONDITIONN ], "conditions_operator": "AND" // operador lógico para los arrays de condiciones; valores posibles: AND, OR }, "metrics": [{ "sends": 0, "opens": 0, "deliveries": 0, "hard_bounces": 0, "soft_bounces": 0, "rejects": 0, "confirmed_sends": 0, "unsubs": 0, "complaints": 0, "errors": 0 }] } }]}date_range abarca más de 30 días:
{ "error": "exceeded the maximum date interval. Max interval: 30 days"}page × per_page excede el límite de paginación profunda:
{ "error": "requested result window is too large, narrow the date range"}{ "error": "account not found"}totalsByIntervals
Anchor link toDevuelve métricas y datos de conversión basados en el código del mensaje, agregados por hora.
POST https://api.pushwoosh.com/api/v2/statistics/messages/totalsByIntervals
Autorización
Anchor link toLa autorización se maneja a través del Token de Acceso a la API en la cabecera de la solicitud.
Parámetros del cuerpo de la solicitud
Anchor link to| Nombre del parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
message_code | string | Código de mensaje obtenido de las respuestas de la API /createMessage. | Sí |
platforms | [int] | Plataformas | No |
Solicitud de ejemplo
Anchor link to{ "message_code": "XXXXX-XXXXXXXXX-XXXXXXXX", // requerido. Identificador único del mensaje "platforms": [1, 3, 7, 10, 11, 12] // opcional. Lista de códigos de plataforma}Campos de respuesta
Anchor link to| Nombre | Tipo | Descripción |
|---|---|---|
metrics | array | Contiene un array de métricas de mensajes |
timestamp | string | La hora de la métrica. |
platform | int | El código de la plataforma (p. ej., iOS, Android). |
sends | string | El número de mensajes enviados. |
opens | string | El número de mensajes abiertos. |
deliveries | string | El número de mensajes entregados. |
inbox_opens | string | El número de aperturas de la bandeja de entrada. |
unshowable_sends | string | El número de mensajes aceptados para dispositivos con las notificaciones desactivadas en la configuración del sistema operativo. No se muestra ningún banner, pero el mensaje llega a la aplicación y aparece en la Bandeja de entrada de mensajes si el envío tiene activada la opción Guardar mensaje en la bandeja de entrada. Se cuentan como envíos exitosos, no como errores. |
errors | string | El número de errores. |
conversion | object | Contiene datos de conversión |
sends | string | El número total de mensajes enviados. |
opens | string | El número total de mensajes abiertos. |
events | array | Un array de eventos con sus estadísticas |
name | string | El nombre del evento (p. ej., añadir al carrito). |
hits | string | El número de hits. |
conversion | float | La tasa de conversión relativa a las aperturas. |
revenue | float | Los ingresos (solo para eventos con atributos __amount y __currency). |
Respuesta de ejemplo
Anchor link to{ "metrics": [{ "timestamp": "2024-08-03 15:00:00", // Marca de tiempo de las métricas en formato "YYYY-MM-DD HH:MM:SS" "platform": 3, // Código de plataforma "sends": "55902", // Número de mensajes enviados "opens": "382", // Número de mensajes abiertos "deliveries": "22931", // Número de mensajes entregados "inbox_opens": "0", // Número de mensajes abiertos en la bandeja de entrada "unshowable_sends": "2", // Enviado a dispositivos con notificaciones desactivadas, no se muestra ningún banner "errors": "0" // Número de errores encontrados }], "conversion": { "sends": "55902", // Número total de mensajes enviados "opens": "772", // Número total de mensajes abiertos "events": [{ "name": "cart_add", // Nombre del evento "hits": "96", // Número de hits para el evento "conversion": 0.12, // Tasa de conversión relativa a las aperturas "revenue": 0 // Ingresos generados por el evento (solo para eventos con atributos de cantidad/moneda) }] }}Embudo de entrega
Anchor link toUse el embudo de entrega para ver en qué etapa un mensaje o campaña perdió audiencia (errores, sin entrega, sin apertura) y por qué. A diferencia de totalsByIntervals, que devuelve totales por hora, el embudo desglosa la audiencia por etapa y motivo de abandono, una entrada por canal, con un desglose por plataforma. La secuencia de etapas difiere según el canal: consulte stage en Campos de GetDeliveryFunnelResponse más abajo para ver qué etapas incluye cada canal. Ambos métodos requieren un token de API de servidor.
Ambos métodos devuelven la misma forma de respuesta, GetDeliveryFunnelResponse, descrita una sola vez a continuación.
getDeliveryFunnel
Anchor link toDevuelve el embudo de un mensaje.
POST https://api.pushwoosh.com/api/v2/statistics/messages/getDeliveryFunnel
Encabezados
Anchor link to| Nombre | Requerido | Descripción |
|---|---|---|
Authorization | Sí | Token de API de servidor. Debe proporcionarse en el siguiente formato: Authorization: Api <Server Key>. |
Parámetros del cuerpo de la solicitud
Anchor link to| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
message_code | Sí | Cadena | Código de mensaje obtenido de las respuestas de la API /createMessage. |
platforms | No | Array de enteros | Códigos de plataforma para filtrar el embudo. Omita para devolver todas las plataformas a las que se envió el mensaje. |
Ejemplo de solicitud
Anchor link to{ "message_code": "A444-AAABBBCC-00112233", // Código de mensaje de /createMessage "platforms": [1, 14] // Opcional. iOS, Email}Campos de GetDeliveryFunnelResponse
Anchor link to| Nombre | Tipo | Descripción |
|---|---|---|
channels | Array | Una entrada por cada canal en el que se envió el mensaje. |
window_from, window_to | Cadena o null | El período que cubre el embudo, según los datos disponibles. null cuando funnel_state no es FUNNEL_STATE_READY. |
funnel_state | Cadena | FUNNEL_STATE_READY: el embudo de abajo está completo. FUNNEL_STATE_NO_EVENTS: todavía no ha ocurrido nada para este mensaje. FUNNEL_STATE_EXPIRED: el mensaje se envió hace demasiado tiempo. Sus datos de embudo ya no están disponibles. channels está vacío en ambos casos que no sean READY. Un message_code desconocido, de otra cuenta o eliminado no es uno de estos estados; vea la respuesta 404 a continuación. |
channels[]
| Nombre | Tipo | Descripción |
|---|---|---|
channel | Cadena | CHANNEL_MOBILE_PUSH (iOS, macOS, Android, Amazon, Huawei), CHANNEL_WEB_PUSH (Safari, Chrome, Firefox), CHANNEL_EMAIL, CHANNEL_OTHER (SMS, mensajería, Wallet, Windows, Baidu, Xiaomi), CHANNEL_APP_INBOX. |
funnel | Array | Etapas del embudo para este canal, vea funnel[] abajo. |
deliveries_form | Cadena | Qué desglose lleva la etapa STAGE_DELIVERIES: DELIVERIES_FORM_PER_DEVICE (cuatro filas disjuntas, divididas según si el dispositivo mostraría una alerta y si confirmó) o DELIVERIES_FORM_BASIC (dos filas, sin división por estado de alerta). |
basic_form_reason | Cadena | Solo tiene sentido cuando deliveries_form es DELIVERIES_FORM_BASIC: BASIC_FORM_REASON_RETENTION (el mensaje es demasiado antiguo para un desglose por dispositivo), BASIC_FORM_REASON_UNAVAILABLE (un desglose por dispositivo no está disponible para esta cuenta o mensaje, por ejemplo un mensaje del sistema), BASIC_FORM_REASON_NO_DELIVERIES (nada aceptado todavía), BASIC_FORM_REASON_NOT_APPLICABLE (el canal no tiene ningún estado de alerta, por ejemplo email o App Inbox). De lo contrario BASIC_FORM_REASON_UNSPECIFIED: ignore este campo a menos que deliveries_form sea DELIVERIES_FORM_BASIC. |
confirmed_deliveries | Objeto | count y un desglose por platforms de las entregas confirmadas. No está limitado al conteo de STAGE_DELIVERIES, por lo que puede diferir de él. |
funnel[] (una etapa)
| Nombre | Tipo | Descripción |
|---|---|---|
stage | Cadena | STAGE_AUDIENCE (todos a quienes se dirigió el mensaje), STAGE_SENT (aceptado por el servicio de push o proveedor de email), STAGE_ERRORS (rechazado antes de ser aceptado), STAGE_DELIVERIES (aceptado, dividido por confirmación), STAGE_OPENED (dispositivos únicos que abrieron, o para App Inbox las entradas que el usuario tocó para abrir), STAGE_INTERACTIONS (solo email: clic, cancelación de suscripción, queja), STAGE_REACHED/STAGE_READ (solo App Inbox, reemplazan a STAGE_DELIVERIES). |
count | Cadena | Total de la etapa, como cadena numérica. |
pieces | Array | Desglose propio de la etapa. Vacío en STAGE_ERRORS, que usa errors en su lugar. Cada elemento tiene kind (KIND_PASSED pasó a la siguiente etapa, KIND_REASON no lo hizo, KIND_SUBSET se superpone con los otros dos y nunca se suma), category (vea la lista de valores abajo de cada etapa), count y un desglose por platforms. |
errors | Array | Solo STAGE_ERRORS: category (vea la lista de valores abajo), count, platforms, y codes: los códigos de error del proveedor sin procesar agrupados en esta categoría (platform, code, name, count). Para saber qué significa cada name y cómo solucionarlo, consulte Errores de envío. |
platforms | Array | El total de la etapa, dividido por plataforma. |
Valores de category
STAGE_AUDIENCE:
ELIGIBLE_AUDIENCE(pasó): no excluido por ninguno de los motivos siguientes.FREQUENCY_CAPPING: omitido por límite de frecuencia.CONTROL_GROUP: retenido como grupo de control.UNSUBSCRIBED: el destinatario se había dado de baja.BOUNCED: la dirección del destinatario había rebotado previamente.COMPLAINT: el destinatario había marcado previamente un mensaje como spam.FILTERED_BY_CATEGORY: el destinatario se había excluido de esta categoría de mensaje.
STAGE_ERRORS:
NO_TOKEN: el dispositivo no tenía token de push ni dirección para enviar.NO_DEVICE: no se encontró ningún dispositivo coincidente.PLATFORM_DISABLED: la plataforma está deshabilitada para esta app.INVALID_TOKEN: el proveedor rechazó el token del dispositivo o la dirección por inválido.QUOTA_EXCEEDED: el proveedor limitó la velocidad de envío.INVALID_CONTENT: el mensaje no pudo enviarse tal como se compuso. Con mayor frecuencia, la plantilla misma no logró construirse, por ejemplo un bloque de Connected Content o Liquid roto, en lugar de ser rechazado por el proveedor.INVALID_CONFIGURATION: la configuración propia del proveedor de la cuenta está rota, por ejemplo credenciales incorrectas, un proyecto de Firebase eliminado, o un topic de APNs no permitido.PROVIDER_ERROR: el proveedor devolvió un error fuera de las categorías anteriores.INTERNAL_ERROR: Pushwoosh no pudo procesar el envío.UNCLASSIFIED_ERROR: un abandono que no coincide con ninguna de las categorías anteriores. Se espera que sea poco frecuente.
STAGE_DELIVERIES, DELIVERIES_FORM_PER_DEVICE:
DISPLAYABLE_CONFIRMED(pasó): el dispositivo mostró una alerta y confirmó la recepción.DISPLAYABLE_NO_CONFIRMATION: el dispositivo mostraría una alerta pero aún no ha confirmado la recepción.NOT_DISPLAYABLE_CONFIRMED(pasó): un push silencioso confirmó la recepción.NOT_DISPLAYABLE_NO_CONFIRMATION: un push silencioso aún no ha confirmado la recepción.
STAGE_DELIVERIES, DELIVERIES_FORM_BASIC:
CONFIRMED_BY_DEVICE(pasó): el dispositivo confirmó la recepción.NO_CONFIRMATION: aún no confirmado.
El email además añade, como subconjunto que se superpone con CONFIRMED_BY_DEVICE:
BOUNCED_HARD(subconjunto): la dirección no se puede entregar de forma permanente.BOUNCED_SOFT(subconjunto): la dirección no se puede entregar temporalmente, por ejemplo un buzón lleno.
BOUNCED_HARD también puede dividirse en estas filas de subconjunto:
BOUNCED_HARD_GENERAL: no se puede entregar de forma permanente, sin motivo más específico disponible.BOUNCED_HARD_MAILBOX_FULL: el buzón del destinatario está lleno.BOUNCED_HARD_MAILBOX_INACTIVE: el buzón del destinatario ya no existe.BOUNCED_HARD_SUPPRESSED: el proveedor tiene la dirección en una lista de bloqueo.BOUNCED_HARD_UNDETERMINED: no se puede entregar de forma permanente, motivo no determinado.
BOUNCED_SOFT también puede dividirse en estas filas de subconjunto:
BOUNCED_SOFT_GENERAL: no se puede entregar temporalmente, sin motivo más específico disponible.BOUNCED_SOFT_MAILBOX_FULL: el buzón del destinatario estaba lleno en el momento del envío.BOUNCED_SOFT_CONTENT_REJECTED: el servidor de correo del destinatario rechazó el contenido del mensaje.BOUNCED_SOFT_SPAM: el servidor de correo del destinatario marcó el mensaje como spam.BOUNCED_SOFT_MESSAGE_TOO_LARGE: el mensaje era demasiado grande para el buzón del destinatario.BOUNCED_SOFT_ATTACHMENT_REJECTED: el servidor de correo del destinatario rechazó un adjunto.BOUNCED_SOFT_CUSTOM_TIMEOUT_EXCEEDED: el servidor de correo del destinatario tardó demasiado en responder.BOUNCED_SOFT_UNDETERMINED: no se puede entregar temporalmente, motivo no determinado.BOUNCED_UNDETERMINED: el servidor del destinatario aceptó el email pero nunca confirmó la entrega; el resultado es desconocido y la dirección no está suprimida. Cuenta como rebote suave.
BOUNCED_UNCLASSIFIED es un rebote, duro o suave, que no coincide con ningún subtipo anterior. Se espera que sea poco frecuente, y no es un valor sobre el que construir lógica.
STAGE_OPENED, solo email (otros canales reportan el count de la etapa sin piezas):
OPENED_BY_RECIPIENT(pasó): abierto por una persona.MACHINE_OPENS_ONLY: abierto solo por un escáner automatizado.OPEN_TYPE_UNKNOWN: no se pudo clasificar como persona o escáner.MACHINE_OPENS_AMPP(subconjunto): reemplaza a las tres filas anteriores cuando la división persona/escáner no está disponible para este mensaje. En su lugar cuenta el propio número de aperturas automáticas de Apple Mail Privacy Protection, y se superpone con el total de la etapa.
STAGE_INTERACTIONS, solo email:
CLICKED_ONLY(pasó): hizo clic en un enlace, se mantuvo suscrito.CLICKED_AND_UNSUBSCRIBED: hizo clic en un enlace y se dio de baja.CLICKED_AND_COMPLAINED: hizo clic en un enlace y marcó el mensaje como spam.UNSUBSCRIBED_WITHOUT_CLICK: se dio de baja sin hacer clic.COMPLAINED_WITHOUT_CLICK: marcó el mensaje como spam sin hacer clic.
STAGE_REACHED, solo App Inbox:
REACHED(pasó): la entrada fue obtenida por la app al menos una vez.NOT_FETCHED_YET: aún no obtenida.
STAGE_READ, solo App Inbox:
READ(pasó): marcada como leída.DISMISSED_UNREAD: eliminada por el usuario sin ser leída.UNREAD: todavía sin leer en la bandeja de entrada.EXPIRED_UNREAD: igual queUNREAD, pero la entrada desde entonces ha expirado y salió de la bandeja de entrada.DISMISSED(subconjunto): cada entrada eliminada, leída o no. Se superpone conREADyDISMISSED_UNREAD.
Códigos de respuesta
{ "channels": [{ "channel": "CHANNEL_MOBILE_PUSH", "funnel": [ { "stage": "STAGE_AUDIENCE", "count": "10000", "pieces": [ { "kind": "KIND_PASSED", "category": "ELIGIBLE_AUDIENCE", "count": "10000", "platforms": [{ "platform": 1, "count": "10000" }] } ], "errors": [], "platforms": [{ "platform": 1, "count": "10000" }] }, { "stage": "STAGE_SENT", "count": "9820", "pieces": [], "errors": [], "platforms": [{ "platform": 1, "count": "9820" }] }, { "stage": "STAGE_ERRORS", "count": "180", "pieces": [], "errors": [ { "category": "INVALID_TOKEN", "count": "180", "platforms": [{ "platform": 1, "count": "180" }], "codes": [ { "platform": 1, "code": 1002, "name": "BadDeviceToken", "count": "180" } ] } ], "platforms": [{ "platform": 1, "count": "180" }] }, { "stage": "STAGE_DELIVERIES", "count": "9820", "pieces": [ { "kind": "KIND_PASSED", "category": "DISPLAYABLE_CONFIRMED", "count": "8000", "platforms": [{ "platform": 1, "count": "8000" }] }, { "kind": "KIND_REASON", "category": "DISPLAYABLE_NO_CONFIRMATION", "count": "820", "platforms": [{ "platform": 1, "count": "820" }] }, { "kind": "KIND_PASSED", "category": "NOT_DISPLAYABLE_CONFIRMED", "count": "900", "platforms": [{ "platform": 1, "count": "900" }] }, { "kind": "KIND_REASON", "category": "NOT_DISPLAYABLE_NO_CONFIRMATION", "count": "100", "platforms": [{ "platform": 1, "count": "100" }] } ], "errors": [], "platforms": [{ "platform": 1, "count": "9820" }] }, { "stage": "STAGE_OPENED", "count": "3120", "pieces": [], "errors": [], "platforms": [{ "platform": 1, "count": "3120" }] } ], "deliveries_form": "DELIVERIES_FORM_PER_DEVICE", "basic_form_reason": "BASIC_FORM_REASON_UNSPECIFIED", "confirmed_deliveries": { "count": "8900", "platforms": [{ "platform": 1, "count": "8900" }] } }], "window_from": "2026-09-01T00:00:00Z", "window_to": "2026-09-01T00:05:00Z", "funnel_state": "FUNNEL_STATE_READY"}Un array channels vacío con funnel_state: "FUNNEL_STATE_NO_EVENTS" significa que todavía no ha ocurrido nada para este mensaje. Esto no es un error. Un message_code enviado hace demasiado tiempo para que los datos del embudo estén disponibles también devuelve 200, con un array channels vacío y funnel_state: "FUNNEL_STATE_EXPIRED".
Un message_code desconocido, que pertenece a otra cuenta, o que ya ha sido eliminado:
{ "error": "message not found"}{ "error": "invalid auth token"}getCampaignDeliveryFunnel
Anchor link toSuma getDeliveryFunnel sobre los mensajes de una campaña. Los conteos únicos se calculan por mensaje: un suscriptor alcanzado por varios mensajes de la campaña se cuenta una vez por cada mensaje.
POST https://api.pushwoosh.com/api/v2/statistics/messages/getCampaignDeliveryFunnel
Encabezados
Anchor link to| Nombre | Requerido | Descripción |
|---|---|---|
Authorization | Sí | Token de API de servidor. Debe proporcionarse en el siguiente formato: Authorization: Api <Server Key>. |
Parámetros del cuerpo de la solicitud
Anchor link to| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
campaign_code | Sí | Cadena | Código de campaña. |
platforms | No | Array de enteros | Códigos de plataforma para filtrar el embudo. Omita para devolver todas las plataformas a las que se envió la campaña. |
Ejemplo de solicitud
Anchor link to{ "campaign_code": "AAAAA-XXXXX", // Código de campaña "platforms": [1, 14] // Opcional. iOS, Email}Respuesta
Anchor link toMisma forma que GetDeliveryFunnelResponse arriba.
Códigos de respuesta
Una audiencia vacía para el campaign_code y platforms dados también devuelve 200 con un array channels vacío y funnel_state: "FUNNEL_STATE_NO_EVENTS". Una campaña enviada hace demasiado tiempo para que los datos del embudo estén disponibles también devuelve 200, con un array channels vacío y funnel_state: "FUNNEL_STATE_EXPIRED". Ninguno de los dos es un error.
Un campaign_code desconocido, que pertenece a otra cuenta, o cuyos mensajes han sido eliminados en su totalidad. Una campaña con solo algunos mensajes eliminados no se ve afectada: los eliminados siguen contando para su embudo.
{ "error": "campaign not found"}{ "error": "invalid auth token"}getMessageLog
Anchor link toMuestra información detallada sobre los mensajes enviados.
POST https://api.pushwoosh.com/api/v2/statistics/getMessageLog
Cabeceras
Anchor link to| Nombre | Requerido | Descripción |
|---|---|---|
Authorization | Requerido | Token de acceso a la API del Panel de Control de Pushwoosh. |
Parámetros del cuerpo de la solicitud
Anchor link to| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
message_id | No | Integer | Selecciona eventos de mensajes por ID de mensaje obtenido del historial de mensajes. Ejemplo: 12345678900. |
message_code | No | String | Selecciona eventos de mensajes por Código de mensaje obtenido de las respuestas de la API /createMessage. Ejemplo: "A444-AAABBBCC-00112233". |
campaign_code | No | String | Selecciona eventos de mensajes por Código de campaña especificado en la carga útil de tu mensaje. Ejemplo: "AAAAA-XXXXX". |
hwid | No | String o Array | Selecciona eventos de mensajes por HWID (Hardware ID) o un array de HWIDs. |
date_from | Requerido si no se proporciona message_id, message_code o campaign_code | Datetime | Fecha de inicio para filtrar mensajes. Formato: "YYYY-MM-DD HH:MM:SS". Ejemplo: "2000-01-25 00:00:00". |
date_to | Requerido si no se proporciona message_id, message_code o campaign_code | Datetime | Fecha de fin para filtrar mensajes. Formato: "YYYY-MM-DD HH:MM:SS". Ejemplo: "2000-01-26 00:00:00". |
limit | No | Integer | Número máximo de eventos de mensaje devueltos en una sola respuesta. Valor máximo: 100000. |
pagination_token | No | String | Token de paginación obtenido de una respuesta /getMessageLog anterior. Úsalo para recuperar resultados adicionales. |
user_id | No | String | Selecciona eventos de mensajes por un ID de usuario personalizado. Consulta /registerUser para más detalles. |
application_code | Sí | String | Selecciona eventos de mensajes por código de aplicación de Pushwoosh |
actions | No | Array | Filtra los resultados por acciones de mensaje específicas. Valores posibles: "sent", "delivered", "opened", "reject", "create", "inbox_delivered", "inbox_read", "inbox_opened", "inbox_deleted". Los eventos "create" se excluyen de la respuesta por defecto. Incluye "create" en este array para verlos. Los eventos "delivered" requieren adicionalmente que las estadísticas de entrega estén habilitadas en la cuenta. |
platforms | No | Array | Array de plataformas de destino para filtrar los resultados. Valores posibles: "unknown", "ios", "blackberry", "android", "windows phone", "osx", "windows", "amazon", "safari", "chrome", "firefox", "ie", "email", "fb messenger", "baidu android", "huawei android", "sms", "xiaomi", "web", "whatsapp", "line", "kakao", "telegram", "apple wallet", "google wallet", "viber". |
message_type | No | String | Filtra los resultados por flujo de mensajes. "all" (predeterminado si se omite) devuelve todo, "broadcast" devuelve solo mensajes masivos (message_id != 0), "transactional" devuelve solo mensajes con message_id = 0, incluidos los enviados desde Customer Journey. |
Solicitud de ejemplo
Anchor link tocurl --location --request POST 'https://api.pushwoosh.com/api/v2/statistics/getMessageLog' \--header 'Authorization: Key API_ACCESS_TOKEN' \--header 'Content-Type: application/json' \--data-raw '{ "pagination_token": "PAGINATION_TOKEN_FROM_PREVIOUS_RESPONSE", // opcional, token para paginación "limit": 1000, // opcional, el número máximo de entradas para una sola respuesta "application_code": "XXXXX-XXXXX", // Código de aplicación de Pushwoosh "message_code": "A444-AAABBBCC-00112233", // opcional, código de mensaje obtenido de la solicitud /createMessaage "message_id": 1234567890, // opcional, ID de mensaje obtenido del Panel de Control de Pushwoosh "campaign_code": "AAAAA-XXXXX", // opcional, código de una campaña para obtener el registro "hwid": "aaazzzqqqqxxx", // opcional, ID de hardware de un dispositivo específico al que se dirige un mensaje "user_id": "user_123", // opcional, ID de un usuario al que se dirige el mensaje "date_from": "2000-01-25 00:00:00", // opcional, inicio del período de estadísticas "date_to": "2000-02-10 23:59:59", // opcional, fin del período de estadísticas "actions": ["opened", "inbox_opened"], // opcional, utilizado para la filtración de resultados. Valores posibles: "sent", "delivered", "opened", "reject", "create", "inbox_delivered", "inbox_read", "inbox_opened", "inbox_deleted". La respuesta incluirá todos los mensajes con la(s) acción(es) especificada(s). "platforms": ["ios", "chrome"], // opcional, utilizado para la filtración de resultados, solo en minúsculas. Valores posibles: "unknown", "ios", "blackberry", "android", "windows phone", "osx", "windows", "amazon", "safari", "chrome", "firefox", "ie", "email", "fb messenger", "baidu android", "huawei android", "sms", "xiaomi", "web", "whatsapp", "line", "kakao", "telegram", "apple wallet", "google wallet", "viber" "message_type": "broadcast" // opcional, "all" (predeterminado), "broadcast" (message_id != 0), o "transactional" (message_id = 0, incluye envíos de Customer Journey)}'Códigos de respuesta y ejemplos
{ "pagination_token": "PAGINATION_TOKEN_FOR_NEXT_REQUEST", "data": [{ "timestamp": "2000-01-25T11:18:47Z", "application_code": "XXXXX-XXXXX", "message_id": 12345678900, "message_code": "A444-AAABBBCC-00112233", "campaign_code": "AAAAA-XXXXX", "hwid": "aaazzzqqqqxxx", "user_id": "user_123", "platform": "android", "action": "sent", "status": "success", "push_alerts_enabled": "true" }, { "timestamp": "2000-01-25T11:18:49Z", "application_code": "XXXXX-XXXXX", "message_id": 12345678900, "message_code": "A444-AAABBBCC-00112233", "campaign_code": "AAAAA-XXXXX", "hwid": "aaazzzqqqqxxx", "user_id": "user_123", "platform": "android", "action": "delivered", "push_alerts_enabled": "true" }, { "timestamp": "2000-01-25T11:19:23Z", "application_code": "XXXXX-XXXXX", "message_id": 12345678900, "message_code": "A444-AAABBBCC-00112233", "campaign_code": "AAAAA-XXXXX", "hwid": "aaazzzqqqqxxx", "user_id": "user_123", "platform": "android", "action": "opened", "push_alerts_enabled": "true" }, { "timestamp": "2000-01-25T11:19:30Z", "application_code": "XXXXX-XXXXX", "message_id": 12345678900, "message_code": "A444-AAABBBCC-00112233", "campaign_code": "AAAAA-XXXXX", "hwid": "aaazzzqqqqxxx", "user_id": "user_123", "platform": "android", "action": "reject", "status": "failed", "error_reason": "invalid device token", "payload": "SOME_PAYLOAD_STRING" }]}{ "error": "exceeded the maximum date interval. Max interval: 30 days"}{ "error": "account not found"}Cada entrada en data también lleva error_reason (string, poblado con la razón del fallo cuando status es "failed") y un payload opcional (string).
Una página de respuesta puede ser más corta que el limit solicitado. Eso por sí solo no significa que la exportación haya terminado.
Estadísticas de correo electrónico
Anchor link tolinksInteractions
Anchor link toMuestra estadísticas sobre los clics en enlaces en los correos electrónicos
POST https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractions
Cabeceras
Anchor link to| Nombre | Requerido | Descripción |
|---|---|---|
Authorization | Sí | Token de acceso a la API del Panel de Control de Pushwoosh. |
Parámetros del cuerpo de la solicitud
Anchor link to| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
date_range | No | Object | Define el período de informe. Contiene date_from y date_to. |
filters | Sí | Object | Filtros de correo electrónico. |
application | Sí | String | Código de aplicación de Pushwoosh (alternativamente, especifica campaign, messages_ids o message_codes). |
messages_codes | Sí | Array | Códigos de mensaje (alternativamente, especifica application, campaign o messages_ids). |
campaign | Sí | String | Código de campaña (alternativamente, especifica application, messages_ids o message_codes). |
messages_ids | Sí | Array | IDs de mensaje (alternativamente, especifica application, campaign o message_codes). |
link_template | Requerido si se especifica application o campaign. | String | Filtra las interacciones de enlaces de correo electrónico por palabra clave. Solo los enlaces que incluyan el texto especificado en su URL se devolverán en la respuesta de la API. Por ejemplo, si tu correo electrónico contiene enlaces como https://example.com/news y https://example.com/shop, establecer “link_template”: “shop” devolverá interacciones solo para https://example.com/shop. |
email_content_code | No | String | Identificador único para el contenido del correo electrónico. |
params | No | Object | Define opciones de respuesta adicionales. Incluye with_full_links, que añade una lista de enlaces completos con estadísticas. |
Solicitud de ejemplo
Anchor link tocurl --location --request POST 'https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractions' \--header 'Authorization: Api API_ACCESS_TOKEN' \--header 'Content-Type: application/json' \--data-raw '{ "filters": { "date_range": { "date_from": "string", // Formato requerido: 2000-01-01 "date_to": "string" // Formato requerido: 2000-01-01 }, "campaign": "string", // Código de campaña (puedes especificar application, messages_ids o message_codes en su lugar) "application": "string", // Código de aplicación (puedes especificar campaign, messages_ids o message_codes en su lugar) "messages_ids": [], // IDs de mensaje (puedes especificar application, campaign o message_codes en su lugar) "messages_codes": [], // Códigos de mensaje (puedes especificar application, campaign o message_ids en su lugar) "link_template": "string", // Plantilla de enlace (requerida si se especifica application o campaign) "email_content_code": "string" // Identificador único para el contenido del correo electrónico. }, "params": { "with_full_links": true // Especifica si se deben mostrar estadísticas detalladas. Se pasará una lista de enlaces completos con estadísticas en el array full_links. }}'Códigos de respuesta y ejemplos
Anchor link to{ "items": [{ "template": "string", "link": "string", "title": "string", "clicks": 0, "full_links": [{ "full_link": "string", "clicks": 0 }] }]}{ "error": "exceeded the maximum date interval. Max interval: 30 days"}{ "error": "account not found"}linksInteractionsDevices
Anchor link toMuestra los usuarios que hicieron clic en los enlaces de los correos electrónicos
POST https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractionsDevices
Cabeceras
Anchor link to| Nombre | Requerido | Descripción |
|---|---|---|
Authorization | Sí | Token de acceso a la API del Panel de Control de Pushwoosh. |
Parámetros del cuerpo de la solicitud
Anchor link to| Nombre | Requerido | Tipo | Descripción |
|---|---|---|---|
date_range | No | Object | Define el período de informe. Contiene date_from y date_to. |
filters | Sí | Object | Filtros de correo electrónico. |
application | Sí | String | Código de aplicación de Pushwoosh (alternativamente, especifica campaign, messages_ids o message_codes). |
messages_codes | Sí | Array | Códigos de mensaje (alternativamente, especifica application, campaign o messages_ids). |
campaign | Sí | String | Código de campaña (alternativamente, especifica application, messages_ids o message_codes). |
messages_ids | Sí | Array | IDs de mensaje (alternativamente, especifica application, campaign o message_codes). |
link_template | Requerido si se especifica application o campaign. | String | Filtra las interacciones de enlaces de correo electrónico por palabra clave. Solo los enlaces que incluyan el texto especificado en su URL se devolverán en la respuesta de la API. Por ejemplo, si tu correo electrónico contiene enlaces como https://example.com/news y https://example.com/shop, establecer “link_template”: “shop” devolverá interacciones solo para https://example.com/shop. |
email_content_code | No | String | Identificador único para el contenido del correo electrónico. |
page | No | Integer | Número de página para la paginación. |
per_page | No | Integer | Número de resultados por página (≤ 1000). |
Solicitud de ejemplo
Anchor link tocurl --location --request POST 'https://api.pushwoosh.com/api/v2/statistics/emails/linksInteractionsDevices' \--header 'Authorization: Api API_ACCESS_TOKEN' \--header 'Content-Type: application/json' \--data-raw '{ "filters": { "date_range": { "date_from": "string", // Formato requerido: 2000-01-01 "date_to": "string" // Formato requerido: 2000-01-01 }, "campaign": "string", // Código de campaña (puedes especificar application, messages_ids o message_codes en su lugar) "application": "string", // Código de aplicación (puedes especificar campaign, messages_ids o message_codes en su lugar) "messages_ids": [], // IDs de mensaje (puedes especificar application, campaign o message_codes en su lugar) "messages_codes": [], // Códigos de mensaje (puedes especificar application, campaign o message_ids en su lugar) "link_template": "string", // Plantilla de enlace (requerida si se especifica application o campaign) "email_content_code": "string" // Identificador único para el contenido del correo electrónico. }, "per_page": 100, "page": 0}'Códigos de respuesta y ejemplos
Anchor link to{ "total": 0, "items": [{ "timestamp": "string", "link": "string", "hwid": "string" }]}{ "error": "exceeded the maximum date interval. Max interval: 30 days"}{ "error": "account not found"}bouncedEmails
Anchor link toPOST https://api.pushwoosh.com/api/v2/statistics/emails/bouncedEmails
Proporciona datos sobre quejas de correo electrónico, rebotes suaves y rebotes duros, incluyendo la fecha, la dirección de correo electrónico y la razón de cada rebote.
Autorización
Anchor link toLa autorización se maneja a través del Token de Acceso a la API en la cabecera de la solicitud.
Parámetros del cuerpo de la solicitud
Anchor link to| Nombre del parámetro | Tipo | Descripción | Requerido |
|---|---|---|---|
application | string | Código de aplicación de Pushwoosh | Sí |
message_code | string | Código de mensaje. | Requerido si no se proporciona date range o campaign |
campaign | string | Código de campaña. | Requerido si no se proporciona message_code o date range |
date_from | string | La fecha de inicio para los datos en el formato YYYY-MM-DDTHH:MM:SS.000Z (estándar ISO 8601). | Requerido si no se proporciona message_code o campaign |
date_to | string | La fecha de fin para los datos en el formato YYYY-MM-DDTHH:MM:SS.000Z (estándar ISO 8601). | Requerido si no se proporciona message_code o campaign |
per_page | int | El número de filas por página, máximo 5000. | Sí |
page | int | El número de página, comenzando desde cero. | Sí |
type | string | El tipo de rebote: Complaint, Softbounce, Hardbounce. | No |
Solicitud de ejemplo
Anchor link to{ "application": "XXXXX-XXXXX", // requerido. Código de aplicación de Pushwoosh "message_code": "XXXXX-XXXXXXXXX-XXXXXXXX", // requerido si no se proporciona campaign o date range. // Identificador único del mensaje "campaign": "XXXXX-XXXXX", // requerido si no se proporciona message_code o date range. // Código de campaña "date_from": "2024-07-20T00:00:00.000Z", // requerido si no se proporciona message_code o campaign. // Fecha de inicio en formato ISO 8601 "YYYY-MM-DDTHH:MM:SS.SSSZ" "date_to": "2024-07-20T00:00:00.000Z", // requerido si no se proporciona message_code o campaign. // Fecha de fin en formato ISO 8601 "YYYY-MM-DDTHH:MM:SS.SSSZ" "per_page": 1000, // requerido. Número de resultados por página, máximo 5000 "page": 5, // opcional. Número de página, comenzando desde cero "type": "Softbounce" // opcional. El tipo de rebote: Complaint, Softbounce, Hardbounce}Campos de respuesta
Anchor link to| Nombre del campo | Tipo | Descripción |
|---|---|---|
total | int | El recuento total de filas. |
bounced_emails | array | Un array de detalles de correos electrónicos rebotados. |
├── email | string | La dirección de correo electrónico que rebotó. |
├── date | string | La fecha del rebote (formato: YYYY-MM-DDTHH:MM:SS.000Z). |
├── reason | string | La razón del rebote. |
└── type | string | El tipo de rebote: Complaint, Softbounce, Hardbounce. |
Respuesta de ejemplo
Anchor link to{ "total": 25, // Recuento total de filas. "bounced_emails": [{ "email": "example@example.com", // Dirección de correo electrónico que rebotó "date": "2024-07-20T00:00:00.000Z", // Fecha del rebote en formato ISO 8601 "reason": "Invalid recipient address", // Razón del rebote "type": "Hardbounce" // Tipo de rebote: Complaint, Softbounce, Hardbounce }]}