Saltar al contenido

Referencia de payload

Referencia para el mensaje Payload utilizado por Notify al enviar a través de cualquier canal que no sea correo electrónico (push, SMS, Telegram, Kakao, LINE, Viber, WhatsApp).

  • preset (cadena): código del preajuste de push (formato XXXXX-XXXXX) para aplicar a este mensaje.
  • sms_preset (cadena): código (formato XXXXX-XXXXX) de un preajuste de SMS guardado. Su texto por configuración regional se resuelve en el sms.body de cada configuración regional. Un sms.body en línea para una configuración regional dada anula el preajuste para esa configuración regional. El preajuste debe pertenecer a la misma aplicación que el mensaje.
  • content (LocalizedContent): contenido del mensaje. Mutuamente excluyente con silent.
  • silent (booleano): envía un push silencioso (solo datos). Mutuamente excluyente con content.
  • custom_data (objeto): JSON de formato libre reenviado al SDK del cliente como el parámetro u.
  • open_action (OpenAction): acción que se activa cuando el usuario abre la notificación.
  • open_actions (mapa<Platform, OpenAction>): anulación por plataforma de open_action. La clave es un valor numérico del enum Platform.
  • voip_push (booleano): notificación VoIP de iOS.
{
"payload": {
"preset": "XXXXX-XXXXX",
"content": { "localized_content": { "default": { "ios": { "title": "Hello", "body": "Tap to view" } } } },
"custom_data": { "order_id": "42" },
"open_action": { "link": { "url": "https://example.com/promo" } }
}
}

LocalizedContent

Anchor link to

Mapea el código de configuración regional al contenido por plataforma. Las claves son códigos de dos letras ISO 639-1 (por ejemplo, "en", "es") más la clave especial "default" para una traducción general. Las excepciones a ISO 639-1 son "zh-Hant" y "zh-Hans" para chino tradicional y simplificado.

{
"localized_content": {
"default": {
"ios": { "title": "Hello", "body": "Tap to view" },
"android": { "title": "Hello", "body": "Tap to view" }
},
"es": {
"ios": { "title": "Hola", "body": "Toca para ver" },
"android": { "title": "Hola", "body": "Toca para ver" }
}
}
}

Selección de configuración regional para un dispositivo

Anchor link to

El contenido entregado a un dispositivo se elige en este orden:

  1. Coincidencia exacta con el idioma del dispositivo.
  2. Clave "default".
  3. Clave "en".
  4. Cualquier otra configuración regional presente en el mapa.

Proporciona al menos uno de "default" o "en" para que cada dispositivo tenga una alternativa determinista. Si no esperas variantes por configuración regional, envía solo "default".

Cada entrada de configuración regional es un objeto Content con bloques opcionales por plataforma. Solo completa las plataformas a las que te diriges.

Bloque de plataformaCanal
iosPush de iOS
androidPush de Android (FCM)
huawei_androidPush de Huawei Android
baidu_androidPush de Baidu Android
mac_osPush de macOS
amazonPush de Amazon (ADM)
safariPush web de Safari
chromePush web de Chrome
firefoxPush web de Firefox
iePush web de Internet Explorer
windowsPush de Windows (tile / toast / badge)
telegramMensaje de Telegram
kakaoMensaje de Kakao
lineMensaje de LINE
viberMensaje de Viber
whatsappMensaje de WhatsApp
smsMensaje SMS

Campos comunes de push

Anchor link to

