Synchronisation des produits Shopify
Vous pouvez synchroniser tous les produits de votre boutique Shopify avec un catalogue Braze pour une personnalisation plus poussée des messages.
Les catalogues Shopify se mettent à jour en quasi-temps réel à mesure que vous apportez des modifications aux produits de votre boutique Shopify. Vous pouvez enrichir votre panier abandonné, votre confirmation de commande et bien plus encore avec les détails et informations produit les plus à jour.
En plus de prendre en charge les données produit Shopify de base, vous pouvez synchroniser les collections Shopify, les étiquettes de produit et les métachamps de produit vers votre catalogue Braze. Ces champs supplémentaires permettent une personnalisation plus riche, des sélections de catalogue plus précises et une segmentation plus puissante grâce aux extensions de segments.
Configurer la synchronisation des produits Shopify
Si vous avez déjà installé votre boutique Shopify, vous pouvez toujours synchroniser vos produits en suivant les instructions de cette section.
Étape 1 : Activer la synchronisation
Vous pouvez synchroniser vos produits avec un catalogue Braze via le flux d’installation Shopify ou sur la page partenaire Shopify.

Étape 2 : Sélectionner votre identifiant de produit
Sélectionnez l’identifiant de produit principal à utiliser comme ID de catalogue Braze :
- Shopify Variant ID est un bon choix par défaut lorsque vos SKU sont manquants, dupliqués entre les variantes, ou peuvent contenir des caractères tels que des barres obliques, des points, des espaces ou des esperluettes. Les Variant ID sont numériques et respectent toujours ces exigences.
- SKU fonctionne bien lorsque chaque variante possède un SKU unique qui respecte les mêmes règles de caractères que le Shopify Variant ID, et que vous souhaitez utiliser les SKU de vente au détail comme clé de catalogue pour vos messages ou analyses.
- Vous pouvez utiliser des SKU en texte libre contenant des caractères non autorisés en utilisant le Shopify Variant ID au lieu du SKU.
La valeur que vous sélectionnez devient l’item_id du catalogue et ne peut contenir que des lettres, des chiffres, des tirets et des underscores.

Si vous utilisez le SKU comme ID de votre catalogue, assurez-vous que tous vos produits et variantes dans votre boutique ont un SKU défini et qu’il est unique.
- Si un article n’a pas de SKU, Braze ne peut pas synchroniser ce produit dans le catalogue.
- Si plusieurs produits possèdent le même SKU, cela peut entraîner un comportement inattendu ou l’écrasement involontaire des informations du produit.
Étape 3 : Configurer des données produit supplémentaires (facultatif)
Vous pouvez activer de manière facultative la synchronisation des étiquettes de produit, des collections Shopify et des métachamps. Activez ou modifiez ces paramètres après la synchronisation initiale depuis la page partenaire Shopify.

Ajoutez d’abord les étiquettes de produit, les collections Shopify et les métachamps dans Shopify. S’ils n’existent pas dans Shopify, ils n’apparaîtront pas dans Braze.

- Sur la page Synchroniser les données produit vers Braze, cochez la case Synchroniser les étiquettes de produit pour ouvrir la fenêtre modale Sélectionner les étiquettes de produit.
- Sélectionnez jusqu’à 20 étiquettes de produit à synchroniser avec votre catalogue Braze. Seules les étiquettes que vous sélectionnez seront synchronisées.

- Si vous disposez d’une intégration Shopify existante, réautorisez l’application Braze Shopify pour installer les nouvelles autorisations requises pour la synchronisation des produits. Si vous êtes un nouveau client, passez à l’étape suivante.

- Sélectionnez Synchroniser les métachamps de produit pour ouvrir la fenêtre modale de configuration des métachamps.

- Sélectionnez jusqu’à 20 métachamps recherchables à synchroniser. Chacun devient une colonne distincte dans votre catalogue, utilisable dans des fonctionnalités comme les sélections de catalogue ou les extensions de segments.
- Lors du nommage des métachamps, notez que les espaces deviennent « _ » et que tous les caractères spéciaux sont supprimés pour respecter les restrictions de nommage des champs de catalogue Braze.

