> ## Documentation Index
> Fetch the complete documentation index at: https://documentation.onesignal.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Feeds de datos

> Extrae datos en tiempo real desde tus APIs a los mensajes de correo electrónico de OneSignal en el momento del envío usando Feeds de datos, con sintaxis Liquid para personalización.

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](./add-user-data-tags) o [Contenido dinámico](./dynamic-content)) son excelentes para datos estáticos. **Los Feeds de datos son mejores para valores en vivo que cambian rápidamente**.

<Note>
  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](https://survey.survicate.com/954895d3e7ed1348/?p=anonymous).
</Note>

***

## 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](./using-liquid-syntax).
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:

```liquid theme={null}
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:

```liquid theme={null}
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](./journeys-webhook#personalization).

Por ejemplo, tu API podría requerir el ID del usuario en el cuerpo de la solicitud en lugar de la URL:

```json theme={null}
{
	"customer_id": "{{ subscription.external_id }}"
}
```

Una configuración completa de Feed de datos se ve así:

<Frame caption="Ejemplo de configuración de Feed de datos">
  <img src="https://mintcdn.com/onesignal/pJu1B0q7HE_EbGFK/images/dashboard/data-feed-configuration-example.png?fit=max&auto=format&n=pJu1B0q7HE_EbGFK&q=85&s=d000fa94b02ee58c15b089fa7f9ad834" alt="Data Feed configuration showing name, alias, method, URL, and headers" width="901" height="1142" data-path="images/dashboard/data-feed-configuration-example.png" />
</Frame>

<Tip>
  Prueba tu feed antes de usarlo en producción. Las pruebas del Feed de datos se ejecutan contra tus [suscripciones de prueba](./test-users), así que verifica que esas suscripciones tengan atributos que devuelvan un resultado real de tu API.
</Tip>

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**

<Frame caption="Opciones del botón de personalización">
  <img src="https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/data-feeds-personalization-button.png?fit=max&auto=format&n=ciRrThfP6xMpI7GY&q=85&s=a2b46a9c67cc0ce86c469c407d2afbac" alt="Personalization button in the message template editor" width="1940" height="614" data-path="images/dashboard/data-feeds-personalization-button.png" />
</Frame>

3. Activa **Data Feeds** y selecciona tu feed

<Frame caption="Sección de Feeds de datos en el compositor de mensajes">
  <img src="https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/data-feeds-option.png?fit=max&auto=format&n=ciRrThfP6xMpI7GY&q=85&s=ca51e5f38a54b8550b3256ad76843947" alt="Data Feeds toggle and feed selector in the message composer" width="978" height="762" data-path="images/dashboard/data-feeds-option.png" />
</Frame>

4. 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í:

```json theme={null}
{
	"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:

```liquid theme={null}
¡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.
  * Si necesitas un formato diferente, [comparte tu caso de uso](https://survey.survicate.com/954895d3e7ed1348/?p=anonymous).
* **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.

<Info>
  ¿Necesitas varios Feeds de datos por plantilla o soporte para otros canales? [Comparte tu caso de uso](https://survey.survicate.com/954895d3e7ed1348/?p=anonymous) para ayudar a priorizar estas funciones.
</Info>

***

## 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:

```liquid theme={null}
https://api.example.com/users/{{external_id}}/data
https://api.example.com/rewards?email={{email | url_encode}}
```

Y/o en el cuerpo:

```json theme={null}
{
	"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](#examples-and-advanced-use-cases)).

### 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.

<Tabs>
  <Tab title="Iterar con bucles: carrito abandonado">
    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:

    ```json theme={null}
    {
      "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:

    ```html theme={null}
    <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:

    ```text theme={null}
    - 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
    ```

    <Note>
      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.
    </Note>

    <Tip>
      ¿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.
    </Tip>
  </Tab>

  <Tab title="Propiedades de eventos personalizados">
    Continuando con el ejemplo anterior de carrito abandonado, ¿cómo podríamos saber cómo obtener ese carrito en particular en primer lugar?

    Un método podría ser crear un Journey activado por un [evento personalizado](./custom-events) `cart_abandoned`, donde las propiedades incluyen un cart\_id. En este ejemplo, ese evento se está enviando a OneSignal a través de API:

    ```bash theme={null}
    curl --request POST \
      --url https://api.onesignal.com/apps/{app_id}/custom_events \
      --header 'Accept: application/json' \
      --data '{
      "events": [
        {
          "name": "cart_abandoned",
          "external_id": "user_12345",
          "properties": {
            "cart_id": 98765
          }
        }
      ]
    }'
    ```

    <Frame caption="Evento personalizado para entrada de Journey">
      <img src="https://mintcdn.com/onesignal/ciRrThfP6xMpI7GY/images/dashboard/data-feed-custom-event-journey-entry.png?fit=max&auto=format&n=ciRrThfP6xMpI7GY&q=85&s=6bb357d09ef9a2830ee6e9a19109afc1" alt="Journey entry node triggered by a custom event" width="936" height="548" data-path="images/dashboard/data-feed-custom-event-journey-entry.png" />
    </Frame>

    El usuario `user_12345` entra al journey cuando se dispara este evento, luego llega a un nodo que envía un correo electrónico. Esa plantilla de correo electrónico está configurada con el Feed de datos `cart`, donde la URL está configurada para recuperar el contenido de un carrito en particular así:

    ```liquid theme={null}
    https://acme.com/carts/{{ journey.event.cart_abandoned.data.cart_id }}
    ```

    Por lo tanto, cuando este evento particular se ingiere y activa el Journey:

    1. El valor `cart_id` de `98765` se almacenará en el Journey
    2. Cuando se alcance el paso de correo electrónico, el Feed de datos `cart` hará referencia a ese valor `cart_id` y lo usará para llamar a la API del carrito
    3. Las propiedades JSON devueltas se analizarán e insertarán en el correo electrónico como en el ejemplo anterior

    <Tip>
      ¿Quieres ver cómo mostrar condicionalmente el contenido del Feed de datos según el estado del pedido? Consulta la pestaña **Visualización condicional: estado del pedido** para obtener más información.
    </Tip>
  </Tab>

  <Tab title="Visualización condicional: estado del pedido">
    Digamos que deseas incluir el estado del pedido de un cliente, pero solo incluir un enlace de número de seguimiento si el pedido ha sido enviado. Puedes usar una declaración `if` para hacerlo:

    ```liquid theme={null}
    ¡Tu pedido está {{data_feed.order.status}}!

    {% if data_feed.order.tracking_number != empty %}
    Rastréalo aquí: {{data_feed.order.tracking_url}}
    {% endif %}
    ```

    Aquí, el enlace de seguimiento solo se mostrará si el `tracking_number` existe.
  </Tab>

  <Tab title="Automatización sin personalización">
    Los Feeds de datos se pueden usar para insertar automáticamente información actualizada en tus mensajes sin necesariamente necesitar ser personalizada por destinatario.

    Por ejemplo, tal vez insertes una imagen de banner en la parte superior de tus correos electrónicos y la cambies mensualmente para mantenerte al día con las festividades y otros eventos mensuales. En lugar de recordar subir una nueva imagen a OneSignal y cambiar todas tus plantillas cada mes, podrías configurar un Feed de datos que obtenga la URL de la imagen de banner actual desde tu CMS u otra ubicación de gestión de activos.

    Configurarías un Feed de datos `banner` que apunte a un endpoint **sin** ninguna variable en la URL así:

    ```liquid theme={null}
    https://acme.com/assets/email-banner
    ```

    Que devuelve una respuesta con la URL del banner actual:

    ```json theme={null}
    {
    	"banner_url": "https://acme.com/assets/email-banner/2025july.png"
    }
    ```

    Configurarías tu plantilla de correo electrónico para usar `{{ data_feed.banner.banner_url }}` como la URL de fuente de imagen, automatizando este proceso en adelante.
  </Tab>

  <Tab title="Códigos de cupón personalizados">
    Este ejemplo cubre cómo enviar códigos de cupón personalizados de un solo uso en correos electrónicos usando un Feed de datos que obtiene un valor único de tu API para cada destinatario.

    ### Objetivo

    Enviar un correo electrónico como:

    > Hola George,
    >
    > Completa tu reserva en las próximas 2 horas y ahorra 10% con tu código personal: XYZ123ABC

    Cada usuario recibe un código de cupón único, generado en vivo a través de una llamada API externa cuando se envía el correo electrónico, válido para la ventana de tiempo dada y limitado a ese usuario.

    ### Requisitos previos

    * [Canal de correo electrónico configurado](./email-setup) en OneSignal (tu aplicación tiene la capacidad de correo electrónico habilitada)
    * Una API externa que acepta un identificador de usuario (por ejemplo, [`external_id`](./users#external-id)) e identificador de campaña, y devuelve JSON con el código de cupón, descuento y vencimiento
    * Un identificador único (como `external_id`) para cada usuario que tu API pueda usar para generar cupones
    * Un [segmento](./segmentation) o activador (por ejemplo, "búsqueda abandonada en las últimas 24h") utilizado para enviar el correo electrónico a través de un Journey de OneSignal

    ### Paso 1: Crear el Feed de datos

    <Steps>
      <Step title="Navegar a Feeds de datos">
        En tu aplicación de OneSignal, selecciona **Data feeds** en la barra de navegación, luego haz clic en **New data feed**.
      </Step>

      <Step title="Configurar el Feed de datos">
        Configura los siguientes campos:

        * **Data Feed Name**: `coupon_code_generator`
        * **Alias**: `coupon`
        * **Method**: `GET`
        * **URL**: `https://api.example.com/generate-coupon?userId={{ external_id }}&campaign=AbandonedBooking10`
        * **Headers**:
          ```json theme={null}
          {
            "Authorization": "Bearer YOUR_API_TOKEN"
          }
          ```
      </Step>

      <Step title="Referenciar la respuesta de la API">
        Cuando la API devuelve JSON como este:

        ```json theme={null}
        {
          "code": "AB10-5F3K-HT9L",
          "discount_percent": "10%",
          "expires_in_hours": 2
        }
        ```

        Puedes referenciar sus valores en tu plantilla de correo electrónico como:

        * `{{ data_feed.coupon.code }}`
        * `{{ data_feed.coupon.discount_percent }}`
        * `{{ data_feed.coupon.expires_in_hours }}`
      </Step>

      <Step title="Probar y activar el Feed de datos">
        Haz clic en **Send Test** para verificar tu configuración, luego haz clic en **Activate** para hacer que el Feed de datos esté disponible para usar en plantillas.
      </Step>
    </Steps>

    ### Paso 2: Crear la plantilla de correo electrónico

    1. En OneSignal, ve a **Messages → Email → New Template**
    2. Usa el alias del Feed de datos y los campos dentro del cuerpo de tu mensaje. Por ejemplo:

    ```html theme={null}
    <h2>Hi {{ first_name }},</h2>
    <p>
    Complete your booking in the next {{ data_feed.coupon.expires_in_hours }} hours and save
    {{ data_feed.coupon.discount_percent }} with your personal code:
    <strong>{{ data_feed.coupon.code }}</strong>
    </p>

    <p><a href="https://example.com/checkout?coupon={{ data_feed.coupon.code }}">Use Code Now →</a></p>
    ```

    <Note>
      * Usa la sintaxis Liquid en la forma `{{ data_feed.<alias>.<field> }}`
      * Asegúrate de que el Feed de datos esté adjunto a la plantilla
      * Si usas el editor de arrastrar y soltar con lógica Liquid personalizada, usa un bloque HTML
    </Note>

    ### Paso 3: Adjuntar el Feed de datos y activar el correo electrónico

    1. En el compositor de plantillas, bajo **Personalization**, activa **Data Feeds** y selecciona tu feed (`coupon_code_generator`)
    2. Esto asegura que OneSignal haga la llamada a la API en el momento del envío para cada destinatario, complete los datos y los inyecte en el correo electrónico
    3. Configura un Journey para automatizar el mensaje:
       * **Condición de entrada**: Segmento como "búsqueda abandonada en las últimas 24 horas"
       * **[Wait until](./custom-events#wait-until-event)**: Crea un evento personalizado `booking_completed`. Configura la espera para salir del Journey si este evento se activa, o continuar después de 1 hora. Si completan una reserva, salen sin recibir el correo electrónico; de lo contrario, continúan para recibir el cupón.
       * **Enviar correo electrónico**: Usa la plantilla de correo electrónico de cupón personalizado
       * Asegúrate de que el Journey use el canal de correo electrónico y que los destinatarios estén suscritos al correo electrónico

    ### Paso 4: Gestionar el canje y seguimiento de cupones

    Tu backend debe:

    1. Registrar cada código generado junto con `userId`, `code`, `campaign`, `expiration_time`, y una bandera `redeemed`
    2. Validar y marcar los códigos como canjeados al momento del pago
    3. Registrar los datos de canje (usuario, campaña y hora) para el análisis de ROI

    ### Ejemplo de flujo de trabajo completo

    | Paso | Evento                                              | Acción                                                                                                        |
    | ---- | --------------------------------------------------- | ------------------------------------------------------------------------------------------------------------- |
    | 1    | El usuario activa el segmento "búsqueda abandonada" | El usuario ingresa al Journey a través del segmento                                                           |
    | 2    | El Journey activa el envío de correo electrónico    | OneSignal adjunta el Feed de datos, llama a tu API con el `external_id` del usuario y el nombre de la campaña |
    | 3    | La API devuelve JSON                                | OneSignal completa los campos de cupón del feed de datos y envía el correo electrónico                        |
    | 4    | El usuario recibe el correo electrónico             | Ejemplo: "¡Hola George! Ahorra 10% con tu código personal: AB10-5F3K-HT9L"                                    |
    | 5    | El usuario canjea el código                         | El backend valida y registra el canje                                                                         |

    ### Pruebas

    * Prueba con un usuario que tenga un `external_id` conocido
    * Llama a tu API manualmente para confirmar respuestas JSON correctas
    * Usa **Preview** en el editor de plantillas de OneSignal para verificar que los campos de cupón del feed de datos se completen
    * Verifica los registros de la API para detectar latencia y errores
    * Si una llamada al Feed de datos falla, OneSignal omitirá el envío del mensaje a ese destinatario
  </Tab>
</Tabs>

***

## 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](https://survey.survicate.com/954895d3e7ed1348/?p=anonymous).

### ¿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](https://survey.survicate.com/954895d3e7ed1348/?p=anonymous) 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

<Columns cols={2}>
  <Card title="Sintaxis Liquid" icon="code" href="./using-liquid-syntax">
    Referencia completa de plantillas Liquid en los mensajes de OneSignal.
  </Card>

  <Card title="Journeys" icon="route" href="./journeys-overview">
    Crea flujos de trabajo de mensajería automatizados que activan correos electrónicos con Feeds de datos.
  </Card>

  <Card title="Eventos personalizados" icon="bolt" href="./custom-events">
    Activa Journeys y pasa propiedades de eventos para las URLs de los Feeds de datos.
  </Card>

  <Card title="Personalización de mensajes" icon="user-pen" href="./message-personalization">
    Descripción general de todos los métodos de personalización — etiquetas, Liquid, contenido dinámico y Feeds de datos.
  </Card>
</Columns>