Estos campos son compartidos por los bloques ios, android, huawei_android, baidu_android, mac_os, amazon, safari, chrome y firefox (el soporte varía. Los campos no utilizados son ignorados por la plataforma correspondiente).

  • title (cadena): título de la notificación.
  • body (cadena): cuerpo de la notificación.
  • time_to_live (duración, ej. "3600s"): cuánto tiempo debe retener el servidor de push la notificación para un dispositivo sin conexión.
  • sound (cadena): nombre del archivo de sonido.
  • sound_enabled (booleano): activa o suprime el sonido.
  • badges (cadena): recuento de insignias (iOS) o análogo.
  • root_params (objeto): anulaciones de payload sin procesar específicas de la plataforma.
  • inbox (Inbox): entrada en la Bandeja de entrada de mensajes.
{
"android": {
"title": "Hello",
"body": "Tap to view",
"time_to_live": "3600s",
"sound": "default",
"sound_enabled": true,
"badges": "+1"
}
}
  • subtitle (cadena): subtítulo de la notificación de iOS.
  • is_critical (booleano): alerta crítica (requiere autorización).
  • attachment (cadena): URL de un adjunto multimedia.
  • thread_id (cadena): identificador de hilo para notificaciones agrupadas.
  • trim_content (booleano): recorta el contenido para que quepa.
  • category_id (cadena): identificador UNNotificationCategory para acciones interactivas.
  • interruption_level (cadena): passive, active, time-sensitive o critical.
  • collapse_id (cadena): identificador de colapso de APNs. Las notificaciones con el mismo collapse_id se reemplazan entre sí en el dispositivo.
{
"ios": {
"title": "Hello",
"body": "Tap to view",
"subtitle": "New update",
"attachment": "https://cdn.example.com/image.png",
"interruption_level": "active",
"thread_id": "promo"
}
}

Android (android, huawei_android, baidu_android)

Anchor link to
  • icon (cadena): icono pequeño de la notificación.
  • banner (cadena): URL de imagen grande.
  • delivery_priority (NORMAL | HIGH): prioridad de entrega de FCM.
  • vibration (booleano): vibración al recibir.
  • led_color (cadena, hexadecimal): color del LED de notificación.
  • icon_background_color (cadena, hexadecimal): color de fondo del icono.
  • show_on_lockscreen (booleano): mostrar en la pantalla de bloqueo.
  • custom_icon (cadena): URL de un icono personalizado.
  • priority (NotificationPriority): prioridad en la bandeja.
  • group_id (cadena): clave de grupo de notificación.
  • collapse_key (cadena): clave de colapso de FCM. Las notificaciones con la misma collapse_key se reemplazan entre sí mientras el dispositivo está sin conexión.
{
"android": {
"title": "Hello",
"body": "Tap to view",
"icon": "ic_notification",
"banner": "https://cdn.example.com/banner.png",
"led_color": "#FF0000",
"priority": "PRIORITY_HIGH",
"delivery_priority": "HIGH"
}
}

macOS (mac_os)

Anchor link to

Utiliza los campos comunes de push más subtitle y action (URL que se abre cuando el usuario hace clic en la notificación).

{
"mac_os": {
"title": "Hello",
"body": "Tap to view",
"subtitle": "New update",
"action": "https://example.com/promo"
}
}

Amazon (amazon)

Anchor link to

Utiliza los campos comunes de push más custom_icon y priority (NotificationPriority).

{
"amazon": {
"title": "Hello",
"body": "Tap to view",
"custom_icon": "https://cdn.example.com/icon.png",
"priority": "PRIORITY_HIGH"
}
}

Safari (safari)

Anchor link to
  • action (cadena): URL que se abre cuando el usuario hace clic en la notificación.
  • url_arguments (array de cadenas): argumentos de URL de Safari sustituidos en la plantilla de URL de Web Push.
{
"safari": {
"title": "Hello",
"body": "Tap to view",
"action": "https://example.com/promo",
"url_arguments": ["promo", "2026"]
}
}

Chrome (chrome)

Anchor link to
  • icon, image (cadena): URLs de icono pequeño e imagen grande.
  • duration (duración): temporizador de cierre automático.
  • button_text1 / button_url1, button_text2 / button_url2: hasta dos botones de acción.
{
"chrome": {
"title": "Hello",
"body": "Tap to view",
"icon": "https://cdn.example.com/icon.png",
"image": "https://cdn.example.com/banner.png",
"duration": "20s",
"button_text1": "Open",
"button_url1": "https://example.com/promo"
}
}

Firefox (firefox)

Anchor link to

Utiliza solo title, body, icon, root_params e inbox.

{
"firefox": {
"title": "Hello",
"body": "Tap to view",
"icon": "https://cdn.example.com/icon.png"
}
}

Windows (windows)

Anchor link to

