Saltar al contenido principal

Descripción general

El Contenido dinámico le permite personalizar mensajes a escala, sin crear versiones separadas para cada audiencia. Ya sea que esté enviando mensajes multiidioma o adaptando contenido por región o campaña, el Contenido dinámico le permite definir un mensaje que se ajusta automáticamente para cada usuario. Puede hacer esto cargando un archivo CSV o usando programáticamente nuestras APIs de plantillas con datos que contienen variaciones de contenido y referenciando esos valores en su mensaje usando Sintaxis Liquid. Cuando se envía un mensaje, OneSignal extrae el contenido apropiado para cada usuario según sus Etiquetas de datos. El Contenido dinámico funciona en Push, Correo electrónico y SMS, lo que lo hace ideal para:
  • Flujos de incorporación o marketing multiidioma
  • Promociones específicas por región o segmento
  • Personalización impulsada por datos de campañas externas
Beneficios clave:
  • Personalización a escala – Entregue experiencias personalizadas sin crear y administrar docenas de variantes de mensajes.
  • Soporte multiidioma – Escriba un mensaje que se muestre automáticamente en el idioma preferido de cada usuario.
  • Segmentación dinámica – Cambie el contenido del mensaje según las propiedades del usuario como idioma, región, plan o etiquetas personalizadas como campaign_id.
  • Colaboración sin fricción – Permita que traductores o equipos no técnicos creen y editen el contenido del mensaje directamente en archivos CSV, sin necesidad de inicio de sesión en OneSignal.
  • Compatibilidad entre canales – Use la misma lógica CSV en campañas de Push, Correo electrónico y SMS.
Casos de uso comunes:
  • Anuncios de eventos por país o ciudad
  • Notificaciones push personalizadas basadas en ID de campaña o historial de compras
  • Prueba de múltiples líneas de asunto o mensajes en grupos de usuarios
Consulte Personalización de mensajes para más opciones sobre cómo personalizar sus mensajes.

Configuración de Contenido dinámico

Cree un nuevo mensaje o plantilla. Desde el panel: Seleccione Dynamic Content.
  • Cargue un archivo CSV que mapee el contenido del mensaje a las Etiquetas de datos.
Desde las APIs de plantillas: Use la propiedad dynamic_content.
  • Gran solución si su contenido dinámico cambia con frecuencia.

Botón de Dynamic Content que se encuentra en el editor de creación de push.

Formatee su contenido

Puede comenzar con un archivo en blanco o elegir una de las plantillas proporcionadas:
  • Multi-language
  • Content personalization

Opciones de plantilla CSV proporcionadas por OneSignal.

Para detalles de API, consulte:

Requisitos de CSV

  • El tamaño del archivo debe ser inferior a 200 KB
  • Encabezados de columna:
    • Solo alfanuméricos
    • Use guiones bajos (_) en lugar de espacios
    • Evite caracteres especiales
  • Asegure la codificación UTF-8 en su editor de hojas de cálculo
  • Multi-language Example
  • Content Personalization Example
Mapee la propiedad subscription.language a diferentes traducciones por sección.

Similar a una fórmula VLOOKUP en Excel, coincidimos los atributos del usuario con el contenido correspondiente del CSV.

Referenciar Contenido dinámico en mensajes

Para mostrar contenido personalizado desde dynamic_content, use esta sintaxis Liquid.
{{dynamic_content.file_name.section_name[data_tag_or_property]}}
Reemplace:
  • file_name: Nombre del archivo CSV (sin .csv).
  • section_name: Valor en la primera columna de la fila
  • data_tag_or_property: Encabezado de columna que coincide con una Etiqueta de datos o propiedad de suscripción

Contenido de respaldo

Agregar contenido de respaldo evitará que los usuarios reciban contenido en blanco. Garantiza que su mensaje se renderice cuando:
  • un usuario no tiene una etiqueta o propiedad coincidente.
  • un usuario tiene una etiqueta o propiedad que no está disponible en dynamic_content.

El usuario no tiene una etiqueta o propiedad coincidente

Si subscription.language no existe, referencie la columna predeterminada de dynamic_content en su lugar.
{% assign lang = subscription.language | default: "default" %}
{{ dynamic_content.content_personalization_template.title[lang] }}

El usuario tiene una etiqueta o propiedad que no está disponible en dynamic_content

Si subscription.language existe en una suscripción, pero no en dynamic_content, referencie la columna predeterminada en su lugar.
// agregue cada idioma que esté disponible en su dynamic_content:
{% assign supported_langs = "de,en,es,fr,it,default" | split: "," %}
{% assign lang = subscription.language | default: "default" %}

// verifique si el idioma de suscripción está en sus idiomas admitidos, si no, asigne el idioma como 'default'
{% unless supported_langs contains lang %}
  {% assign lang = "default" %}
{% endunless %}

