Filtrar itens de catálogo por intervalo de datas
Este exemplo mostra como um marketplace fictício de ingressos usa seleções de catálogo e expressões de data em Liquid para enviar por e-mail aos consumidores apenas eventos que ocorrerão nos próximos sete dias a partir do momento do envio. Você cria uma seleção com filtros de tempo contínuos e, em seguida, renderiza os itens correspondentes do catálogo em uma Campaign ou mensagem de Canvas.
Sobre este exemplo
MovieCanon, um marketplace fictício de ingressos, usa esse padrão para garantir que as Campaigns de e-mail listem apenas shows e concertos relevantes no tempo.
O padrão usa dois recursos da Braze juntos:
- Uma seleção de catálogo com filtros de campo
timecujos valores são snippets Liquid que calculam uma janela de tempo contínua no momento do envio - A tag Liquid
{% catalog_selection_items %}no corpo da mensagem para renderizar as linhas correspondentes do catálogo
Considerações
- Crie um campo
timeno catálogo para a coluna de data/hora que você deseja filtrar, não um campo de string. Armazene os valores no formato ISO 8601, como2026-06-20T19:30:00Z. Para os tipos compatíveis, consulte Tipos de dados compatíveis. - Os operadores
beforeeafterusam comparações estritas. Eventos exatamente iguais a um timestamp limite podem ser excluídos. Use timestamps completos quando precisar que a janela comece no momento do envio. Valores somente de dataYYYY-MM-DDsão convertidos para meia-noite UTC naquele dia. - O Liquid nos filtros de seleção é avaliado no momento do envio. A variável
'now'reflete quando a mensagem é renderizada, normalmente em UTC. Confirme se a janela resultante corresponde à sua intenção em diferentes fusos horários. - Connected Content, Content Blocks, tags de catálogo e
abort_messagenão são compatíveis com valores de filtro de seleção de catálogo. Se um filtro incluir uma tag não permitida, a seleção não retorna nenhum item sem gerar um erro. - Você pode adicionar até 10 filtros por seleção e retornar até 50 itens. Ajuste a janela de sete dias alterando os segundos adicionados a
'now'(604800= 7 dias multiplicados por86400segundos por dia). - Os arrays de resultado de seleção de catálogo são indexados a partir de zero (
items[0]é o primeiro item). - Teste o Liquid dos filtros, o Liquid da mensagem e a lógica de interrupção fora do seu espaço de trabalho de produção antes de enviar para públicos de produção.
Configuração
Este exemplo assume um catálogo chamado live_events com os seguintes campos:
| Campo | Tipo | Valor de exemplo |
|---|---|---|
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 |
Se você ainda não tem um catálogo semelhante, crie um catálogo e faça upload ou sincronize seus dados de eventos primeiro.
Etapa 1: Criar a seleção de catálogo
- Acesse Data Settings > Catalogs e selecione o catálogo
live_events. - Abra a guia Selection e selecione Create Selection.
- Nomeie a seleção como
seven_day_windowe adicione uma descrição opcional, como “Eventos que ocorrem nos próximos sete dias.” - Defina um Results limit para o número máximo de eventos a retornar (até 50).
- Não salve ainda. Adicione os filtros de data nas próximas etapas.
Etapa 2: Adicionar o filtro de limite superior
Adicione um filtro no campo event_date_time:
| Configuração | Valor |
|---|---|
| Filter field | event_date_time |
| Operator | before |
| Value | Snippet Liquid |
No campo de valor do filtro, insira este snippet Liquid. Ele calcula um timestamp sete dias a partir do momento do envio:
{% assign seven_days = 'now' | date: '%s' | plus: 604800 %}{{ seven_days | date: "%Y-%m-%dT%H:%M:%SZ" }}
Isso define o limite superior da janela para que apenas eventos antes desse timestamp sejam incluídos.
Etapa 3: Adicionar o filtro de limite inferior
Adicione um segundo filtro no mesmo campo:
| Configuração | Valor |
|---|---|
| Filter field | event_date_time |
| Operator | after |
| Value | Snippet Liquid |
Insira este snippet Liquid para o limite inferior. Ele usa o horário atual de envio para que eventos que já começaram sejam excluídos:
{{ 'now' | date: "%Y-%m-%dT%H:%M:%SZ" }}
Juntos, os dois filtros retornam itens do catálogo em que event_date_time é posterior ao horário atual de envio e anterior a sete dias a partir do horário de envio. Selecione Create Selection para salvar.
Etapa 4: Referenciar a seleção em uma mensagem
Na sua Campaign ou mensagem de Canvas, insira o Liquid que busca itens da seleção. Você pode usar Add personalization (Catalog Items > Use a selection) ou colar a tag 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 }}
Substitua os índices de array fixos por um loop se precisar renderizar um número variável de resultados.
Etapa 5: Lidar com resultados vazios
Quando nenhum item do catálogo corresponde à seleção, o array items fica vazio e o bloco com a tag não renderiza nada. Para pular o envio ou exibir um conteúdo de fallback, envolva a tag em uma 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 saber mais, consulte Interrompendo mensagens.