Ir al contenido principal

Usa Liquid Templating para la Personalización de Mensajes

Aprende a usar la sintaxis Liquid para personalización avanzada y contenido dinámico

Escrito por Ira

La plantilla líquida te permite crear mensajes personalizados con lógica avanzada, como mostrar contenido diferente según la ubicación del cliente, usar texto de respaldo cuando faltan datos, o formatear fechas y precios dinámicamente. Usa Liquid en campañas de Correo electrónico, SMS y notificaciones push.


Antes de empezar

  • La plantillas líquidas funcionan en Campañas y Automatización – Correo electrónico, SMS y Notificaciones Push admiten objetos y filtros líquidos.

  • Prueba la personalizacin antes de enviar – Los correos de prueba no incluyen datos de contacto reales. Se muestran valores alternativos cuando unse utiliza el filtro predeterminado.Usa la vista previa dinámica o un contacto de prueba para ver valores de contacto reales.

  • Siempre añade valores de fallback – Usa | predeterminado: 'texto' para evitar espacios en blanco cuando faltan datos de contacto.

  • Omnisend utiliza una sintaxis Liquid modificada – Reemplaza las llaves de Shopify {{ }} con corchetes cuadrados [[ ]].

💡 ¿Nuevo en la personalización? Comienza con personalización estándar antes de usar Liquid. Liquid es para casos de uso avanzados.

Resumen: ¿Qué es Liquid?

Liquid es un lenguaje de plantillas de código abierto creado por Shopify. Te permite insertar contenido dinámico en mensajes usando tres elementos:

  1. Objetos – Variables que devuelven datos de contacto o de pedido ([[ contact.first_name ]]).

  2. Etiquetas – Lógica y flujo de control ([% if contact.country == 'France' %])

  3. Filtros – Modificar la salida ([[ contact.first_name | capitalize ]])

Omnisend utiliza una versión modificada de Liquid:

  • Objetos: Usa [[ ]] en lugar de {{ }} - Ejemplo: [[ contact.first_name ]]).

  • Etiquetas: Usa [% %] en lugar de {% %} - Ejemplo: [% if contact.country == 'France' %]

111 Aprende más sobre Liquid en la documentación de Shopify y recuerda reemplazar las llaves con corchetes en Omnisend.

Objetos

Los objetos son variables que generan contenido dinámico a partir de perfiles de contacto, pedidos o la configuración de tu cuenta. Los objetos siempre están encerrados en dobles corchetes.

[[ contact.first_name ]]

Grupos de objetos disponibles:

  • Propiedades del contacto: [[ contact.variable ]] (nombre, correo electrnico, ubicación, propiedades personalizadas)

  • Propiedades de la cuenta: [[ account.variable ]] (nombre de la tienda, sitio web, moneda)

  • Propiedades del pedido: [[ order.variable ]] (ID del pedido, total, artículos) – Solo flujos de trabajo de automatización

  • Propiedades del carrito: [[ cart.variable ]] (URL del carrito abandonado) – Solo flujos de trabajo de automatización

  • Propiedades de fecha: [[ current_date ]] (día actual, mes, año)

Consulta la Tabla de Referencia de Objetos completa a continuación.

Filtros

Los filtros cambian la salida de un objeto Liquid. Los filtros se separan por un símbolo de barra vertical |.


Ejemplo:

[[ 'mywebsite.com/orders/' | append: order.order_id ]]

Filtros comunes:

  • predeterminado – Agregar texto alternativo cuando faltan datos:[[ contact.first_name | default: 'there' ]]

  • capitalizar – Capitaliza la primera letra:[[ contact.city | capitalize ]]

  • mayúsculas – Convertir a mayúsculas:[[ contact.country | upcase ]]

  • agregar – Añadir texto al final:[[ account.website | append: '/sale' ]]

  • fecha – Formatear fechas:[[ current_date | date:'%B %d, %Y' ]] "13 de mayo de 2026"

  • vocativo – Ajusta los nombres a la forma vocativa en los idiomas compatibles:0a[[ contact.first_name | vocative ]]

Aprende más sobre filtros Liquid en la documentación de Shopify recuerda usar la sintaxis de [[ ]] de Omnisend.

Etiquetas (solo automatización)

Las etiquetas crean lógica y controlan el flujo en los mensajes. Las etiquetas están encerradas en [% %] llaves y no producen texto visible.