Windows utiliza una forma diferente:

{
"windows": {
"type": "TOAST",
"template": { "title": "Hello", "body": "Tap to view" },
"tag": "promo",
"cache": true,
"time_to_live": "3600s"
}
}
  • type es TILE, TOAST o BADGE.
  • template (estructurado) o raw ({ "content": "<raw xml>" }) — exactamente uno.

Telegram (telegram)

Anchor link to
  • body (cadena): texto del mensaje.
  • content_variables (cadena): variables en formato de cadena JSON para la plantilla del lado del bot.
{
"telegram": {
"body": "Hello from Pushwoosh",
"content_variables": "{\"name\":\"John\"}"
}
}

Kakao (kakao)

Anchor link to
  • content (cadena): contenido del mensaje.
  • template (cadena): código de plantilla aprobado.
  • content_variables (cadena): enlaces de variables de plantilla en formato de cadena JSON.
{
"kakao": {
"content": "Hello from Pushwoosh",
"template": "welcome_v1",
"content_variables": "{\"name\":\"John\"}"
}
}

LINE (line)

Anchor link to
  • content (cadena): cuerpo de texto sin formato.
  • template (cadena): código de una plantilla de LINE configurada en el Panel de Control de Pushwoosh (utilizada para enviar mensajes de imagen, carrusel o flexibles). Para contenido enriquecido, preconfigura la plantilla en el Panel de Control y haz referencia a ella aquí.

Se debe establecer al menos uno de content o template.

{
"line": {
"content": "Hello from Pushwoosh",
"template": "promo_carousel"
}
}

Viber (viber)

Anchor link to

Un mensaje de Viber es un cuerpo de texto libre o una plantilla transaccional preaprobada (Omni Messaging / MStat) a la que se hace referencia por id e idioma.

  • body (cadena): mensaje de texto sin formato. Requerido cuando template_id no está establecido.
  • template_id (cadena): id de una plantilla transaccional preaprobada. Cuando se establece, tiene prioridad sobre body.
  • template_lang (cadena): configuración regional de la plantilla. Requerido cuando template_id está establecido.
  • template_params (mapa<cadena, cadena>): enlaces de clave/valor sustituidos en la plantilla, ej. { "name": "John", "code": "123456" }.
  • all_devices (booleano): false (predeterminado) entrega solo al dispositivo principal del usuario; true entrega a todos los dispositivos del usuario.

Se debe establecer al menos uno de body o template_id. Cuando se establece template_id, se requiere template_lang.

Dirígete a los destinatarios de Viber como hwids en la forma viber:<phone> (E.164), por ejemplo viber:+1234567890.

Texto sin formato:

{
"viber": {
"body": "Hello from Pushwoosh"
}
}

Plantilla transaccional:

{
"viber": {
"template_id": "e3dec4a0-c063-4b0f-96d5-cf9d629a7abe",
"template_lang": "en",
"template_params": {
"name": "John",
"code": "123456",
"expires_in": "5 minutes"
},
"all_devices": false
}
}

WhatsApp (whatsapp)

Anchor link to

Los mensajes de WhatsApp pasan por Meta y están sujetos a las reglas de mensajería de Meta. La división clave es entre texto de formato libre (solo se entrega dentro de la ventana de servicio al cliente de 24 horas abierta por un mensaje entrante del usuario) y plantillas aprobadas (requeridas para la iniciación saliente y para cualquier mensaje fuera de la ventana de 24 horas).

  • content (cadena): texto del mensaje de formato libre. Entregado por Meta solo dentro de la ventana de 24 horas.
  • content_id (cadena): nombre de una plantilla de Meta preaprobada (ej. "hello_world"). Requerido para la iniciación saliente o cualquier mensaje fuera de la ventana de 24 horas.
  • language (cadena): configuración regional de la plantilla que debe coincidir exactamente con la configuración regional aprobada en Meta (ej. "en_US", "en_GB"). Solo tiene sentido junto con content_id. Esto es independiente de la clave externa LocalizedContent. La clave externa selecciona el contenido para un dispositivo, y language selecciona la configuración regional de la plantilla de Meta para ese contenido.
  • content_variables (cadena): objeto JSON que mapea los marcadores de posición del cuerpo, ej. "{\"1\":\"John\"}".
  • button_url_variables (cadena): objeto JSON que mapea los marcadores de posición de la URL del botón con clave por índice de botón, ej. "{\"0\":\"https://...\"}".
  • header_variables (cadena): objeto JSON que mapea los marcadores de posición del encabezado con clave por tipo, ej. "{\"image\":\"https://...\"}".

