Filtrar elementos de catálogo por rango de fechas
Este ejemplo muestra cómo un mercado de entradas ficticio usa selecciones de catálogo y expresiones de fecha en Liquid para enviar por correo electrónico a los consumidores solo los eventos que están próximos dentro de los siguientes siete días desde el momento del envío. Creas una selección con filtros de tiempo dinámicos y luego renderizas los elementos de catálogo coincidentes en un mensaje de Campaign o Canvas.
Acerca de este ejemplo
MovieCanon, un mercado de entradas ficticio, utiliza este patrón para asegurar que las Campaigns de correo electrónico listen solo conciertos y espectáculos relevantes en el tiempo.
El patrón utiliza dos características de Braze en conjunto:
- Una selección de catálogo con filtros de campo
timecuyos valores son fragmentos de código Liquid que calculan una ventana de tiempo dinámica en el momento del envío - La etiqueta de Liquid
{% catalog_selection_items %}en el cuerpo del mensaje para renderizar las filas del catálogo que coincidan
Consideraciones
- Crea un campo
timeen el catálogo para la columna de fecha y hora por la que filtras, no un campo de cadena. Almacena los valores en formato ISO 8601, como2026-06-20T19:30:00Z. Para conocer los tipos compatibles, consulta Tipos de datos compatibles. - Los operadores
beforeyafterutilizan comparaciones estrictas. Los eventos exactamente iguales a una marca de tiempo límite pueden quedar excluidos. Usa marcas de tiempo completas cuando necesites que la ventana comience en el momento del envío. Los valores con solo fechaYYYY-MM-DDse convierten a medianoche UTC de ese día. - El Liquid en los filtros de selección se evalúa en el momento del envío. La variable
'now'refleja cuándo se renderiza el mensaje, normalmente en UTC. Confirma que la ventana resultante coincida con tu intención en todas las zonas horarias. - Contenido conectado, Content Blocks, etiquetas de catálogo y
abort_messageno son compatibles en los valores de filtro de selección de catálogo. Si un filtro incluye una etiqueta no permitida, la selección no devuelve ningún elemento sin generar un error. - Puedes añadir hasta 10 filtros por selección y devolver hasta 50 elementos. Ajusta la ventana de siete días cambiando los segundos que se suman a
'now'(604800= 7 días multiplicados por86400segundos por día). - Los arrays de resultados de selección de catálogo tienen índice cero (
items[0]es el primer elemento). - Prueba el Liquid de los filtros, el Liquid de los mensajes y la lógica de cancelación fuera de tu espacio de trabajo de producción antes de enviar a audiencias de producción.
Configuración
Este ejemplo asume un catálogo llamado live_events con estos campos:
| Campo | Tipo | Valor de ejemplo |
|---|---|---|
id |
String | show-1042 |
event_name |
String | Summer Jazz Night |
event_date_time |
Time | 2026-06-20T19:30:00Z |
ticket_price |
Number | 45 |
city |
String | Austin |
venue |
String | Riverside Amphitheater |
Si aún no tienes un catálogo similar, crea un catálogo y carga o sincroniza los datos de tus eventos primero.
Paso 1: Crear la selección de catálogo
- Ve a Configuración de datos > Catálogos y selecciona el catálogo
live_events. - Abre la pestaña Selection y selecciona Create Selection.
- Nombra la selección
seven_day_windowy añade una descripción opcional, como “Eventos que ocurren dentro de los próximos siete días.” - Establece un Límite de resultados para el número máximo de eventos a devolver (hasta 50).
- No guardes todavía. Añade los filtros de fecha en los siguientes pasos.
Paso 2: Añadir el filtro de límite superior
Añade un filtro en el campo event_date_time:
| Configuración | Valor |
|---|---|
| Campo de filtro | event_date_time |
| Operador | before |
| Valor | Fragmento de código Liquid |
En el campo de valor del filtro, introduce este fragmento de código Liquid. Calcula una marca de tiempo siete días a partir del momento del envío:
{% assign seven_days = 'now' | date: '%s' | plus: 604800 %}{{ seven_days | date: "%Y-%m-%dT%H:%M:%SZ" }}
Esto establece el límite superior de la ventana para que solo se incluyan eventos anteriores a esa marca de tiempo.
Paso 3: Añadir el filtro de límite inferior
Añade un segundo filtro en el mismo campo:
| Configuración | Valor |
|---|---|
| Campo de filtro | event_date_time |
| Operador | after |
| Valor | Fragmento de código Liquid |
Introduce este fragmento de código Liquid para el límite inferior. Utiliza el momento de envío actual para que se excluyan los eventos que ya han comenzado:
{{ 'now' | date: "%Y-%m-%dT%H:%M:%SZ" }}
Juntos, los dos filtros devuelven elementos del catálogo donde event_date_time es posterior al momento de envío actual y anterior a siete días a partir del momento de envío. Selecciona Create Selection para guardar.
Paso 4: Hacer referencia a la selección en un mensaje
En tu Campaign o mensaje de Canvas, inserta Liquid que extraiga elementos de la selección. Puedes usar Add personalization (Catalog Items > Use a selection) o pegar la etiqueta manualmente:
{% catalog_selection_items live_events seven_day_window %}
Here are some upcoming events:
{{ items[0].event_name }} — ${{ items[0].ticket_price }}
{{ items[0].city }} · {{ items[0].venue }}
{{ items[1].event_name }} — ${{ items[1].ticket_price }}
{{ items[1].city }} · {{ items[1].venue }}
Reemplaza los índices de array codificados con un bucle si necesitas renderizar un número variable de resultados.
Paso 5: Manejar resultados vacíos
Cuando ningún elemento del catálogo coincide con la selección, el array items está vacío y el bloque etiquetado no renderiza nada. Para omitir el envío o mostrar un texto alternativo, envuelve la etiqueta en un condicional:
{% catalog_selection_items live_events seven_day_window %}
{% if items.size == 0 %}
{% abort_message('Catalog selection returned 0 items') %}
{% endif %}
Here are some upcoming events:
{{ items[0].event_name }}
Para más información, consulta Cancelar mensajes.