Ejemplo:

[% if contact.first_name %] Hi [[ contact.first_name ]] [% endif %]

⚠️ Las etiquetas solo funcionan en Automatización – no en Campañas. Aprende más sobre las etiquetas Liquid en la documentación de Shopify.

Casos de uso comunes

Aquí hay varios casos de uso comunes útiles para la sintaxis Liquid:

Personalización

Hi [[ contact.first_name ]], welcome to Omnisend!

Salida: "¡Hola Sarah, bienvenido a Omnisend!"

💡 Consejo: Este filtro ajusta automáticamente el nombre a su forma vocativa en los idiomas compatibles, haciendo que tus mensajes suenen más naturales y personales. Esto se puede lograr utilizando personalización vocativa: [[ contact.first_name | vocative ]]

Personalización con respaldo

Hi [[ contact.first_name | default: 'there' ]], welcome to Omnisend!

Salida (si falta el nombre): "¡Hola, bienvenido a Omnisend!"

4a1 ¿Por qué usar respaldos?
Si el perfil de un contacto falta datos (por ejemplo, sin nombre), las etiquetas de personalización mostrarán espacios en blanco. Los respaldos evitan esto:

  • Con respaldo: Hola [[ contact.first_name | default: 'there' ]] "Hola allí"

  • Sin respaldo: Hola [[ contact.first_name ]] "Hola "

Siempre agrega alternativas para evitar espacios en blanco incómodos.

Inserción de variables en mensajes

Inserta variables de Liquid en:

  • Líneas de asunto del correo electrónico:0aNo olvides tu carrito, [[ contact.first_name ]]!

  • Texto del cuerpo del correo electrnico:El total de tu pedido: [[ order.total_price ]] [[ order.currency ]]

  • Mensajes SMS:Hola [[ contact.first_name ]], ¡tu pedido #[[ order.order_number ]] ha sido enviado!

  • Notificaciones push:0a[[ contact.first_name ]], el 20% de descuento termina hoy

  • Enlaces de botones:0a[[ account.website ]]/orders/[[ order.order_id ]]

Lógica Condicional (Solo Automatizaciones)

Utiliza declaraciones condicionales para mostrar contenido diferente según los datos de contacto.

Localización de idioma

[% if contact.custom_properties.language == 'Spanish' %] Hola [[ contact.first_name ]]! [% elsif contact.custom_properties.language == 'French' %] Bonjour [[ contact.first_name ]]! [% else %] Hi [[ contact.first_name ]]! [% endif %]

Contenido basado en ubicación

[% if contact.country == 'UK' or contact.country == 'Ireland' %] Have you visited our newest flagship store in London? [% endif %]

Formato

Capitalizar la Primera Letra

Hi [[ contact.first_name | capitalize ]]

Salida: "Hola sarah" "Hola Sarah"

Agregar Texto Personalizado

[% assign campaign_destination = '/landing_page.html' %]  [[ account.website | append: campaign_destination ]]

Formato de fechas

Omnisend © [[ current_date | date:'%Y' ]]

Salida: "Omnisend © 2026"

Opciones de formato de fecha:

  • %d - Día (13)

  • %A Nombre del día (miércoles)

  • %m – Número del mes (05)

  • %B – Nombre del mes (Mayo)

  • %Y Año (2026

Tabla de referencia de objetos

Propiedades de Contacto

Título del Desplegable

Etiqueta

Tipo de Valor

Descripción

Correo electrónico

[[ contact.email ]]

cadena

Correo electrónico de contacto

Nombre

[[ contact.first_name ]]).

cadena

Nombre de pila del contacto

Apellido

[[ contact.last_name ]]

cadena

Apellido del contacto

Ciudad

[[ contact.city ]]

cadena

Ciudad del contacto

País

[[ contact.country ]]

cadena

País del contacto

Estado

[[ contact.state ]]

cadena

Estado del contacto

Código postal

[[ contact.postal_code ]]

cadena

Código postal del contacto

Enlace para darse de baja

[[ unsubscribe_link ]]

Enlace del contacto para darse de baja

Enlace al centro de preferencias

[[ preference_link ]]

Enlace de preferencia de contacto

Propiedades personalizadas

[[ contact.custom_properties.customPropertyName ]]

objeto

Propiedades personalizadas del contacto

