Passer au contenu

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 :

  1. Assigne l’attribut personnalisé de type tableau de l’utilisateur à une variable Liquid.
  2. Appelle catalog_selection_items pour une sélection de catalogue pré-filtrée (jusqu’à 50 éléments).
  3. Parcourt items en boucle et utilise contains pour faire correspondre chaque champ du catalogue (par exemple, name ou id) avec le tableau.

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érification contains ou utilisez une boucle for sur les objets. Consultez Tableau d’objets.
  • Le comportement de contains dépend du type d’attribut ; pour les tableaux, utilisez contains plutôt que ==. Consultez Logique conditionnelle.
  • Faites correspondre sur des identifiants stables (par exemple, l’id du 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

  1. Importez ou synchronisez les lignes de produits dans un catalogue nommé apparel_products.
  2. 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.
  3. 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.

New Stuff!