Etiquetas de personalización compatibles
Este artículo de referencia cubre una lista completa de las etiquetas de personalización de Liquid compatibles.
Resumen de las etiquetas compatibles
A modo de referencia, se proporciona un resumen de las etiquetas de personalización compatibles. Para más detalles sobre cada tipo de etiqueta y las mejores prácticas, sigue leyendo.
| Tipo de etiqueta de personalización | Etiquetas |
|---|---|
| Atributos estándar (predeterminados) | {{${city}}} {{${country}}} {{${date_of_birth}}} {{${email_address}}} {{${first_name}}} {{${gender}}} {{${language}}} {{${last_name}}} {{${last_used_app_date}}} {{${most_recent_app_version}}} {{${most_recent_locale}}} {{${most_recent_location}}} {{${phone_number}}} {{${time_zone}}} {{${user_id}}} {{${braze_id}}} {{${random_bucket_number}}} {{subscribed_state.${email_global}}} {{subscribed_state.${subscription_group_id}}} |
| Atributos de dispositivo | {{most_recently_used_device.${carrier}}} {{most_recently_used_device.${id}}} {{most_recently_used_device.${idfa}}} {{most_recently_used_device.${model}}} {{most_recently_used_device.${os}}} {{most_recently_used_device.${platform}}} {{most_recently_used_device.${google_ad_id}}} {{most_recently_used_device.${roku_ad_id}}} {{most_recently_used_device.${foreground_push_enabled}}} |
| Atributos de lista de correo electrónico | {{${set_user_to_unsubscribed_url}}} Esta etiqueta reemplaza a la anterior {{${unsubscribe_url}}}. Aunque la etiqueta antigua sigue funcionando en correos electrónicos creados previamente, te recomendamos que uses la nueva en su lugar. {{${set_user_to_one_click_list_unsubscribe}}} {{${set_user_to_subscribed_url}}} {{${set_user_to_opted_in_url}}} |
| Atributos de SMS | {{sms.${inbound_message_body}}} {{sms.${inbound_media_urls}}} |
| Atributos de WhatsApp | {{whats_app.${inbound_message_body}}} {{whats_app.${inbound_media_urls}}} {{whats_app.${inbound_flow_response}}} {{whats_app.${inbound_product_id}}} {{whats_app.${inbound_catalog_id}}} |
| Atributos de campaña y atributos de paso en Canvas | {{campaign.${api_id}}} {{campaign.${dispatch_id}}} {{campaign.${name}}} {{campaign.${message_name}}} {{campaign.${message_api_id}}} |
| Atributos de Canvas | {{canvas.${name}}} {{canvas.${api_id}}} {{canvas.${variant_name}}} {{canvas.${variant_api_id}}} |
| Atributos de tarjeta | {{card.${api_id}}} {{card.${name}}} |
| Eventos de geovallado | {{event_properties.${geofence_name}}} {{event_properties.${geofence_set_name}}} |
| Propiedades del evento (Son personalizadas para tu espacio de trabajo.) |
{{event_properties.${your_custom_event_property}}} |
| Variables de contexto de Canvas | {{context.${your_context_variable}}} |
| Atributos personalizados (Son personalizados para tu espacio de trabajo.) |
{{custom_attribute.${your_custom_attribute}}} |
| Propiedades de desencadenamiento de API | {{api_trigger_properties.${your_api_trigger_property}}} |
| Propiedades de entrada de Canvas | {{context.${property_name}}} |
Atributos compatibles
Los atributos de campaña, tarjeta y Canvas solo son compatibles en sus plantillas de mensajería correspondientes (por ejemplo, dispatch_id no está disponible en campañas de mensajes dentro de la aplicación).
Consulta este artículo de ayuda para obtener más información sobre cómo algunos de estos atributos difieren entre fuentes en Braze.
Diferencias entre etiquetas de Canvas y de campaña
El comportamiento de las siguientes etiquetas difiere entre Canvas y las campañas:
dispatch_idse comporta de manera diferente porque Braze trata los pasos de Canvas como eventos desencadenados, incluso cuando están “planificados” (excepto los pasos de entrada, que pueden planificarse). Para obtener más información, consulta Comportamiento de dispatch ID.- Usar la etiqueta
{{campaign.${name}}}con Canvas muestra el nombre del componente de Canvas. Cuando se usa esta etiqueta con campañas, muestra el nombre de la campaña.
Información del dispositivo usado más recientemente
Puedes usar como plantilla los siguientes atributos del dispositivo más reciente del usuario en todas las plataformas. Si un usuario no ha utilizado tu aplicación (por ejemplo, si importaste al usuario a través de la API REST), todos estos valores serán null.
| Etiqueta | Descripción |
|---|---|
{{most_recently_used_device.${browser}}} |
El navegador usado más recientemente en el dispositivo del usuario. Algunos ejemplos son “Chrome” y “Safari”. |
{{most_recently_used_device.${id}}} |
El identificador de dispositivo de Braze. En iOS, puede ser el identificador de proveedor de Apple (IDFV) o un UUID. Para Android y otras plataformas, es un UUID generado aleatoriamente. |
{{most_recently_used_device.${carrier}}} |
El operador de servicio telefónico del dispositivo usado más recientemente, si está disponible. Algunos ejemplos son “Verizon” y “Orange”. |
{{most_recently_used_device.${ad_tracking_enabled}}} |
Si el dispositivo tiene habilitado el seguimiento de anuncios o no. Es un valor booleano (true o false). |
{{most_recently_used_device.${idfa}}} |
Para dispositivos iOS, este valor es el identificador de publicidad (IDFA) si tu aplicación está configurada con nuestra recopilación opcional de IDFA. Para dispositivos que no son iOS, este valor es null. |
{{most_recently_used_device.${google_ad_id}}} |
Para dispositivos Android, este valor es el identificador de publicidad de Google Play si tu aplicación está configurada con nuestra recopilación opcional del identificador de publicidad de Google Play. Para dispositivos que no son Android, este valor es null. |
{{most_recently_used_device.${roku_ad_id}}} |
Para dispositivos Roku, este valor es el identificador de publicidad de Roku que se recopila cuando tu aplicación está configurada con Braze. Para dispositivos que no son Roku, este valor es null. |
{{most_recently_used_device.${model}}} |
El nombre del modelo del dispositivo, si está disponible. Algunos ejemplos son “iPhone 6S”, “Nexus 6P” y “Firefox”. |
{{most_recently_used_device.${os}}} |
El sistema operativo del dispositivo, si está disponible. Algunos ejemplos son “iOS 9.2.1”, “Android (Lollipop)” y “Windows”. |
{{most_recently_used_device.${platform}}} |
La plataforma del dispositivo, si está disponible. Si está configurada, el valor es uno de ios, android, kindle, android_china, web o tvos. |
Dado que existe una amplia variedad de operadores de dispositivos, nombres de modelos y sistemas operativos, te recomendamos que pruebes exhaustivamente cualquier Liquid que dependa condicionalmente de alguno de esos valores. Estos valores son null si no están disponibles en un dispositivo en particular.
Información de la aplicación objetivo
Para mensajes dentro de la aplicación, puedes usar los siguientes atributos de la aplicación dentro de Liquid. Los valores se basan en la clave de API de SDK que tus aplicaciones usan para solicitar la mensajería.
| Etiqueta | Descripción |
|---|---|
{{app.${api_id}}} |
La clave de API de la aplicación que solicita el mensaje. Por ejemplo, puedes usar esta clave junto con abort_message() de Liquid para evitar enviar mensajes dentro de la aplicación a ciertas aplicaciones, como plataformas de TV o compilaciones de desarrollo que usan una clave de API de SDK diferente. |
{{app.${name}}} |
El nombre de la aplicación (tal como se define en el panel de Braze) que solicita el mensaje. |
Por ejemplo, este código Liquid cancela un mensaje si las aplicaciones que lo solicitan no son una de las dos claves de API de la lista:
1
2
3
4
5
6
{% assign allowed_api_keys = 'sdk_api_key_1,sdk_api_key_2' | split: ',' %}
{% if allowed_api_keys contains {{app.${api_id}}} %}
User is in list of apps
{% else %}
{% abort_message("User not in list of apps") %}
{% endif %}
Información del dispositivo objetivo
Para notificaciones push, mensajes dentro de la aplicación y Banners, puedes usar como plantilla los siguientes atributos del dispositivo que recibe el mensaje. Una notificación push, un mensaje dentro de la aplicación o un Banner puede incluir atributos del dispositivo en el que el usuario lee el mensaje. Estos atributos no funcionan para Tarjetas de contenido ni correos electrónicos. Para los correos electrónicos, los mensajes se renderizan antes de enviarse, por lo que el dispositivo en el que el usuario abre el correo electrónico es desconocido en ese momento.
| Etiqueta | Descripción |
|---|---|
{{targeted_device.${id}}} |
Este es el identificador de dispositivo de Braze. En iOS, puede ser el identificador de proveedor de Apple (IDFV) o un UUID. Para Android y otras plataformas, es un UUID generado aleatoriamente. Por ejemplo, si un usuario tiene cinco dispositivos, se realiza un intento de envío para los cinco dispositivos, cada uno usando el identificador de dispositivo correspondiente. Si un mensaje está configurado para enviarse al dispositivo usado más recientemente del usuario, solo se realiza un intento de envío al dispositivo usado más recientemente identificado a través de Braze. |
{{targeted_device.${carrier}}} |
El operador de servicio telefónico del dispositivo usado más recientemente, si está disponible. Algunos ejemplos son “Verizon” y “Orange”. |
{{targeted_device.${idfa}}} |
Para dispositivos iOS, este valor es el identificador de publicidad (IDFA) si tu aplicación está configurada con nuestra recopilación opcional de IDFA. Para dispositivos que no son iOS, este valor es null. |
{{targeted_device.${google_ad_id}}} |
Para dispositivos Android, este valor es el identificador de publicidad de Google Play si tu aplicación está configurada con nuestra [recopilación opcional del identificador de publicidad de Google Play]. Para dispositivos que no son Android, este valor es null. |
{{targeted_device.${roku_ad_id}}} |
Para dispositivos Roku, este valor es el identificador de publicidad de Roku que se recopila cuando tu aplicación está configurada con Braze. Para dispositivos que no son Roku, este valor es null. |
{{targeted_device.${model}}} |
El nombre del modelo del dispositivo, si está disponible. Algunos ejemplos son “iPhone 6S”, “Nexus 6P” y “Firefox”. |
{{targeted_device.${os}}} |
El sistema operativo del dispositivo, si está disponible. Algunos ejemplos son “iOS 9.2.1”, “Android (Lollipop)” y “Windows”. |
{{targeted_device.${platform}}} |
La plataforma del dispositivo, si está disponible. Si está configurada, el valor es uno de ios, android, kindle, android_china, web o tvos. También puedes usar la etiqueta de personalización most_recently_used_device. |
{{targeted_device.${foreground_push_enabled}}} |
Este valor es true cuando el dispositivo objetivo tiene habilitadas las notificaciones push en primer plano, false en caso contrario. |
Dado que existe una amplia variedad de operadores de dispositivos, nombres de modelos y sistemas operativos, te recomendamos que pruebes exhaustivamente cualquier lógica que dependa condicionalmente de alguno de esos valores. Estos valores son null si no están disponibles en un dispositivo en particular.
Además, para las notificaciones push, es posible que Braze no pueda determinar el dispositivo asociado a la notificación push en ciertas circunstancias, como cuando el token de notificaciones push se importó a través de la API, lo que resulta en valores null para esos mensajes.

