Saltar al contenido principal
Los Feeds de datos te permiten extraer datos en tiempo real desde tus APIs directamente a los mensajes en el momento del envío. Esto te permite entregar contenido altamente personalizado sin precargar datos en OneSignal. Usa Feeds de datos cuando tus datos cambien con frecuencia, como:
  • El saldo actual de recompensas de un usuario
  • El estado más reciente del pedido
  • Recomendaciones de productos personalizadas
Otros métodos de personalización (como Etiquetas o Contenido dinámico) son excelentes para datos estáticos. Los Feeds de datos son mejores para valores en vivo que cambian rápidamente.
Los Feeds de datos están disponibles actualmente solo para mensajes de correo electrónico enviados a través de Journeys. ¿Necesitas otro canal? Completa esta breve encuesta.

Cómo funcionan los Feeds de datos

  1. Crea un Feed de datos – Configura cómo OneSignal se conecta a tu API.
  2. Adjunta el Feed de datos a una plantilla de mensaje.
  3. Inserta campos de respuesta en tu mensaje usando sintaxis Liquid.
  4. En el momento del envío, OneSignal hace una llamada a la API para cada destinatario, analiza la respuesta e inyecta los datos en tu mensaje.

Ejemplo: Mostrar puntos de recompensa

Supongamos que deseas mostrar a cada cliente su saldo de recompensas:
Hola {{ first_name }},

¡Tienes {{ data_feed.rewards.points }} puntos!
Tu estado de membresía es {{ data_feed.rewards.status_level }}.

¡Sigue comprando para ganar más puntos!
Cuando Sarah reciba este correo electrónico, las variables Liquid serán reemplazadas con su saldo real de puntos y estado de membresía. Las siguientes secciones describen cómo configurar este ejemplo paso a paso.

Crear y usar un Feed de datos

1. Configurar tu Feed de datos

Navega a Data > Data Feeds en la barra lateral para ver la lista de Feeds de datos existentes y crear uno nuevo. Cada Feed de datos debe tener:
  • Name: Un nombre descriptivo como “Customer Rewards API” para ayudarte a distinguirlo en tu lista de feeds. Se recomienda que sean únicos, pero no es obligatorio.
  • Alias: Un identificador corto como rewards que se usa en la sintaxis Liquid (p. ej., {{ data_feed.rewards.points }}). Debe ser único, en minúsculas, alfanumérico, sin espacios ni caracteres especiales.
  • Method: El método HTTP que OneSignal usa para contactar tu API. Por lo general es GET, pero también se admite POST.
  • URL: Tu endpoint de API. Admite sintaxis Liquid para que OneSignal pueda obtener datos específicos del usuario.
Por ejemplo, tu endpoint de recompensas podría aceptar el external_id del usuario (almacenado en OneSignal) como parámetro de URL:
https://acme.com/customers/user_id={{ external_id }}/rewards
  • Headers: Pares clave-valor requeridos por tu API (p. ej., tokens de autenticación). Admite sintaxis Liquid.
  • Body: Cuerpo de solicitud JSON opcional. Admite sintaxis Liquid, igual que los webhooks de Journey.
Por ejemplo, tu API podría requerir el ID del usuario en el cuerpo de la solicitud en lugar de la URL:
{
	"customer_id": "{{ subscription.external_id }}"
}
Una configuración completa de Feed de datos se ve así:
Data Feed configuration showing name, alias, method, URL, and headers
Prueba tu feed antes de usarlo en producción. Las pruebas del Feed de datos se ejecutan contra tus suscripciones de prueba, así que verifica que esas suscripciones tengan atributos que devuelvan un resultado real de tu API.
Finalmente, activa tu nuevo Feed de datos para que esté listo para usar.

2. Adjuntar el Feed de datos a tu plantilla de mensaje

Adjunta tu Feed de datos a tu plantilla de mensaje para que OneSignal sepa usarlo.
  1. Navega a Messages > Templates
  2. En la sección Message, selecciona el botón Personalization
Personalization button in the message template editor
  1. Activa Data Feeds y selecciona tu feed
Data Feeds toggle and feed selector in the message composer
  1. Guarda tu plantilla

3. Usar los datos en tu mensaje