Número de teléfono

[[ contact.phone_number ]]

string

Número de teléfono del contacto

Propiedades de la cuenta

Título del desplegable

Etiqueta

Tipo de valor

Descripción

Nombre

[[ account.name ]]

string

Nombre de la cuenta

Dirección

[[ account.address ]]

string

Dirección de la cuenta

Ciudad

[[ account.city ]]

cadena

Ciudad de la cuenta

Código postal / ZIP

[[ account.zipCode ]]

string

Código postal de la cuenta

País

[[ account.country ]]

string

País de la cuenta

URL del sitio web

[[ account.website ]]

string

URL del sitio web de la cuenta

Zona horaria

[[ account.timezone ]]

string

Zona horaria de la cuenta

Moneda

[[ account.currency ]]

string

Moneda de la cuenta

Propiedades de Fecha

Título del desplegable

Etiqueta

Tipo de valor

Descripción

Día actual

[[ current_date | date:'%d' ]]

-

El día en que se realiza la acción

Nombre del día actual

[[ current_date | date:'%A' ]]

-

El día en que se realiza la acción

Mes actual

[[ current_date | date:'%m' ]]

-

El mes en que se realiza la acción

Nombre del mes actual

[[ current_date | date:'%B' ]]

-

El nombre del mes en que se realiza la acción

Año actual

[[ current_date | date:'%Y' ]]

-

El año actual cuando se realiza la acción

Propiedades del Pedido (Solo Automatización)

Título del menú desplegable

Etiqueta

Tipo de valor

Descripción

ID del Pedido

[[ order.order_id ]]

string

ID del Pedido

Número de Pedido

[[ order.order_number ]]

int64

Número del Pedido

Nombre del Pedido

[[ order.order_name ]]

string

Nombre del Pedido

Fecha del Pedido

[[ order.order_date ]]

Fecha

Fecha en que se crea el pedido

Moneda

[[ order.currency ]]

string

Moneda del Pedido

Precio total

[[ order.total_price ]]

int64

Suma total del Pedido

Precio subtotal

[[ order.subtotal_price ]]

int64

Suma subtotal del pedido

Descuento

[[ order.discount ]]

int64

Descuento del Pedido

Precio de envío

[[ order.shipping_price ]]

int64

Precio de envío del Pedido

URL de la página de estado del Pedido

[[ order.order_url ]]

string

URL para acceder a la información exacta del pedido

Nota del Pedido

[[ order.note ]]

string

Notas adicionales del pedido

Dirección de Facturación (Solo Automatización)

Título del menú desplegable

Etiqueta

Tipo de valor

Descripción

Nombre

[[ order.billing_address.first_name ]]

string

Nombre del contacto proporcionado en la dirección de facturación

Apellido

[[ order.billing_address.last_name ]]

cadena

Apellido del contacto proporcionado en la dirección de facturación

País

[[ order.billing_address.country ]]

cadena

País del contacto proporcionado en la dirección de facturación

Código de país

[[ order.billing_address.country_code ]]

cadena

Código de país del contacto proporcionado en la dirección de facturación

Estado

[[ order.billing_address.state ]]

cadena

Estado del contacto proporcionado en la dirección de facturación

Código de estado

[[ order.billing_address.state_code ]]

cadena

Código de estado del contacto proporcionado en la dirección de facturación

Ciudad

[[ order.billing_address.city ]]

cadena

Ciudad del contacto proporcionada en la dirección de facturación

Dirección 1 y

[[ order.billing_address.address1 ]]

cadena

Dirección del contacto (1ra línea) proporcionada en la dirección de facturación

Dirección 2

[[ order.billing_address.address2 ]]

cadena

Dirección del contacto (2da línea) proporcionada en la dirección de facturación

Código postal

[[ order.billing_address.zip ]]

cadena

Código postal del contacto proporcionado en la dirección de facturación

Empresa

[[ order.billing_address.company ]]

cadena

Título de la empresa del contacto proporcionado en la dirección de facturación

Teléfono

[[ order.billing_address.phone ]]

cadena

Número de teléfono del contacto proporcionado en la dirección de facturación

Dirección de envío (solo automatización)

Título del menú desplegable

Etiqueta

Tipo de valor

Descripción

Nombre de pila

[[ order.shipping_address.first_name ]]

string

Nombre de pila del contacto proporcionado en la dirección de envío