Usar lógica condicional en lugar de un valor predeterminado
En algunas circunstancias, puedes optar por usar lógica condicional en lugar de establecer un valor predeterminado. La lógica condicional te permite enviar mensajes que difieren según el valor de un atributo personalizado. Además, puedes usar lógica condicional para cancelar mensajes a clientes con valores de atributo nulos o en blanco.
Caso de uso
Por ejemplo, supongamos que estás enviando una notificación de saldo de recompensas a los clientes. No hay una buena forma de tener en cuenta a los clientes con saldos bajos y nulos usando valores predeterminados.
En este caso, hay dos opciones que pueden funcionar mejor que establecer un valor predeterminado:
-
Cancelar el mensaje para clientes con saldos bajos, nulos y en blanco.
1 2 3 4 5
{% if {{custom_attribute.${balance}}} > 0 %} Your rewards balance is {{custom_attribute.${balance}}} {% else %} {% abort_message() %} {% endif %}
-
Enviar un mensaje completamente diferente a estos clientes, como:
1 2 3 4 5
{% if ${first_name} != blank and ${first_name} != null %} Hello {{${first_name} | default: 'there'}}, thanks for downloading! {% else %} Thanks for downloading! {% endif %}
En este caso de uso, un usuario con un nombre en blanco o nulo recibe el mensaje “Thanks for downloading”. Deberías incluir un valor predeterminado para el nombre para asegurarte de que tu cliente no vea Liquid en caso de un error.
Etiquetas de variable
Puedes usar la etiqueta assign para crear una variable en el creador de mensajes. Te recomendamos usar un nombre único para tu variable. Si creas una variable con un nombre similar a las etiquetas de personalización compatibles (como language), esto puede afectar tu lógica de mensajería.
Después de crear una variable, puedes hacer referencia a ella en tu lógica de mensajería o mensaje. Esta etiqueta es útil cuando quieres reformatear contenido que se devuelve desde nuestra función de Contenido conectado. Puedes leer más en la documentación de Shopify sobre etiquetas de variable.