Usa sintaxis Liquid para insertar los datos de respuesta en cualquier lugar de tu mensaje. Continuando con el ejemplo de recompensas, la respuesta de la API para Sarah (cuyo external_id es a1-b2c3) podría verse así:
{
	"external_id": "a1-b2c3",
	"points": 193,
	"status_level": "Gold"
}
Para insertar el número de puntos y el nivel de estado, usa notación de puntos para referenciar el alias del Feed de datos y los campos de respuesta:
¡Tienes {{ data_feed.rewards.points }} puntos!
Tu estado de membresía es {{ data_feed.rewards.status_level }}.
Esto le dice a OneSignal:
  • Usa un Feed de datos
  • Usa el Feed de datos rewards
    • Recuerda: el feed rewards sabe llamar a la API con el external_id del destinatario
  • De la respuesta, inserta el valor del elemento points (193) y el elemento status_level (Gold)

Requisitos y límites

Tu API necesita:
  • Aceptar autenticación de un solo paso con tokens de autenticación en encabezados
  • Responder rápidamente. Se recomienda menos de 250ms (esto afecta directamente la velocidad de envío)
  • Devolver JSON. Otros formatos no están soportados en este momento.
  • Manejar tu volumen de envío. Un límite de tasa bajo en tu API ralentiza la entrega de mensajes.
  • Devolver cargas útiles de tamaño razonable. Mantén las respuestas por debajo de 50 KB para un mejor rendimiento.
Límites actuales:
  • Un Feed de datos por plantilla. Obtén todo lo que necesitas en una sola respuesta de API.
  • Una llamada API por Feed de datos por mensaje.
  • Solo Journeys. Aún no disponible para otros métodos de envío.
  • No se permiten llamadas encadenadas. La carga útil de un Feed de datos no puede usarse para llamar a otro.
¿Necesitas varios Feeds de datos por plantilla o soporte para otros canales? Comparte tu caso de uso para ayudar a priorizar estas funciones.

Configurar tu API

Antes de crear un Feed de datos, asegúrate de que tu API pueda manejar estos requisitos:

Autenticación

Tu API debe aceptar autenticación a través de encabezados:
Authorization: Bearer YOUR_TOKEN
o
X-API-Key: YOUR_KEY

Cuerpo de solicitud JSON

Si necesitas incluir un cuerpo en la solicitud, tu API debe aceptar JSON. Esto puede significar que tus encabezados necesiten incluir Content-Type: application/json.

Respuesta JSON

Tu API debe devolver un objeto JSON. Típicamente esto significa que tus encabezados incluirán Accept: application/json.

Parámetros de personalización

Típicamente pasarás identificadores de usuario en la URL como esto:
https://api.example.com/users/{{external_id}}/data
https://api.example.com/rewards?email={{email | url_encode}}
Y/o en el cuerpo:
{
	"customer_id": "{{ external_id }}",
	"email": "{{ subscription.email }}"
}
Asegúrate de que estos datos existan en OneSignal (generalmente como etiquetas, pero hay otras opciones disponibles como propiedades de eventos personalizados).

Límites de tasa

Considera los límites de tasa de tu API. Enviar a 10,000 usuarios significa 10,000 llamadas API en rápida sucesión. Asegúrate de que tu API pueda manejar este volumen.

Manejo de errores

Si tu API devuelve un error o no tiene datos para un usuario, el mensaje no se enviará a ese destinatario. Asegúrate de que tu API devuelva datos para todos los usuarios esperados.

Lista de verificación para comenzar

Antes de implementar Feeds de datos, responde estas preguntas:
  • ¿Qué datos quiero mostrar en mi mensaje? Trabajar hacia atrás desde un esquema simple con los elementos que se poblarán desde tu API identificados te ayudará a organizar tu pensamiento.
  • ¿Estos datos están disponibles a través de un único endpoint de API?
  • ¿Cómo autenticaré las solicitudes de API?
  • ¿Qué identificador u otro elemento de datos usaré para obtener datos personalizados?
  • ¿Ese identificador ya está almacenado en OneSignal? Si no, ¿cómo se poblará?
  • ¿Puede mi API manejar el volumen de solicitudes que generaré?
  • ¿Qué sucede si mi API no tiene datos para un usuario?

Ejemplos y casos de uso avanzados

