Faire correspondre des éléments de catalogue à un tableau d’attributs personnalisés
Lorsque chaque utilisateur conserve une liste de noms de produits enregistrés sur son profil, utilisez une sélection de catalogue combinée à Liquid pour n’afficher que les lignes de catalogue présentes dans cette liste, par exemple dans un e-mail de liste de souhaits.
À propos de cet exemple
Flash & Thread stocke les noms de produits enregistrés de chaque client dans un attribut personnalisé de type tableau de chaînes de caractères (saved_product_names). Leur catalogue contient les détails complets des produits (catégorie, prix, URL de l’image, inventaire).
Les sélections de catalogue peuvent filtrer les colonnes du catalogue par rapport à des valeurs statiques ou Liquid, y compris les champs de type tableau sur les lignes du catalogue. Elles ne filtrent pas une ligne de catalogue par rapport à des valeurs stockées dans un tableau du profil utilisateur. Pour personnaliser à partir de la liste de l’utilisateur, renvoyez un ensemble large d’éléments du catalogue avec une sélection, puis utilisez Liquid pour ne conserver que les lignes correspondant au tableau du profil.
Ce modèle :
- Assigne l’attribut personnalisé de type tableau de l’utilisateur à une variable Liquid.
- Appelle
catalog_selection_itemspour une sélection de catalogue pré-filtrée (jusqu’à 50 éléments). - Parcourt
itemsen boucle et utilisecontainspour faire correspondre chaque champ du catalogue (par exemple,nameouid) avec le tableau.

Ce modèle fonctionne uniquement lorsque l’ensemble de résultats de la sélection (jusqu’à 50 lignes du catalogue) peut raisonnablement contenir les éléments enregistrés de chaque utilisateur — par exemple, des catalogues de petite taille, ou des catalogues dont les filtres réduisent suffisamment la sélection pour couvrir une liste typique. Si les éléments enregistrés d’un utilisateur ne figurent pas dans les 50 lignes renvoyées, la boucle ne trouve aucune correspondance et le message n’affiche rien pour ces éléments — aucun filtre ne résout ce problème dans le cas général, car la sélection ne peut pas effectuer de correspondance avec le tableau du profil de l’utilisateur.
Considérations
- Testez le Liquid et les données de catalogue dans un espace de travail de staging avant d’envoyer aux clients.
- Étant donné qu’une sélection renvoie au maximum 50 lignes de catalogue, ajoutez des filtres (par exemple, en stock, catégorie active ou tranche de prix) qui maintiennent les articles susceptibles d’être enregistrés par chaque utilisateur dans cet ensemble de résultats.
- Cet exemple utilise un tableau de chaînes de caractères sur le profil utilisateur.
- Pour un tableau d’objets, faites correspondre une propriété à l’intérieur de chaque objet (par exemple,
product_id) et ajustez la vérificationcontainsou utilisez une boucleforsur les objets. Consultez Tableau d’objets. - Le comportement de
containsdépend du type d’attribut ; pour les tableaux, utilisezcontainsplutôt que==. Consultez Logique conditionnelle. - Faites correspondre sur des identifiants stables (par exemple, l’
iddu catalogue) lorsque les noms de produits peuvent changer ou être dupliqués. - Les extraits de code Liquid dans cet article sont des exemples. Validez le rendu dans vos canaux (e-mail HTML, notification push, etc.).
Configuration
Cet exemple suppose les éléments suivants :
| Ressource | Détails |
|---|---|
| Attribut personnalisé | saved_product_names — tableau de chaînes de caractères (par exemple, ["linen_shirt", "trail_jacket", "canvas_tote"]) |
| Catalogue | apparel_products avec les colonnes id, category, name, price, inventory, image_url |
| Sélection | in_stock_apparel sur apparel_products, limite de 50 résultats, avec des filtres excluant les lignes non pertinentes (par exemple, inventory supérieur à 0) |
Étape 1 : Créer le catalogue et la sélection
- Importez ou synchronisez les lignes de produits dans un catalogue nommé
apparel_products. - Créez une sélection (par exemple,
in_stock_apparel) qui renvoie autant de lignes pertinentes que nécessaire, dans la limite de 50 éléments. - Ajoutez des filtres de sélection pour exclure les lignes que vous ne souhaitez jamais voir dans le message (produits en rupture de stock, mauvaise catégorie, etc.).
Pour la configuration des sélections, consultez Sélections.
Étape 2 : Ajouter du Liquid dans votre message
Assignez le tableau du profil, chargez la sélection et effectuez une boucle avec 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 %}
Remplacez item.name par item.id (ou une autre colonne) si votre tableau stocke des identifiants plutôt que des noms d’affichage. Ajoutez des espaces ou du HTML entre les champs selon votre canal. Dans ${{ item.price }}, le $ est un symbole monétaire littéral qui s’affiche avant la sortie Liquid — il ne fait pas partie de la syntaxe de personnalisation ${} de Braze.
Pour générer ce Liquid automatiquement, ouvrez la fenêtre modale Ajouter une personnalisation (Éléments du catalogue > Utiliser une sélection). Consultez Utilisation des catalogues.
Étape 3 : Prévisualiser et tester
Envoyez des messages de test à des profils avec différentes valeurs de saved_product_names. Vérifiez que seules les lignes de catalogue correspondantes apparaissent et qu’un tableau vide ne génère aucune ligne de produit.