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 personalización antes de enviar – Los correos de prueba muestran etiquetas Liquid en bruto ([[ contact.first_name ]]). Usar Prueba y Vista Previa en el editor y selecciona un contacto real para ver cómo se llena la personalización.

  • Siempre añade valores de fallback – Usa | por defecto: '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 generan datos de contacto o pedido ([[ contact.first_name ]])

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

  3. Filtros – Modificar 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' %]

📝 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 cuadrados.

[[ contact.first_name ]]

Grupos de objetos disponibles:

  • Propiedades de Contacto: [[ contact.variable ]] (nombre, correo electrónico, ubicación, propiedades personalizadas)

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

  • Propiedades del pedido: [[ order.variable ]] (ID de pedido, total, artículos) – Automatización Workflows solo

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

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

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

Filtros

Los filtros cambian la salida de un objeto Liquid. Los filtros están separados por un símbolo de barra vertical |.


Ejemplo:

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

Filtros comunes:

  • default – Añadir texto de fallback cuando faltan datos:[[ contact.first_name | default: 'there' ]]

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

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

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

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

  • vocative – Ajustar nombres a la forma vocativa en idiomas compatibles:[[ contact.first_name | vocative ]]

Aprende más sobre filtros Liquid en la documentación de Shopify – recuerda usar la sintaxis 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 etiquetas Liquid en la documentación de Shopify.

Casos de uso comunes

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

Personalización

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

Salida: "¡Hola Sarah, bienvenida 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 Fallback

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

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

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

  • Con respaldo: Hola [[ contact.first_name | default: 'ahí' ]] → "Hola ahí"

  • Sin fallback: Hola [[ contact.first_name ]] → "Hola "

Siempre añade fallbacks para evitar espacios en blanco incómodos.

Inserción de variables en mensajes

Inserta variables Liquid en:

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

  • Texto del cuerpo del correo electrónico:El total de su pedido: [[ order.total_price ]] [[ order.currency ]]

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

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

  • Enlaces de botones:[[ 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 menú 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 del 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 ]]

cadena

Número de teléfono del contacto

Propiedades de la Cuenta

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 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 del 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 ]]

cadena

Número de teléfono del contacto

Propiedades de la Cuenta

Título del desplegable

Etiqueta

Tipo de valor

Descripción

Nombre

[[ account.name ]]

cadena

Nombre de la cuenta

Dirección

[[ account.address ]]

cadena

Dirección de la cuenta

Ciudad

[[ account.city ]]

cadena

Ciudad de la cuenta

Código ZIP / Postal

[[ account.zipCode ]]

cadena

Código ZIP / Postal de la cuenta

País

[[ account.country ]]

cadena

País de la cuenta

URL del sitio web

[[ account.website ]]

cadena

URL del sitio web de la cuenta

Zona horaria

[[ account.timezone ]]

cadena

Zona horaria de la cuenta

Moneda

[[ account.currency ]]

cadena

Moneda de la cuenta

Propiedades de fecha

Título del menú 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 en que 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 ]]

cadena

ID del pedido

Número de pedido

[[ order.order_number ]]

int64

Número del pedido

Nombre del pedido

[[ order.order_name ]]

cadena

Nombre del pedido

Fecha del pedido

[[ order.order_date ]]

Fecha

Fecha en que se crea el pedido

Moneda

[[ order.currency ]]

cadena

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 estado del pedido

[[ order.order_url ]]

cadena

URL para acceder a la información exacta del pedido

Nota del pedido

[[ order.note ]]

cadena

Notas adicionales del pedido

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

Título del desplegable

Etiqueta

Tipo de valor

Descripción

Nombre

[[ order.billing_address.first_name ]]

cadena

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

cadena

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

Apellido

[[ order.shipping_address.last_name ]]

cadena

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

cadena

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

Código postal

[[ order.shipping_address.zip ]]

cadena

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

Compañía

[[ order.shipping_address.company ]]

cadena

Título de la compañía del contacto proporcionado en la dirección de envío

Teléfono

[[ order.shipping_address.phone ]]

cadena

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

cadena

URL para alcanzar/recuperar el carrito abandonado

Solución de problemas

La personalización muestra código en bruto en los correos

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 en vivo

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

Solución: Elimina toda la etiqueta de personalización y reinserta utilizando el menú de Etiqueta de Personalización en el editor.

El texto de respaldo no funciona

Causa: Sintaxis incorrecta o comillas faltantes.

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

  • [[ 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 alternativas para evitar espacios en blanco cuando faltan datos de contacto:
[[ contact.first_name | default: 'there' ]]

¿Puedo combinar múltiples filtros?

Sí. Encadene 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?