Los Feeds de datos se pueden usar con sintaxis Liquid o en combinación con otras características de maneras creativas para producir una personalización más compleja.
Digamos que tienes un Feed de datos cart que devuelve un array de artículos en el carrito del usuario, más el monto total del carrito en dólares:
{
  "items": [
    {
      "name": "Blue Running Shoes",
      "price": 84.00,
      "image_url": "https://acme.com/blue-running-shoes.png"
    },
    {
      "name": "Protein Bar",
      "price": 5.99,
      "image_url": "https://acme.com/protein-bar.png"
    }
  ],
  "total": 89.99
}
Si deseas mostrar cada artículo en el carrito, más el total del carrito, puedes usar un bucle for en Liquid:
<ul>
  {% for item in data_feed.cart.items %}
    <li>
      <strong>{{ item.name }}</strong><br>
      ${{ item.price }}<br>
      <img src="{{ item.image_url }}" alt="{{ item.name }}">
    </li>
  {% endfor %}
</ul>

<p>Total del carrito: ${{ data_feed.cart.total }}</p>

Esto resultará en:
- Blue Running Shoes
- $84.00
- <imagen de zapatos para correr>
- Protein Bar
- $5.99
- <imagen de barra de proteína>
Total del carrito: $89.99
Si estás usando el editor de bloques de correo electrónico, al insertar este tipo de sintaxis Liquid compleja, particularmente si necesitas incluir imágenes o enlaces, para mejores resultados usa el elemento de bloque HTML personalizado.
¿Quieres ver cómo activar este correo electrónico de carrito abandonado usando eventos personalizados? Consulta la pestaña Propiedades de eventos personalizados para el flujo de trabajo completo.

Preguntas frecuentes

Los valores de mi Feed de datos no aparecen en el mensaje. ¿Qué debo verificar?

Verifica estos puntos en orden:
  1. El Feed de datos está adjunto a la plantilla (en Personalization > Data Feeds).
  2. Tu sintaxis Liquid coincide exactamente con la estructura de la respuesta JSON — {{ data_feed.<alias>.<field> }}.
  3. El endpoint de la API devuelve JSON válido cuando se llama manualmente con los mismos identificadores.
  4. El destinatario tiene el identificador requerido (p. ej., external_id) almacenado en OneSignal.

¿Por qué los mensajes se envían lentamente?

Las llamadas a la API del Feed de datos se ejecutan en el momento del envío para cada destinatario. Si tu API responde lentamente o no puede manejar solicitudes simultáneas, la entrega de mensajes se ralentiza proporcionalmente. Apunta a un tiempo de respuesta inferior a 250ms y asegúrate de que tu infraestructura pueda manejar tu volumen de envío.

¿Por qué algunos destinatarios no reciben mensajes?

Si la llamada a la API del Feed de datos falla para un destinatario — debido a un 404, tiempo de espera agotado o datos faltantes — OneSignal omite ese destinatario por completo. Verifica el registro de errores en la configuración de tu Feed de datos y tus propios registros de API para detectar fallos. Verifica que esos usuarios tengan los identificadores requeridos en OneSignal.

¿Puedo usar más de un Feed de datos en una plantilla?

No actualmente. Cada plantilla admite un Feed de datos. Obtén todos los datos que necesitas en una sola respuesta de API. Si necesitas varios feeds, comparte tu caso de uso.

¿Los Feeds de datos están disponibles para notificaciones push o SMS?

No. Los Feeds de datos están disponibles actualmente solo para mensajes de correo electrónico enviados a través de Journeys. El soporte para canales adicionales está planificado — comparte tu caso de uso para ayudar a priorizar.

¿Qué sucede si mi API está caída cuando se envía el mensaje?

OneSignal omite a cualquier destinatario cuya llamada al Feed de datos falle. El mensaje no se envía a ese destinatario y no se inserta ningún valor de respaldo. Monitorea el tiempo de actividad y las tasas de error de tu API durante los envíos programados.

Páginas relacionadas

Sintaxis Liquid

Referencia completa de plantillas Liquid en los mensajes de OneSignal.

Journeys

Crea flujos de trabajo de mensajería automatizados que activan correos electrónicos con Feeds de datos.

Eventos personalizados

Activa Journeys y pasa propiedades de eventos para las URLs de los Feeds de datos.

Personalización de mensajes

Descripción general de todos los métodos de personalización — etiquetas, Liquid, contenido dinámico y Feeds de datos.