Campos soportados por tipo de mensaje
- Email
- Push
- SMS
- In-App Messages
- Live Activities
- Asunto, Responder a y Pre-encabezado
- Cuerpo del mensaje
- Sustitución de imagen en bloques HTML. Ejemplo:
<img src="{{image_url}}"/> - Acciones de bloque de botón como URLs, Mail to y otros campos.
Sintaxis básica
Liquid usa dos estructuras de sintaxis principales:- Etiquetas de salida:
{{ ... }}- Muestra datos de una variable u objeto. - Etiquetas de lógica:
{% ... %}- Ejecuta declaraciones condicionales o bucles.
Fuentes de datos
| Fuente | Ejemplo | Descripción |
|---|---|---|
| Tag | {{ first_name }} | SDK o API de OneSignal (tags) |
| Propiedad | {{ subscription.email }} | Gestionado por el sistema (email, external_id, language, etc.) |
| Nombre de Journey | {{ journey.name }} | Gestionado por el sistema |
| Datos personalizados | {{ message.custom_data.key }} | custom_data pasado en API Create Message |
| Data Feeds | {{ data_feed.cart.size }} | Data Feeds te permite obtener datos en tiempo real de tus APIs directamente en mensajes al momento del envío. |
| Eventos personalizados | {{ journey.last_event.name }} | Establecido a través de Journeys activados por eventos, nodos Wait Until |
Condicionales
Operadores
==,!=,>,<,>=,<=and,orcontains(cadena o array)
Las operaciones se ejecutan de derecha a izquierda. Los paréntesis no son soportados.
liquid
if, elsif, else
liquid
unless
liquid
Filtros
Aplica filtros usando{{ variable | filter }} para ajustar cómo se muestran los datos.
default
Asigna un valor predeterminado si la propiedad está vacía o no existe.
liquid
date
El filtro date convierte una marca de tiempo en otro formato de fecha. El formato para esta sintaxis es el mismo que strftime. La entrada usa el mismo formato que Time.parse de Ruby.
Establece fechas como una marca de tiempo unix en segundos con tags. Esto permite el uso tanto de personalización con sintaxis liquid como de segmentación con Operadores de tiempo. Por ejemplo, un tag podría verse así: bill_due : 1687968776
liquid
Result
liquid
Result
liquid
Result
now (o today) junto con el filtro date.
liquid
Result
La hora actual se renderizará en el mensaje según cuándo se envíe el mensaje
al destinatario. Si estás probando el mensaje, verás la hora actual
como cuando se envió el mensaje de prueba.
capitalize
Este filtro hace que el primer carácter de una cadena esté en mayúscula y convierte los caracteres restantes a minúsculas.
liquid
Result
round
Este filtro redondea un número al entero más cercano, o, si se pasa un número como argumento, a ese número de decimales.
liquid
Result
pluralize
Este filtro devuelve la forma singular o plural de una cadena basándose en un número dado. El número debe ser un número entero y puede proporcionarse como cadena. Deben proporcionarse tanto la forma singular como la plural de una cadena.
liquid
Result
Iteración
Bucles for
Ejecuta repetidamente un bloque de código. Para una lista completa de atributos disponibles dentro de un bucle for, consulta el objeto de bucle for.
liquid
Request Body
Results
limit & offset
Limita el bucle al número especificado de iteraciones. Por ejemplo, si solo quieres mostrar 4 productos en un mensaje, podrías usar Límites y Desplazamientos para especificar el número de productos mostrados.
Data
liquid
Result
Data
liquid
where
Crea un array que incluye solo los objetos con un valor de propiedad dado, o cualquier valor verdadero por defecto.
En este ejemplo, supón que tienes una lista de productos y quieres mostrar tus productos de cocina por separado. Usando where, puedes crear un array que contenga solo los productos que tienen un type de kitchen.
Data
liquid
Result
Manipulación de cadenas
Ocasionalmente puedes tener tags de datos que contienen cadenas en un formato que no es adecuado para mostrarse directamente a tus usuarios, y puede que necesites manipular la cadena para ajustar el formato. A continuación se muestra una tabla de comandos de sintaxis liquid que se pueden usar para ajustar cadenas. Puedes usar manipulación de cadenas tanto en Tags como directamente en cadenas escritas en el mensaje.| Comando | Descripción | Ejemplo | Salida de ejemplo |
|---|---|---|---|
replace | Reemplaza una subcadena con otra cadena. | {{ 'hello world' | replace: 'world', 'there' }} | hello there |
capitalize | Capitaliza la primera letra de una cadena. | {{ 'hello' | capitalize }} | Hello |
upcase | Convierte una cadena a mayúsculas. | {{ 'hello' | upcase }} | HELLO |
downcase | Convierte una cadena a minúsculas. | {{ 'HELLO' | downcase }} | hello |
strip | Elimina espacios en blanco iniciales y finales de una cadena. | {{ ' hello ' | strip }} | hello |
strip_html | Elimina todas las etiquetas HTML de una cadena. | {{ '<p>hello</p>' | strip_html }} | hello |
truncate | Acorta una cadena a una longitud especificada, agregando puntos suspensivos (…) si es necesario. | {{ 'This is a long sentence' | truncate: 10 }} | This is a… |
truncatewords | Trunca una cadena después de un cierto número de palabras. | {{ 'This is a long sentence' | truncatewords: 2 }} | This is… |
replace_first | Reemplaza la primera ocurrencia de una subcadena. | {{ 'hello world' | replace_first: 'world', 'there' }} | hello there |
prepend | Agrega una cadena al principio de otra cadena. | {{ 'world' | prepend: 'hello ' }} | hello world |
append | Agrega una cadena al final de otra cadena. | {{ 'hello' | append: ' world' }} | hello world |
lstrip | Elimina espacios en blanco iniciales de una cadena. | {{ ' hello' | lstrip }} | hello |
rstrip | Elimina espacios en blanco finales de una cadena. | {{ 'hello ' | rstrip }} | hello |
Preguntas frecuentes
¿Por qué no funciona la sustitución?
- Los Mensajes In-App no soportan sustitución de propiedades.
- La sustitución de tag no funciona cuando se usa “Send Test Message”.
- Las claves de tag deben ser alfanuméricas, o usar _ y - (sin puntos ni espacios).
- La sustitución no aparece en modo de vista previa — envía un mensaje real para probar.
¿Cómo controlar espacios en blanco y saltos de línea?
Usa guiones:{{- ... -}}, {%- ... -%} para recortar espacios en blanco circundantes.
Ver Control de espacios en blanco para más detalles.
¿Cómo manejar contenido generado por usuarios?
Envuelve el texto generado por usuarios en{% raw %} y {% endraw %} para prevenir el análisis de Liquid. Ver sintaxis “raw”.
json