Se debe establecer al menos uno de content o content_id.

{
"whatsapp": {
"content_id": "hello_world",
"language": "en_US",
"content_variables": "{\"1\":\"John\"}"
}
}

SMS tiene su propio bloque de plataforma dentro del Content de cada configuración regional, junto con ios, android y los otros canales de mensajería.

  • body (cadena): texto del SMS para la configuración regional. Requerido cuando el bloque sms está presente.

Hay dos formas de proporcionar el texto:

  • En línea — establece sms.body por configuración regional en localized_content.
  • Desde un preajuste — establece el sms_preset a nivel de payload al código (formato XXXXX-XXXXX) de un preajuste de SMS guardado. Su contenido por configuración regional se resuelve en sms.body para cada configuración regional que define el preajuste. Un sms.body en línea para una configuración regional anula el preajuste para esa configuración regional, por lo que puedes reutilizar un preajuste y aun así ajustar idiomas individuales.
{
"payload": {
"sms_preset": "XXXXX-XXXXX",
"content": {
"localized_content": {
"default": { "sms": { "body": "Your order has shipped." } },
"es": { "sms": { "body": "Tu pedido ha sido enviado." } }
}
}
}
}

OpenAction

Anchor link to

Define la acción realizada cuando el usuario abre el mensaje.

Exactamente uno de:

  • rich_media (RichMedia): abre una página de Rich Media.
  • deep_link: abre un deep link: { "code": "flow-code", "params": { "key": "value" } }.
  • link (Link): abre una URL.
{
"open_action": {
"deep_link": { "code": "flow-code", "params": { "promo": "summer" } }
}
}
{ "code": "XXXXX-XXXXX" } // por código de Rich Media
{ "url": "https://..." } // por URL remota
{
"url": "https://example.com/promo",
"shortener": "BITLY"
}

shortener es NONE (predeterminado) o BITLY.

Configura cómo aparece el mensaje en la Bandeja de entrada de mensajes.

{
"image_url": "https://cdn.example.com/inbox.png",
"expiration_date": "2026-05-15T00:00:00Z"
}
  • image_url (cadena): imagen que se muestra en la entrada de la bandeja de entrada.
  • expiration_date (marca de tiempo): cuándo se elimina la entrada de la bandeja de entrada.

Enum NotificationPriority

Anchor link to

Controla la prioridad de la notificación en el dispositivo de destino, desde PRIORITY_MIN (la más baja) hasta PRIORITY_MAX (la más alta).

  • PRIORITY_UNSPECIFIED
  • PRIORITY_MIN
  • PRIORITY_LOW
  • PRIORITY_DEFAULT
  • PRIORITY_HIGH
  • PRIORITY_MAX

Ejemplo: Enviar un push a un segmento

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"segment": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"code": "active_users",
"payload": {
"content": {
"localized_content": {
"en": {
"ios": { "title": "Hello", "body": "Hello, world!" },
"android": { "title": "Hello", "body": "Hello, world!" }
},
"es": {
"ios": { "title": "¡Hola!", "body": "¡Hola, mundo!" },
"android": { "title": "¡Hola!", "body": "¡Hola, mundo!" }
}
}
},
"open_action": { "link": { "url": "https://example.com/promo" } }
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_MARKETING"
}
}'

Ejemplo: Push transaccional por ID de usuario

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transactional": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"users": { "list": ["customer-42"] },
"payload": {
"content": {
"localized_content": {
"default": {
"ios": { "title": "Your order", "body": "Order #42 has shipped." },
"android": { "title": "Your order", "body": "Order #42 has shipped." }
}
}
},
"custom_data": { "order_id": "42" }
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_TRANSACTIONAL"
}
}'