Filtrer les éléments de catalogue par plage de dates
Cet exemple montre comment une place de marché de billets fictive utilise les sélections de catalogue et les expressions de date Liquid pour n’envoyer par e-mail aux consommateurs que les événements à venir dans les sept prochains jours à partir du moment de l’envoi. Vous créez une sélection avec des filtres temporels glissants, puis vous affichez les éléments de catalogue correspondants dans une Campaign ou un message Canvas.
À propos de cet exemple
MovieCanon, une place de marché fictive de billetterie, utilise ce modèle pour s’assurer que les Campaigns par e-mail ne répertorient que les concerts et spectacles pertinents dans le temps.
Ce modèle utilise deux fonctionnalités Braze ensemble :
- Une sélection de catalogue avec des filtres de champ
timedont les valeurs sont des extraits de code Liquid qui calculent une fenêtre temporelle glissante au moment de l’envoi - L’étiquette Liquid
{% catalog_selection_items %}dans le corps du message pour afficher les lignes de catalogue correspondantes
Considérations
- Créez un champ de catalogue
timepour la colonne de date/heure sur laquelle vous filtrez, et non un champ de type chaîne de caractères. Stockez les valeurs au format ISO 8601, par exemple2026-06-20T19:30:00Z. Pour les types pris en charge, consultez Types de données pris en charge. - Les opérateurs
beforeetafterutilisent des comparaisons strictes. Les événements exactement égaux à un horodatage limite peuvent être exclus. Utilisez des horodatages complets lorsque vous souhaitez que la fenêtre commence au moment de l’envoi. Les valeurs de date uniquement au formatYYYY-MM-DDsont converties en minuit UTC pour le jour concerné. - Le Liquid dans les filtres de sélection est évalué au moment de l’envoi. La variable
'now'reflète le moment où le message est rendu, généralement en UTC. Vérifiez que la fenêtre résultante correspond à votre intention dans les différents fuseaux horaires. - Le contenu connecté, les Content Blocks, les tags de catalogue et
abort_messagene sont pas pris en charge dans les valeurs de filtre de sélection de catalogue. Si un filtre contient une étiquette non autorisée, la sélection ne renvoie aucun élément sans déclencher d’erreur. - Vous pouvez ajouter jusqu’à 10 filtres par sélection et renvoyer jusqu’à 50 éléments. Ajustez la fenêtre de sept jours en modifiant les secondes ajoutées à
'now'(604800= 7 jours multipliés par86400secondes par jour). - Les tableaux de résultats de sélection de catalogue sont indexés à partir de zéro (
items[0]est le premier élément). - Testez le Liquid des filtres, le Liquid des messages et la logique d’abandon en dehors de votre espace de travail de production avant d’envoyer à des audiences de production.
Configuration
Cet exemple repose sur un catalogue nommé live_events avec les champs suivants :
| Champ | Type | Valeur d’exemple |
|---|---|---|
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 vous ne disposez pas encore d’un catalogue similaire, créez un catalogue et importez ou synchronisez vos données d’événements au préalable.
Étape 1 : Créer la sélection de catalogue
- Accédez à Data Settings > Catalogs et sélectionnez le catalogue
live_events. - Ouvrez l’onglet Selection et sélectionnez Create Selection.
- Nommez la sélection
seven_day_windowet ajoutez une description facultative, par exemple « Événements se déroulant dans les sept prochains jours ». - Définissez une Results limit pour le nombre maximum d’événements à renvoyer (jusqu’à 50).
- N’enregistrez pas encore. Ajoutez les filtres de date dans les étapes suivantes.
Étape 2 : Ajouter le filtre de borne supérieure
Ajoutez un filtre sur le champ event_date_time :
| Paramètre | Valeur |
|---|---|
| Filter field | event_date_time |
| Operator | before |
| Value | Extrait Liquid |
Dans le champ de valeur du filtre, saisissez cet extrait Liquid. Il calcule un horodatage situé sept jours après l’heure d’envoi :
{% assign seven_days = 'now' | date: '%s' | plus: 604800 %}{{ seven_days | date: "%Y-%m-%dT%H:%M:%SZ" }}
Cela définit la borne supérieure de la fenêtre afin que seuls les événements antérieurs à cet horodatage soient inclus.
Étape 3 : Ajouter le filtre de borne inférieure
Ajoutez un second filtre sur le même champ :
| Paramètre | Valeur |
|---|---|
| Filter field | event_date_time |
| Operator | after |
| Value | Extrait Liquid |
Saisissez cet extrait Liquid pour la borne inférieure. Il utilise l’heure d’envoi actuelle afin d’exclure les événements déjà commencés :
{{ 'now' | date: "%Y-%m-%dT%H:%M:%SZ" }}
Ensemble, les deux filtres renvoient les éléments du catalogue dont la valeur event_date_time est postérieure à l’heure d’envoi actuelle et antérieure à sept jours après l’heure d’envoi. Sélectionnez Create Selection pour enregistrer.
Étape 4 : Référencer la sélection dans un message
Dans votre Campaign ou votre message Canvas, insérez du Liquid qui récupère les éléments de la sélection. Vous pouvez utiliser Add personalization (Catalog Items > Use a selection) ou coller la balise manuellement :
{% 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 }}
Remplacez les index de tableau codés en dur par une boucle si vous devez afficher un nombre variable de résultats.
Étape 5 : Gérer les résultats vides
Lorsqu’aucun élément du catalogue ne correspond à la sélection, le tableau items est vide et le bloc balisé n’affiche rien. Pour annuler l’envoi ou afficher un contenu de secours, encapsulez la balise dans une condition :
{% 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 }}
Pour en savoir plus, consultez Annuler des messages.