Ir al contenido

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 time cuyos 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 time en 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, como 2026-06-20T19:30:00Z. Para conocer los tipos compatibles, consulta Tipos de datos compatibles.
  • Los operadores before y after utilizan 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 fecha YYYY-MM-DD se 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_message no 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 por 86400 segundos 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

  1. Ve a Configuración de datos > Catálogos y selecciona el catálogo live_events.
  2. Abre la pestaña Selection y selecciona Create Selection.
  3. Nombra la selección seven_day_window y añade una descripción opcional, como “Eventos que ocurren dentro de los próximos siete días.”
  4. Establece un Límite de resultados para el número máximo de eventos a devolver (hasta 50).
  5. 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.

New Stuff!