¿Te encuentras asignando las mismas variables en cada mensaje? En lugar de escribir la etiqueta assign una y otra vez, puedes guardar esa etiqueta como un bloque de contenido y colocarla al inicio de tu mensaje.
- Crea un bloque de contenido.
- Dale un nombre a tu bloque de contenido (sin espacios ni caracteres especiales).
- Selecciona Editar en la parte inferior de la página.
- Escribe tus etiquetas
assign.
Siempre que el bloque de contenido esté al inicio de tu mensaje, cada vez que la variable se inserte en tu mensaje como un objeto, hará referencia a tu atributo personalizado elegido.
Caso de uso
Supongamos que permites a tus clientes canjear sus puntos de recompensa por premios después de acumular 100 puntos de recompensa. Entonces, solo quieres enviar mensajes a los clientes que tendrían un saldo de puntos mayor o igual a 100 si realizaran esa compra adicional:
1
2
3
4
5
6
{% assign new_points_balance = {{custom_attribute.${current_rewards_balance} | plus: 50}} %}
{% if new_points_balance >= 100 %}
Make a purchase to bring your rewards points to {{new_points_balance}} and cash in today!
{% else %}
{% abort_message('not enough points') %}
{% endif %}
Etiquetas de iteración
Las etiquetas de iteración se pueden usar para ejecutar un bloque de código repetidamente. El caso de uso a continuación presenta la etiqueta for.
Caso de uso
Supongamos que tienes una oferta en zapatillas Nike y quieres enviar mensajes a los clientes que han expresado interés en Nike. Tienes un array de marcas de productos vistos en el perfil de cada cliente. Este array podría contener hasta 25 marcas de productos, pero solo quieres enviar mensajes a los clientes que vieron un producto Nike como una de sus 5 vistas de productos más recientes.
1
2
3
4
5
6
7
8
9
10
{% for items in {{custom_attribute.${Brands Viewed}}} limit:5 %}
{% if {{items}} contains 'Converse' %}
{% assign converse_viewer = true %}
{% endif %}
{% endfor %}
{% if converse_viewer == true %}
Sale on Converse!
{% else %}
{% abort_message() %}
{% endif %}
En este caso de uso, verificamos los primeros cinco elementos del array de marcas de zapatillas vistas. Si uno de esos elementos es Converse, creamos la variable converse_viewer y la establecemos como true.
Luego, enviamos el mensaje de oferta cuando converse_viewer es true. De lo contrario, cancelamos el mensaje.
Este es un ejemplo sencillo de cómo se pueden usar las etiquetas de iteración en el creador de mensajes de Braze. Puedes encontrar más información en la documentación de Shopify sobre etiquetas de iteración.
Etiquetas de sintaxis
Las etiquetas de sintaxis se pueden usar para controlar cómo se renderiza Liquid. Puedes usar la etiqueta echo para devolver una expresión. Esto es lo mismo que envolver una expresión usando llaves, excepto que puedes usar esta etiqueta dentro de etiquetas de Liquid. También puedes usar la etiqueta liquid para tener un bloque de Liquid sin delimitadores en cada etiqueta. Cada etiqueta debe estar en su propia línea cuando se usa la etiqueta liquid. Consulta la documentación de Shopify sobre etiquetas de sintaxis para más información y ejemplos.
Con el control de espacios en blanco, puedes eliminar los espacios en blanco alrededor de tus etiquetas, lo que te ayuda a controlar aún más cómo se ve la salida de Liquid.
Códigos de estado HTTP
Puedes utilizar el estado HTTP de una llamada de Contenido conectado guardándolo primero como una variable local y luego usando la clave __http_status_code__. Por ejemplo:
1
2
3
4
{% connected_content https://example.com/api/endpoint :save connected %}
{% if connected.__http_status_code__ != 200 %}
{% abort_message('Connected Content returned a non-200 status code') %}
{% endif %}

Esta clave solo se agrega automáticamente al objeto de Contenido conectado si el punto de conexión devuelve un objeto JSON. Si el punto de conexión devuelve un array u otro tipo, esa clave no se puede establecer automáticamente en la respuesta.
Enviar mensajes según el idioma, la configuración regional más reciente y la zona horaria
En algunas situaciones, es posible que desees enviar mensajes específicos para configuraciones regionales particulares. Por ejemplo, el portugués brasileño es típicamente diferente del portugués europeo.
Caso de uso: localizar según la configuración regional más reciente
Aquí tienes un caso de uso de cómo puedes usar la configuración regional más reciente para localizar aún más un mensaje internacionalizado.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
{% if ${language} == 'en' %}
Message in English
{% elsif ${language} == 'fr' %}
Message in French
{% elsif ${language} == 'ja' %}
Message in Japanese
{% elsif ${language} == 'ko' %}
Message in Korean
{% elsif ${language} == 'ru' %}
Message in Russian
{% elsif ${most_recent_locale} == 'pt_BR' %}
Message in Brazilian Portuguese
{% elsif ${most_recent_locale} == 'pt_PT' %}
Message in European Portuguese
{% elsif ${language} == 'pt' %}
Message in default Portuguese
{% else %}
Message in default language
{% endif %}
En este caso de uso, los clientes con una configuración regional más reciente de pt_BR reciben un mensaje en portugués brasileño, y los clientes con una configuración regional más reciente de pt_PT reciben un mensaje en portugués europeo. Los clientes que no cumplen las dos primeras condiciones pero tienen su idioma configurado como portugués reciben un mensaje en el tipo de portugués que desees como predeterminado.
Caso de uso: dirigirse a usuarios por zona horaria
También puedes dirigirte a los usuarios por su zona horaria. Por ejemplo, enviar un mensaje si están en EST y otro si están en PST. Para hacer esto, guarda la hora actual en UTC y compara una declaración if/else con la hora actual del usuario para enviar el mensaje correcto para la zona horaria correcta. Deberías configurar la campaña para que se envíe en la zona horaria local del usuario, para que reciban la campaña en el momento adecuado.
Consulta el siguiente caso de uso sobre cómo escribir un mensaje que se entrega entre las 2 pm y las 3 pm con un mensaje específico para cada zona horaria.
1
2
3
4
5
6
7
8
{% assign hour_in_utc = 'now' | date: '%H' | plus:0 %}
{% if hour_in_utc >= 19 && hour_in_utc < 20 %}
It is between 2:00:00 pm and 2:59:59 pm ET!
{% elsif hour_in_utc >= 22 && hour_in_utc < 23 %}
It is between 2:00:00 pm and 2:59:59 pm PT!
{% else %}
{% abort_message %}
{% endif %}
Enviar mensajes con un número aleatorio
La etiqueta {% random %} devuelve un número aleatorio. Puedes usarla para lógica de estilo A/B, muestreo o variar el contenido del mensaje.
| Etiqueta | Descripción |
|---|---|
{% random %} |
Un número decimal entre 0 y 1 (incluye 0, excluye 1). |
{% random 10 %} (argumento entero) |
Un entero que va desde 0 hasta, pero sin incluir, el entero especificado. Por ejemplo, {% random 10 %} devuelve un entero de 0 a 9. |
Caso de uso: enviar variantes aleatorias a los usuarios
1
2
3
4
5
6
7
{% capture roll_str %}{% random %}{% endcapture %}
{% assign roll = roll_str | plus: 0 %}
{% if roll < 0.5 %}
Show variant A
{% else %}
Show variant B
{% endif %}
Etiqueta de carrito de compras de comercio electrónico
La etiqueta shopping_cart accede al contenido del carrito de un usuario en los casos de uso de Canvas de comercio electrónico de carrito abandonado y pago abandonado. Reemplaza CART_ID con el valor real del ID del carrito, como {{context.${cart_id}}}.
1
{% shopping_cart CART_ID :abort_if_not_abandoned false %}
El parámetro abort_if_not_abandoned en este ejemplo se aplica solo al caso de uso de pago abandonado cuando se usa con el evento ecommerce.checkout_started. No es aplicable a los casos de uso de carrito abandonado. Para más detalles, consulta abort_if_not_abandoned.