Braze prend en charge les objets de métachamps suivants ainsi que certains de leurs types respectifs.
| Type de métachamp | Type de données |
|---|---|
boolean |
Valeur booléenne |
color, list.color |
Chaîne de caractères (couleur hexadécimale, comme #FFF123), Tableau de chaînes de caractères |
date, list.date |
Chaîne de caractères (date ISO 8601), Tableau de chaînes de caractères (dates ISO 8601) |
date_time, list.date_time |
Chaîne de caractères (datetime ISO 8601), Tableau de chaînes de caractères (datetimes ISO 8601) |
id, list.id |
Chaîne de caractères, Tableau de chaînes de caractères |
multi_line_text_field |
Chaîne de caractères |
number_decimal |
Chaîne de caractères |
number_integer |
Entier |
single_line_text_field, list.single_line_text_field |
Chaîne de caractères, Tableau de chaînes de caractères |
url, list.url |
Chaîne de caractères (URL), Tableau de chaînes de caractères (URL) |
metaobject_reference, list.metaobject_reference |
Chaîne de caractères, Tableau de chaînes de caractères |
mixed_reference, list.mixed_reference |
Chaîne de caractères, Tableau de chaînes de caractères |
Braze ne prend pas en charge les objets de métachamps suivants, y compris certains types de liste respectifs :
dimension(list.dimension)weight(list.weight)link(list.link)jsonlist.number_decimallist.number_integermoneyrating(list.rating)volume(list.volume)rich_text_field
- Sélectionnez Synchroniser les collections Shopify pour ouvrir la fenêtre modale de configuration des collections.
- Sélectionnez jusqu’à 20 collections à synchroniser.
- La fenêtre modale fournit une liste recherchable des 5 000 collections les plus récemment créées ou mises à jour de votre boutique Shopify.
- Les collections précédemment sélectionnées qui ne figurent plus dans les 5 000 premières apparaîtront toujours dans votre sélection.

Braze utilise l’ID de collection Shopify pour identifier les collections synchronisées, qui sont ensuite utilisées lors de la création de sélections de catalogue et de filtres de segments.


Pour des exemples d’utilisation de chaque type de données produit, consultez les cas d’usage des catalogues Shopify.
Étape 4 : Suivre la progression de la synchronisation
Après avoir enregistré votre configuration, Braze commencera à synchroniser vos produits et mettra à jour le statut sur En cours sur votre page partenaire Shopify. Le temps de synchronisation dépend du nombre de produits et de variantes dans votre boutique.
Vous pouvez quitter la page une fois la synchronisation en cours ; Braze vous enverra une notification sur le tableau de bord lorsque la synchronisation sera terminée. Une fois terminée, le statut passera à Actif et vous pourrez consulter vos produits en sélectionnant le nom du catalogue sur votre page partenaire Shopify.

Vous pouvez également consulter les étiquettes de produit, les métachamps et les collections synchronisés dans votre catalogue Shopify sous forme de nouvelles colonnes.


Si votre synchronisation dépasse votre limite de stockage de catalogue, Braze arrête la synchronisation et les nouvelles mises à jour de produits ne sont plus reflétées. Contactez votre gestionnaire du succès des clients pour mettre à niveau votre niveau si nécessaire.
Étape 5 : Gérer votre configuration
Chaque type de synchronisation dispose d’une carte récapitulative sur la page partenaire Shopify affichant le nombre total synchronisé, le statut actuel et un lien vers votre catalogue. Sélectionnez l’icône d’affichage pour consulter votre configuration active et la modifier.
Vous pouvez modifier votre synchronisation de produits Shopify, y compris la gestion de vos étiquettes de produit, collections et métachamps de produit, à tout moment depuis la page partenaire Shopify.


La modification de vos sélections synchronisées peut affecter les Campaigns, Canvas ou sélections de catalogue actifs qui y font référence. Mettez à jour le contenu actif pour qu’il fonctionne correctement lorsque vous appliquez les modifications.
Données de catalogue Shopify prises en charge
| Champ | Type de données | Exemples |
|---|---|---|
id |
chaîne de caractères | 45264808411274 lorsque l’identifiant produit du catalogue est Shopify Variant ID12345 lorsque l’identifiant produit du catalogue est SKU (correspond à la valeur sélectionnée à l’étape 2) |
store_name |
chaîne de caractères | “your-store” (sous-domaine de la boutique Shopify, sans .myshopify.com) |
shopify_product_id |
nombre | 7939032613002 (stocké sous forme de nombre dans votre catalogue Braze ; les API Shopify peuvent renvoyer cet ID sous forme de chaîne de caractères) |
shopify_variant_id |
nombre | 45264808411274 (stocké sous forme de nombre dans votre catalogue Braze ; les API Shopify peuvent renvoyer cet ID sous forme de chaîne de caractères) |
product_title |
chaîne de caractères | “Classic leather jacket” |
variant_title |
chaîne de caractères | “Large / Red”, “Medium” ou “Default Title” pour les produits à variante unique |
status |
chaîne de caractères | “active”, “draft”, “archived” |
product_image_url |
chaîne de caractères | “https://cdn.shopify.com/s/files/1/0641/0970/7402/files/t_shir.jpg?v=1736538760” |
variant_image_url |
chaîne de caractères | Même URL de type CDN que l’image du produit lorsqu’aucune image de variante n’existe ; sinon, une URL d’image propre à la variante |
vendor |
chaîne de caractères | “Flash and Thread”, “PantsLabyrinth” |
product_type |
chaîne de caractères | “Outerwear”, “T-Shirts” (issu du champ Type de produit du produit dans Shopify) |
product_url |
chaîne de caractères | “https://your-store.myshopify.com/products/classic-leather-jacket” |
product_handle |
chaîne de caractères | “classic-leather-jacket” |
published_scope |
chaîne de caractères | “web”, “global” |
price |
nombre | 10.00, 24.99Shopify renvoie souvent les prix sous forme de chaînes de caractères (par exemple "199.00" dans l’API REST Admin). Braze les convertit en nombres pour ce champ du catalogue. |
compare_at_price |
nombre | 15.00 lorsque le prix avant réduction est défini dans Shopify0 lorsque Shopify n’a pas de prix avant réduction. Les API Shopify renvoient généralement null pour un prix avant réduction non défini ; Braze stocke 0 dans le catalogue afin que le champ soit toujours numérique (il s’agit d’une valeur par défaut de Braze, et non d’une valeur que Shopify envoie sous forme de 0). |
inventory_quantity |
nombre | 20, 0 ou une valeur négative lorsque la survente est autorisée (par exemple -18) |
options |
chaîne de caractères | “Size,Color” Shopify autorise jusqu’à trois types d’options par produit (par exemple Taille, Couleur, Matière). La valeur options est une liste de ces noms séparés par des virgules. |
option_values |
chaîne de caractères | “Medium,Red”, “Large,Red” Chaque valeur suit le même ordre que options (jusqu’à trois valeurs). |
sku |
chaîne de caractères | “12345”, “SKU-001-RED-L” |
product_tags |
tableau | ["Summer", "Sale", "New"]Nécessite la synchronisation des tags de produits. |
collection_ids |
tableau | [123456789012, 987654321098] (ID de collections Shopify)Nécessite la synchronisation des collections Shopify. |
Metafield columns |
Varie selon le type | Chaque métachamp synchronisé apparaît dans une colonne distincte nommée d’après sa clé. Pour plus d’informations, consultez la section Métachamps pris en charge dans l’onglet « Métachamps de produits » de l’étape 3. |

Votre catalogue Shopify est géré par Shopify. Pour mettre à jour votre catalogue, effectuez les modifications directement dans votre boutique Shopify : elles seront automatiquement synchronisées avec Braze. Pour supprimer votre catalogue Shopify, accédez à la page partenaire Shopify dans Braze et désactivez la synchronisation.
Cas d’usage du catalogue Shopify
Ces cas d’usage montrent comment exploiter les données de votre catalogue Shopify synchronisé pour personnaliser vos messages.

Braze synchronise jusqu’à 250 variantes de chaque produit Shopify dans votre catalogue. Au-delà de cette limite, les variantes ne sont pas synchronisées. Si vous avez besoin de plus de 250 variantes par produit, contactez votre gestionnaire de la satisfaction client Braze.
Utilisez les métachamps de produit pour personnaliser vos messages avec des informations produit personnalisées qui vont au-delà des champs standard de Shopify. Par exemple, ajoutez des instructions d’entretien dans une confirmation de commande, affichez le pays d’origine dans un e-mail de recommandation, ou segmentez les utilisateurs ayant acheté une matière spécifique.
Chaque métachamp synchronisé devient une colonne distincte dans votre catalogue, dont le type de données dépend du type de métachamp. Pour configurer la synchronisation des métachamps, consultez la section Métachamps de produit Shopify.
Sélection de catalogue
- Dans Shopify, définissez le métachamp de produit
seasonalsursummerpour les produits concernés (il s’agit d’une valeur de métachamp, et non d’un tag de produit).

- Dans Braze, activez la synchronisation des métachamps et sélectionnez
custom.seasonal(ou l’espace de noms et la clé correspondant à votre métachamp Shopify).

Personnalisation
- Créez une sélection de catalogue qui filtre les métachamps contenant la valeur correspondante.

- Dans l’éditeur de message, ajoutez la sélection à l’endroit où vous souhaitez insérer les métachamps de produit. Par exemple, vous pouvez utiliser un bloc produit HTML comme celui-ci :
{% catalog_selection_items se-team-ecommerce_shopify_catalog seasonal_summer %}
{% if items[0] == blank %}
{% abort_message('Catalog selection returned no items') %}
{% endif %}
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;">
{% for item in items %}
{% if forloop.index0 < 3 %}
{% assign title = item.product_title | default: '' %}
{% assign image_url = item.variant_image_url | default: '' %}
{% assign price = item.price | default: '' %}
{% assign url = item.product_url | default: '' %}
<tr>
<td width="200" valign="top" style="padding:12px 12px 12px 0;">
{% if image_url == blank %}
<div style="width:200px;height:200px;background:#f2f2f2;line-height:200px;text-align:center;font-family:Arial,sans-serif;font-size:12px;color:#666;">
No image
</div>
{% else %}
{% if url == blank %}
<img src="{{ image_url }}" width="200" height="200" alt="{{ title | escape }}" style="display:block;border:0;outline:none;text-decoration:none;" />
{% else %}
<a href="{{ url }}" style="text-decoration:none;">
<img src="{{ image_url }}" width="200" height="200" alt="{{ title | escape }}" style="display:block;border:0;outline:none;text-decoration:none;" />
</a>
{% endif %}
{% endif %}
</td>
<td valign="top" style="padding:12px 0;font-family:Arial,sans-serif;font-size:14px;line-height:20px;color:#111;">
{% if title != blank %}<div style="font-weight:600;">{{ title | escape }}</div>{% endif %}
{% if price != blank %}<div>Price: ${{ price }}</div>{% endif %}
{% if url != blank %}<div><a href="{{ url }}" style="color:#F84B09;">View product</a></div>{% endif %}
</td>
</tr>
{% endif %}
{% endfor %}
</table>
Si vous souhaitez plutôt mentionner des produits précis ayant une valeur de métachamp spécifique dans une notification push, vous pouvez utiliser l’outil Ajouter une personnalisation et spécifier les articles de votre catalogue.
Check out the latest summer products:
{% catalog_selection_items se-team-ecommerce_shopify_catalog seasonal_summer %}
{{ items[0].product_title}}{{items[0].price}}
{{ items[1].product_title}}{{items[1].price}}
{{ items[2].product_title}}{{items[2].price}}

Segmentation par catalogue (SQL)
Utilisez les extensions de segments pour créer des Segments d’utilisateurs ayant interagi avec un métachamp de produit. Par exemple, pour trouver les utilisateurs ayant déclenché un événement eCommerce avec un produit dont le tableau de métachamp contient une valeur spécifique, utilisez cette requête :
-- -----------------------------------------------------------------------------
-- When the metafield is stored as a JSON array in catalog field_value (for example,
-- '["winter","summer"]' or a list-type Shopify metafield serialized to JSON),
-- use ARRAY_CONTAINS like product_tags. Cast the element you search for to
-- VARIANT so types match the parsed array elements.
-- -----------------------------------------------------------------------------
-- Description:
-- Fetches users who triggered the ecommerce event with a product whose
-- metafield array contains a specific value (for example, segment on "seasonal").
-- For a date range, add events.time >= $start_date AND events.time <= $end_date.
-- For first/last triggered, reuse the CTE pattern from Template 3 with this
-- ARRAY_CONTAINS predicate instead of items.field_value = '<metafield_value>'.
SELECT
DISTINCT(events.user_id)
FROM
USERS_BEHAVIORS_CUSTOMEVENT_SHARED AS events,
LATERAL FLATTEN(input => GET_PATH(TRY_PARSE_JSON(events.properties), 'products'), outer => false) AS event_item
JOIN CATALOGS_ITEMS_SHARED AS items ON (
(
items.field_name = 'id'
AND items.field_value = GET_PATH(event_item.value, 'variant_id')::STRING
)
OR
items.item_id = GET_PATH(event_item.value, 'variant_id')::STRING
)
WHERE
events.name = 'ecommerce.order_placed'
AND events.app_group_id = '<app_group_id>'
AND items.catalog_id = '<catalog_id>'
AND items.field_name = '<metafield_name>'
AND ARRAY_CONTAINS('<array_element_value>'::VARIANT, TRY_PARSE_JSON(items.field_value));
Si vous souhaitez segmenter les clients ayant passé une commande comportant des métachamps de produit spécifiques, utilisez l’un des modèles d’extension de segments SQL suivants (depuis toujours, sur une période donnée, ou premier ou dernier déclenchement d’un événement).
-- =============================================================================
-- Segment Extension: Metafields × Ecommerce Events — Example SQL Templates
-- =============================================================================
-- Metafield column names in CATALOGS_ITEMS_SHARED follow:
-- field_name = 'metafield_<namespace>_<key>'
-- Replace placeholders: app_group_id, catalog_id, event name, and the metafield
-- field_name + value. For array-type metafield values, use ARRAY_CONTAINS
-- with TRY_PARSE_JSON(items.field_value) similar to the product_tags example.
-- =============================================================================
-- -----------------------------------------------------------------------------
-- Template 1: Map metafields to event triggers (all time)
-- -----------------------------------------------------------------------------
-- Users who have ever triggered the ecommerce event with a product that has
-- the given metafield value. Event-agnostic: change events.name for the
-- desired event (e.g. ecommerce.order_placed, ecommerce.product_viewed).
-- -----------------------------------------------------------------------------
-- Description:
-- Fetches users who have engaged with catalog items that have a specific
-- product metafield. Joins the catalog to custom events by matching
-- events.properties.products (e.g. variant_id) to catalog items.
SELECT
DISTINCT(events.user_id)
FROM
USERS_BEHAVIORS_CUSTOMEVENT_SHARED AS events,
LATERAL FLATTEN(input => GET_PATH(TRY_PARSE_JSON(events.properties), 'products'), outer => false) AS event_item
JOIN CATALOGS_ITEMS_SHARED AS items ON (
(
items.field_name = 'id'
AND items.field_value = GET_PATH(event_item.value, 'variant_id')::STRING
)
OR
items.item_id = GET_PATH(event_item.value, 'variant_id')::STRING
)
WHERE
events.name = 'ecommerce.order_placed'
AND events.app_group_id = '<app_group_id>'
AND items.catalog_id = '<catalog_id>'
AND items.field_name = '<metafield_name>'
AND items.field_value = '<metafield_value>';
-- -----------------------------------------------------------------------------
-- Template 2: Map metafields to event triggers (for a specific period)
-- -----------------------------------------------------------------------------
-- Same as Template 1, restricted to events within a time window. Use
-- $start_date and $end_date (Segment Extension parameters) or literal
-- Unix timestamps.
-- -----------------------------------------------------------------------------
-- Description:
-- Fetches users who triggered the ecommerce event with a product that has
-- the given metafield value within the specified time range.
SELECT
DISTINCT(events.user_id)
FROM
USERS_BEHAVIORS_CUSTOMEVENT_SHARED AS events,
LATERAL FLATTEN(input => GET_PATH(TRY_PARSE_JSON(events.properties), 'products'), outer => false) AS event_item
JOIN CATALOGS_ITEMS_SHARED AS items ON (
(
items.field_name = 'id'
AND items.field_value = GET_PATH(event_item.value, 'variant_id')::STRING
)
OR
items.item_id = GET_PATH(event_item.value, 'variant_id')::STRING
)
WHERE
events.name = 'ecommerce.order_placed'
AND events.app_group_id = '<app_group_id>'
AND events.time >= $start_date
AND events.time <= $end_date
AND items.catalog_id = '<catalog_id>'
AND items.field_name = '<metafield_name>'
AND items.field_value = '<metafield_value>';
-- -----------------------------------------------------------------------------
-- Template 3: Map metafields — first or last triggered an event
-- -----------------------------------------------------------------------------
-- Users for whom the *first* (earliest) or *last* (most recent) matching
-- event (by time) involved a product with the given metafield. Switch
-- ORDER BY to time ASC for first, time DESC for last.
-- -----------------------------------------------------------------------------
-- Description:
-- Fetches users whose first (or last) occurrence of the ecommerce event
-- involved a catalog item with the specified metafield value.
WITH events_with_catalog_metafield AS (
SELECT
events.user_id,
events.time,
events.id AS event_id,
ROW_NUMBER() OVER (
PARTITION BY events.user_id
ORDER BY events.time ASC -- use DESC for "last triggered"
) AS rn
FROM
USERS_BEHAVIORS_CUSTOMEVENT_SHARED AS events,
LATERAL FLATTEN(input => GET_PATH(TRY_PARSE_JSON(events.properties), 'products'), outer => false) AS event_item
JOIN CATALOGS_ITEMS_SHARED AS items ON (
(
items.field_name = 'id'
AND items.field_value = GET_PATH(event_item.value, 'variant_id')::STRING
)
OR
items.item_id = GET_PATH(event_item.value, 'variant_id')::STRING
)
WHERE
events.name = 'ecommerce.order_placed'
AND events.app_group_id = '<app_group_id>'
AND items.catalog_id = '<catalog_id>'
AND items.field_name = '<metafield_name>'
AND items.field_value = '<metafield_value>'
)
SELECT
user_id
FROM
events_with_catalog_metafield
WHERE
rn = 1;
Utilisez les collections Shopify pour intégrer dans vos messages les regroupements de produits sélectionnés que vous utilisez déjà sur votre site Shopify et dans vos expériences sur l’application. Par exemple, mettez en avant les « New Arrivals » dans un e-mail promotionnel, proposez les « Best Sellers » en vente croisée dans un Canvas d’abandon de panier, ou ciblez les utilisateurs ayant consulté une collection saisonnière.
Sélection de catalogue
- Dans Shopify, créez une collection « New Women’s Products - In Stock » contenant vos produits les plus performants.

- Dans Braze, activez la synchronisation des collections et sélectionnez « Women’s Products - In Stock ».


Pour les collections Shopify, vous devez utiliser l’ID de collection, qui figure dans l’URL lorsque vous consultez la collection. Par exemple, l’URL https://admin.shopify.com/store/se-team-ecommerce/collections/470645342446 correspond à l’ID de collection 470645342446.
Personnalisation

Lorsque vous faites référence à des ID de collection dans des sélections de catalogue, utilisez uniquement la valeur numérique de l’ID, sans les crochets de tableau [] qui apparaissent dans les données du catalogue. Par exemple, si les ID de collection s’affichent sous la forme [123456789012, 987654321098] dans votre catalogue, saisissez uniquement l’ID numérique (par exemple 470645342446) dans votre filtre de sélection.
- Créez une sélection de catalogue nommée « New Women’s Products - In Stock » qui filtre les produits possédant l’ID de cette collection. Vous ne pouvez utiliser qu’un seul champ de tableau unique dans une même sélection de catalogue, et jusqu’à 50 produits dans votre collection.
- Vous pouvez également créer vos propres sélections personnalisées en filtrant sur le champ Collections.

- Dans votre message, insérez votre collection à l’aide de la sélection que vous avez créée ou en faisant directement référence à la collection. Par exemple, vous pouvez utiliser un bloc produit HTML comme celui-ci :
{% catalog_selection_items se-team-ecommerce_shopify_catalog shopify_collection_womens_instock %}
{% if items[0] == blank %}
{% abort_message('Catalog selection returned no items') %}
{% endif %}
<table role="presentation" width="100%" cellpadding="0" cellspacing="0" style="border-collapse:collapse;">
{% for item in items %}
{% if forloop.index0 < 3 %}
{% assign title = item.product_title | default: '' %}
{% assign image_url = item.variant_image_url | default: '' %}
{% assign price = item.price | default: '' %}
{% assign url = item.product_url | default: '' %}
<tr>
<td width="200" valign="top" style="padding:12px 12px 12px 0;">
{% if image_url == blank %}
<div style="width:200px;height:200px;background:#f2f2f2;line-height:200px;text-align:center;font-family:Arial,sans-serif;font-size:12px;color:#666;">
No image
</div>
{% else %}
{% if url == blank %}
<img src="{{ image_url }}" width="200" height="200" alt="{{ title | escape }}" style="display:block;border:0;outline:none;text-decoration:none;" />
{% else %}
<a href="{{ url }}" style="text-decoration:none;">
<img src="{{ image_url }}" width="200" height="200" alt="{{ title | escape }}" style="display:block;border:0;outline:none;text-decoration:none;" />
</a>
{% endif %}
{% endif %}
</td>
<td valign="top" style="padding:12px 0;font-family:Arial,sans-serif;font-size:14px;line-height:20px;color:#111;">
{% if title != blank %}<div style="font-weight:600;">{{ title | escape }}</div>{% endif %}
{% if price != blank %}<div>Price: ${{ price }}</div>{% endif %}
{% if url != blank %}<div><a href="{{ url }}" style="color:#F84B09;">View product</a></div>{% endif %}
</td>
</tr>
{% endif %}
{% endfor %}
</table>
Si vous souhaitez plutôt mentionner des nouveaux produits précis dans une notification push, vous pouvez utiliser l’outil Ajouter une personnalisation et spécifier les articles de votre catalogue.
Checkout the latest women's clothing:
{% catalog_selection_items se-team-ecommerce_shopify_catalog shopify_collection_womens_instock %}
{{ items[0].product_title}}{{items[0].price}}
{{ items[1].product_title}}{{items[1].price}}
{{ items[2].product_title}}{{items[2].price}}

Segmentation par catalogue (SQL)
Créez un Segment d’utilisateurs ayant interagi avec une collection. Utilisez les extensions de segments pour créer des Segments en fonction de l’appartenance à une collection. Par exemple, pour trouver les utilisateurs ayant acheté des produits d’une collection spécifique au cours de la dernière année, utilisez cette requête :
-- Description:
-- This query fetches users who have engaged with catalog items that contain a specific collection ID. It joins the catalog
-- to custom events by matching any element in an array within events.properties.products (e.g. any product
-- with variant_id equal to a catalog item), using Snowflake LATERAL FLATTEN to explode the array.
SELECT
DISTINCT(events.user_id)
FROM
USERS_BEHAVIORS_CUSTOMEVENT_SHARED AS events,
LATERAL FLATTEN(input => GET_PATH(TRY_PARSE_JSON(events.properties), 'products'), outer => false) AS event_item
JOIN CATALOGS_ITEMS_SHARED AS items ON (
(
items.field_name = 'id'
AND
items.field_value = GET_PATH(event_item.value, 'variant_id')::STRING
)
OR
items.item_id = GET_PATH(event_item.value, 'variant_id')::STRING
)
WHERE
events.name = 'ecommerce.order_placed'
and events.app_group_id = '<app_group_id>'
AND items.catalog_id = '<catalog_id>'
AND (items.field_name = 'collection_ids' AND ARRAY_CONTAINS('<collection_ids_value>'::VARIANT, TRY_PARSE_JSON(items.field_value)));

Vous pouvez également configurer des notifications de baisse de prix et des notifications de retour en stock !
Notez que pour chaque cas d’usage, vous devez créer un événement personnalisé qui enregistre le statut d’abonnement d’un utilisateur dans votre catalogue. Cet événement personnalisé nécessite une propriété d’événement correspondant soit au SKU, soit à l’ID de variante Shopify que vous avez sélectionné lors de la configuration de la synchronisation des produits Shopify.
Désactiver la synchronisation des produits
La désactivation de la fonctionnalité de synchronisation des produits Shopify supprimera l’intégralité de votre catalogue et de vos produits. Cela peut également avoir un impact sur les messages qui utilisent activement les données produit de ce catalogue. Confirmez que vous avez mis à jour ou mis en pause ces Campaigns ou Canvas avant la désactivation, car cela pourrait entraîner l’envoi de messages sans détails sur les produits. Ne supprimez pas directement le catalogue Shopify sur la page des catalogues.
Résolution des problèmes
Si la synchronisation de vos produits Shopify rencontre une erreur, l’une des erreurs suivantes peut en être la cause. Suivez les instructions pour corriger le problème et rétablir la synchronisation :
| Erreur | Raison | Solution |
|---|---|---|
| Erreur de serveur | Cette erreur se produit en cas d’erreur de serveur du côté de Shopify lorsque nous tentons de synchroniser vos produits. | Désactivez la synchronisation et resynchronisez l’intégralité de votre inventaire de produits. |
| SKU en double | Cette erreur se produit si vous utilisez le SKU comme ID d’article de catalogue et que plusieurs variantes partagent le même SKU. Chaque item_id de catalogue doit être unique : les articles concernés peuvent donc échouer à se synchroniser, accumuler des enregistrements d’erreur ou voir leurs informations produit écrasées par inadvertance. |
Vérifiez la liste complète de vos produits et variantes dans Shopify pour vous assurer qu’il n’y a aucun SKU en double. Si c’est le cas, modifiez-les dans votre compte de boutique Shopify pour qu’ils soient uniques. Une fois la correction effectuée, désactivez la synchronisation et resynchronisez l’intégralité de votre inventaire de produits. |
| Limite de catalogue dépassée | Cette erreur se produit si vous dépassez votre limite de catalogue. Braze ne peut alors ni terminer la synchronisation ni la maintenir active, faute d’espace de stockage disponible. | Deux solutions sont possibles : 1. Contactez votre gestionnaire de compte pour passer à un niveau supérieur et augmenter votre limite de catalogue. 2. Libérez de l’espace de stockage en supprimant l’un des éléments suivants : - Articles d’autres catalogues - Autres catalogues - Sélections créées Quelle que soit la solution choisie, vous devez ensuite désactiver la synchronisation, puis resynchroniser. |
Pour plus de détails sur la validation des articles de catalogue, consultez la section Résolution des problèmes de la documentation de l’API des catalogues.