Apellido

[[ order.shipping_address.last_name ]]

string

Apellido del contacto proporcionado en la dirección de envío

País

[[ order.shipping_address.country ]]

cadena

País del contacto proporcionado en la dirección de envío

Código de país

[[ order.shipping_address.country_code ]]

cadena

Código de país del contacto proporcionado en la dirección de envío

Estado

[[ order.shipping_address.state ]]

cadena

Estado del contacto proporcionado en la dirección de envío

Código de estado

[[ order.shipping_address.state_code ]]

cadena

Código de estado del contacto proporcionado en la dirección de envío

Ciudad

[[ order.shipping_address.city ]]

cadena

Ciudad del contacto proporcionada en la dirección de envío

Dirección 1 y

[[ order.shipping_address.address1 ]]

cadena

Dirección del contacto (1ª línea) proporcionada en la dirección de envío

Dirección 2

[[ order.shipping_address.address2 ]]

string

Dirección del contacto (2ª línea) proporcionada en la dirección de envío

Código postal

[[ order.shipping_address.zip ]]

string

Código postal del contacto proporcionado en la dirección de envío

Empresa

[[ order.shipping_address.company ]]

string

Título de la empresa del contacto proporcionado en la dirección de envío

Teléfono

[[ order.shipping_address.phone ]]

string

Número de teléfono del contacto proporcionado en la dirección de envío

Propiedades del carrito (Solo Automatización)

Título del desplegable

Etiqueta

Tipo de valor

Descripción

URL del carrito abandonado

[[ abandoned_cart.recover_url ]]

string

URL para alcanzar/recuperar el carrito abandonado

Resolución de problemas

La personalización muestra código sin procesar en los correos electrónicos

Causa: Estás viendo un correo electrónico de prueba en lugar de un correo electrónico en vivo.

Solución: Los correos electrónicos de prueba siempre muestran etiquetas Liquid en bruto ([[ contact.first_name ]]). Para probar la personalización:

  • Utiliza Prueba y Vista previa en el editor y selecciona un contacto real.

  • O envía la campaña/automatización en vivo a tu propio correo electrónico (asegúrate de que tu perfil de contacto tenga datos).

La personalización no se transforma en correos electrónicos en vivo.

Causa: La etiqueta Liquid puede haber perdido integridad si se editó parcialmente.

Solución: Elimina toda la etiqueta de personalización y reinserta utilizando el icono de Etiqueta de Personalización en la barra de herramientas, o escribe @ en el bloque de texto. Esto asegura que la etiqueta esté formateada correctamente.

El texto de respaldo no funciona

Causa: Sintaxis incorrecta o comillas faltantes.

Solución: Asegúrate de que los valores de respaldo estén entre comillas:

  • 1 [[ contact.first_name | default: 'there' ]]

  • [[ contact.first_name | default: there ]]

La lógica condicional no funciona en Campañas

Causa: Las etiquetas y las declaraciones condicionales solo funcionan en Flujos de trabajo de Automatización.

Solución: Use lógica condicional en automatizaciones – no en Campañas.

FAQ

¿Puedo usar Liquid en SMS y Notificaciones Push?

Sí. Los objetos y filtros de Liquid funcionan en Correo electrónico, SMS y notificaciones push. La lógica condicional solo funciona en Automatización.

¿Cuál es la diferencia entre {{ }} y [[ ]]?

Shopify utiliza {{ }} para objetos Liquid. Omnisend utiliza [[ ]]. Si estás copiando código Liquid de la documentación de Shopify, reemplaza las llaves por corchetes.

¿Necesito agregar valores de respaldo?

Sí. Siempre agrega respaldos para evitar espacios en blanco cuando faltan datos del contacto:
[[ contact.first_name | default: 'there' ]]

¿Puedo combinar múltiples filtros?

Sí. Cadena de filtros con | símbolos:
[[ contact.first_name | capitalize | default: 'there' ]]

¿Dónde puedo encontrar más ejemplos de Liquid?

Aprende más en la documentación de Liquid de Shopify recuerda reemplazar {{ }} con [[ ]] y {% %} con [% %] en Omnisend.


Puedes contactar a nuestro galardonado equipo de soporte para cualquier asistencia adicional a través del chat en la aplicación o en [email protected].

¿Ha quedado contestada tu pregunta?