Hacer coincidir artículos del catálogo con un arreglo de atributos personalizados
Cuando cada usuario guarda una lista de nombres de productos en su perfil, usa una selección de catálogo junto con Liquid para mostrar solo las filas del catálogo que aparecen en esa lista; por ejemplo, un correo electrónico de lista de deseos.
Acerca de este ejemplo
Flash & Thread almacena los nombres de productos guardados de cada cliente en un atributo personalizado de tipo arreglo de cadenas (saved_product_names). Su catálogo contiene los detalles completos de cada producto (categoría, precio, URL de imagen, inventario).
Las selecciones de catálogo pueden filtrar columnas del catálogo contra valores estáticos o de Liquid, incluidos campos de tipo arreglo en las filas del catálogo. No filtran una fila del catálogo contra valores almacenados en un arreglo del perfil de usuario. Para personalizar a partir de la lista del usuario, devuelve un conjunto amplio de elementos del catálogo con una selección y luego usa Liquid para conservar solo las filas que coincidan con el arreglo del perfil.
Este patrón:
- Asigna el atributo personalizado de tipo arreglo del usuario a una variable de Liquid.
- Llama a
catalog_selection_itemspara una selección de catálogo prefiltrada (hasta 50 elementos). - Itera sobre
itemsy usacontainspara comparar cada campo del catálogo (por ejemplo,nameoid) con el arreglo.

Este patrón solo funciona cuando el conjunto de resultados de la selección (hasta 50 filas de catálogo) puede contener de forma plausible los elementos guardados de cada usuario; por ejemplo, catálogos pequeños o catálogos donde los filtros reducen la selección lo suficiente como para cubrir una lista típica. Si los elementos guardados de un usuario quedan fuera de las 50 filas devueltas, el bucle no encuentra coincidencias y el mensaje no muestra nada para esos elementos; ningún filtro resuelve esto en el caso general, porque la selección no puede comparar contra el arreglo del perfil del usuario.
Consideraciones
- Prueba los datos de Liquid y de catálogo en un espacio de trabajo de prueba antes de enviar a los clientes.
- Dado que una selección devuelve como máximo 50 filas de catálogo, añade filtros (por ejemplo, en stock, categoría activa o rango de precio) que mantengan los artículos guardados probables de cada usuario dentro de ese conjunto de resultados.
- Este ejemplo utiliza un array de cadenas en el perfil de usuario.
- Para un array de objetos, haz coincidir con una propiedad dentro de cada objeto (por ejemplo,
product_id) y ajusta la verificacióncontainso usa un bucleforsobre los objetos. Consulta Array de objetos. - El comportamiento de
containsdepende del tipo de atributo; para arrays, usacontainsen lugar de==. Consulta Lógica condicional. - Haz coincidir con identificadores estables (por ejemplo,
idde catálogo) cuando los nombres de producto puedan cambiar o duplicarse. - Los fragmentos de código de Liquid en este artículo son ejemplos. Valida la representación en tus canales (correo electrónico HTML, push, etc.).
Configuración
Este ejemplo asume lo siguiente:
| Activo | Detalles |
|---|---|
| Atributo personalizado | saved_product_names — matriz de cadenas (por ejemplo, ["linen_shirt", "trail_jacket", "canvas_tote"]) |
| Catálogo | apparel_products con columnas id, category, name, price, inventory, image_url |
| Selección | in_stock_apparel en apparel_products, límite de resultados 50, con filtros que excluyen filas irrelevantes (por ejemplo, inventory mayor que 0) |
Paso 1: Crear el catálogo y la selección
- Importa o sincroniza las filas de productos en un catálogo llamado
apparel_products. - Crea una selección (por ejemplo,
in_stock_apparel) que devuelva tantas filas relevantes como necesites, hasta el límite de 50 elementos. - Añade filtros de selección para descartar filas que nunca quieras incluir en el mensaje (sin existencias, categoría incorrecta, etc.).
Para configurar la selección, consulta Selecciones.
Paso 2: Añadir Liquid en tu mensaje
Asigna la matriz del perfil, carga la selección y recorre con contains:
{% assign saved_product_names = custom_attribute.${saved_product_names} %}
{% catalog_selection_items apparel_products in_stock_apparel %}
{% for item in items %}
{% if saved_product_names contains item.name %}
Product: {{ item.name }}
Category: {{ item.category }}
Price: ${{ item.price }}
Image: {{ item.image_url }}
{% endif %}
{% endfor %}
Sustituye item.name por item.id (u otra columna) si tu matriz almacena ID en lugar de nombres de visualización. Añade espacios o HTML entre los campos según tu canal. En ${{ item.price }}, el $ es un símbolo de moneda literal que se imprime antes de la salida de Liquid; no forma parte de la sintaxis de personalización ${} de Braze.
Para generar este Liquid de forma automática, abre el modal Añadir personalización (Elementos de catálogo > Usar una selección). Consulta Uso de catálogos.
Paso 3: Vista previa y prueba
Envía mensajes de prueba a perfiles con diferentes valores de saved_product_names. Confirma que solo aparecen las filas de catálogo coincidentes y que una matriz vacía no genera líneas de producto.