{{ dynamic_content.content_personalization_template.title[lang] }}

Ejemplos

Correo electrónico multiidioma

Use translations.csv para localizar su correo electrónico:
  • {{dynamic_content.translations.section_1[subscription.language]}}
  • {{dynamic_content.translations.section_2[subscription.language]}}

El ejemplo muestra cómo agregar la sintaxis liquid para el ejemplo multiidioma.

Actualice líneas de asunto, preencabezados, etiquetas de botones y URLs usando Liquid.

Mensaje push personalizado

Use content_personalization_template.csv para mensajes push específicos del usuario. La etiqueta campaign_id de cada usuario determina qué fila usar.
Requisito previo: Cada usuario debe tener una Etiqueta de datos llamada campaign_id. En el momento del envío, OneSignal usa el valor campaign_id del usuario para seleccionar la fila coincidente en su CSV.

Formato CSV (filas codificadas por campaign_id)

campaign_id,title,message,url
campaign_123,Flash deal for you,Tap to claim,https://example.com/flash
campaign_456,Weekend picks are here,See what's trending,https://example.com/weekend
default,Our latest offers,See what's new,https://example.com
  • La primera columna (campaign_id) es la clave de fila que debe coincidir con el valor de la etiqueta campaign_id del usuario.
  • Las otras columnas (title, message, url) son los campos que insertará en el push.
  • Incluya una fila default para que los valores sin etiquetar o desconocidos aún rendericen contenido válido.

Cómo el Liquid se mapea al CSV

{{ dynamic_content.content_personalization_template[campaign_id].title }}
{{ dynamic_content.content_personalization_template[campaign_id].message }}
{{ dynamic_content.content_personalization_template[campaign_id].url }}
  • content_personalization_template → el nombre del archivo CSV (omita .csv).
  • [campaign_id] → selecciona la fila cuyo valor de primera columna es igual a la etiqueta campaign_id del usuario.
  • .title / .message / .url → devuelve la columna elegida de esa fila.

Ejemplo de respaldo (recomendado)

{% assign cid = campaign_id | default: "default" %}

{% unless dynamic_content.content_personalization_template[cid] %}
  {% assign cid = "default" %}
{% endunless %}

{{ dynamic_content.content_personalization_template[cid].title }}
{{ dynamic_content.content_personalization_template[cid].message }}
{{ dynamic_content.content_personalization_template[cid].url }}
Reglas de encabezado: Prefiera alfanuméricos/guiones bajos (por ejemplo, campaign_id, title). Si debe usar espacios o caracteres especiales, acceda con notación hash:
{{ dynamic_content.file_name["row key"]["column key"] }}
Ejemplo de Liquid de personalización de Dynamic Content

El ejemplo muestra cómo agregar la sintaxis liquid para el ejemplo de personalización de contenido.


Probar y previsualizar

1

Crear un CSV de prueba

Prueba multiidioma:
  • Columnas: email, language
Prueba de personalización:
  • Columnas: external_id, campaign_id

Ejemplo de CSV para cargar y crear segmento de probadores de correo electrónico.


Use direccionamiento + en correos electrónicos para probar múltiples variaciones: username+test@example.com

Ejemplo de CSV para cargar y crear segmento de probadores con external_id y la etiqueta campaign_id.

2

Cargar su segmento de prueba

Vaya a Subscriptions o Segments > Upload/Import Users.Establezca la primera columna como el identificador. Todas las demás columnas se tratan como propiedades de usuario o Etiquetas de datos.

Cree un segmento de sus probadores para repetir según sea necesario.

Consulte Import para más información sobre cómo cargar datos de usuario.
3

Ver el mensaje

Después de enviar sus mensajes de prueba, revise sus bandejas de entrada o dispositivos para verificar la visualización.
Si dynamic_content no se está renderizando, consulte Contenido de respaldo

El ejemplo muestra el correo electrónico enviado con Contenido dinámico.

El ejemplo muestra el push enviado con Contenido dinámico.

Ahora puede escalar la mensajería personalizada usando estas plantillas y CSVs.

Consideraciones de uso

Cuándo usar Contenido dinámico vs. Datos personalizados

  • Use Contenido dinámico para idiomas diversos o bloques de mensajes personalizados.
  • Use Datos personalizados para personalización en línea simple en un solo idioma.

Editar plantillas

Vuelva a cargar CSVs o use la propiedad dynamic_content de la Update Template API para actualizar.

Caracteres especiales en claves

Use notación hash si las claves contienen caracteres no alfanuméricos:
{{ dynamic_content.file_name["!the_row!"]["&the_column&"] }}
Use notación de punto para claves alfanuméricas estándar:
{{ dynamic_content.file_name.the_row.the_column }}

Artículos relacionados