Zum Inhalt springen

Shopify-Produktsynchronisierung

Sie können alle Produkte aus Ihrem Shopify-Shop mit einem Braze-Katalog synchronisieren, um die Personalisierung von Nachrichten zu vertiefen.

Shopify-Kataloge werden nahezu in Realtime aktualisiert, wenn Sie die Produkte in Ihrem Shopify-Shop bearbeiten und ändern. Sie können Ihren Warenkorb-Abbruch, Ihre Bestellbestätigung und vieles mehr mit den aktuellsten Produktdetails und Informationen anreichern.

Zusätzlich zu den grundlegenden Shopify-Produktdaten können Sie Shopify-Kollektionen, Produkt-Tags und Produkt-Metafelder mit Ihrem Braze-Katalog synchronisieren. Diese zusätzlichen Felder ermöglichen eine umfangreichere Personalisierung, präzisere Katalogauswahlen und eine leistungsstärkere Segmentierung durch Segmenterweiterungen.

Shopify-Produktsynchronisierung einrichten

Wenn Sie Ihren Shopify-Shop bereits installiert haben, können Sie Ihre Produkte trotzdem synchronisieren, indem Sie die Anweisungen in diesem Abschnitt befolgen.

Schritt 1: Synchronisierung einschalten

Sie können Ihre Produkte mit einem Braze-Katalog über den Shopify-Installationsablauf oder auf der Shopify-Partnerseite synchronisieren.

Schritt 3 der Einrichtung mit „Shopify Variant ID“ als „Catalog product identifier“.

Schritt 2: Produktbezeichner auswählen

Wählen Sie den primären Produktbezeichner aus, der als Braze-Katalog-ID verwendet werden soll:

  • Shopify Variant ID ist ein guter Standard, wenn Ihre SKUs fehlen, über Varianten hinweg dupliziert sind oder Zeichen wie Schrägstriche, Punkte, Leerzeichen oder kaufmännische Und-Zeichen enthalten können. Varianten-IDs sind numerisch und erfüllen diese Anforderungen immer.
  • SKU eignet sich gut, wenn jede Variante eine eindeutige SKU hat, die denselben Zeichenregeln wie die Shopify Variant ID folgt, und Sie Messaging oder Analytics mit Einzelhandels-SKUs als Katalogschlüssel verwenden möchten.
    • Sie können Freitext-SKUs, die unzulässige Zeichen enthalten, verwenden, indem Sie statt SKU die Shopify Variant ID nutzen.

Der von Ihnen gewählte Wert wird zur Katalog-item_id und darf nur Buchstaben, Zahlen, Bindestriche und Unterstriche enthalten.

Schritt 3: Zusätzliche Produktdaten konfigurieren (optional)

Sie können optional die Synchronisierung für Produkt-Tags, Shopify-Kollektionen und Metafelder aktivieren. Aktivieren oder ändern Sie diese Einstellungen nach der ersten Synchronisierung über die Shopify-Partnerseite.

Einstellungen zur Synchronisierung von Shopify-Produkten und -Varianten mit Braze.

  1. Aktivieren Sie auf der Seite Sync product data to Braze das Kontrollkästchen Sync product tags, um das Modal Select product tags zu öffnen.
  2. Wählen Sie bis zu 20 Produkt-Tags aus, die mit Ihrem Braze-Katalog synchronisiert werden sollen. Nur die von Ihnen ausgewählten Tags werden synchronisiert.

Modal zur Auswahl von Produkt-Tags mit einer Auswahl an Tags.

  1. Wenn Sie eine bestehende Shopify-Integration haben, autorisieren Sie die Braze Shopify-App erneut, um die neuen erforderlichen Berechtigungen für die Produktsynchronisierung zu installieren. Wenn Sie ein:e neue:r Kund:in sind, fahren Sie mit dem nächsten Schritt fort.

Banner mit der Aufforderung, die Braze Shopify-App erneut zu autorisieren.

  1. Wählen Sie Sync product metafields, um das Konfigurationsmodal für Metafelder zu öffnen.

Abschnitt „Sync product data to Braze“ mit Optionen zur Auswahl aus mehreren Einstellungen, einschließlich Kollektionen.

  1. Wählen Sie bis zu 20 der durchsuchbaren Metafelder zur Synchronisierung aus. Jedes wird zu einer separaten Spalte in Ihrem Katalog, die Sie in Features wie Katalogauswahlen oder Segmenterweiterungen verwenden können.
    • Beachten Sie bei der Benennung von Metafeldern, dass Leerzeichen zu „_“ werden und alle Sonderzeichen entfernt werden, um den Benennungsbeschränkungen für Braze-Katalogfelder zu entsprechen.

Modal zur Auswahl von Produkt-Metafeldern.

Braze unterstützt die folgenden Metafeld-Objekte und einige ihrer jeweiligen Typen.

Metafeld-Typ Datentyp
boolean Boolescher Wert
color, list.color String (Hex-Farbcode, z. B. #FFF123), String-Array
date, list.date String (ISO-8601-Datum), String-Array (ISO-8601-Daten)
date_time, list.date_time String (ISO-8601-Datetime), String-Array (ISO-8601-Datetimes)
id, list.id String, String-Array
multi_line_text_field String
number_decimal String
number_integer Integer
single_line_text_field, list.single_line_text_field String, String-Array
url, list.url String (URL), String-Array (URLs)
metaobject_reference, list.metaobject_reference String, String-Array
mixed_reference, list.mixed_reference String, String-Array

Braze unterstützt keine Metafeld-Objekte, einschließlich einiger jeweiliger Listentypen:

  • dimension (list.dimension)
  • weight (list.weight)
  • link (list.link)
  • json
  • list.number_decimal
  • list.number_integer
  • money
  • rating (list.rating)
  • volume (list.volume)
  • rich_text_field
  1. Wählen Sie Sync Shopify collections, um das Modal zur Einrichtung der Kollektionen zu öffnen.
  2. Wählen Sie bis zu 20 Kollektionen zur Synchronisierung aus.
    • Das Modal bietet eine durchsuchbare Liste von bis zu 5.000 der zuletzt erstellten oder aktualisierten Kollektionen aus Ihrem Shopify-Shop.
    • Zuvor ausgewählte Kollektionen, die nicht mehr in den Top 5.000 sind, werden weiterhin in Ihrer Auswahl angezeigt.

Modal zur Auswahl von Kollektionen aus einem Dropdown.

Schritt 4: Synchronisierungsfortschritt verfolgen

Nachdem Sie Ihre Konfiguration gespeichert haben, beginnt Braze mit der Synchronisierung Ihrer Produkte und aktualisiert den Status auf Ihrer Shopify-Partnerseite auf In Progress. Die Synchronisierungsdauer hängt von der Anzahl der Produkte und Varianten in Ihrem Shop ab.

Sie können die Seite verlassen, sobald die Synchronisierung läuft; Braze sendet Ihnen eine Dashboard-Benachrichtigung, wenn die Synchronisierung abgeschlossen ist. Nach Abschluss wird der Status auf Active aktualisiert, und Sie können Ihre Produkte anzeigen, indem Sie den Katalognamen auf Ihrer Shopify-Partnerseite auswählen.

Seite mit Integrationseinstellungen und einem Status der Produktsynchronisierung.

Sie können auch synchronisierte Produkt-Tags, Metafelder und Kollektionen in Ihrem Shopify-Katalog als neue Spalten anzeigen.

Shopify-Katalog mit synchronisierten Daten.

Schritt 5: Konfiguration verwalten

Jeder Synchronisierungstyp hat eine Übersichtskarte auf der Shopify-Partnerseite, die die Gesamtanzahl der synchronisierten Elemente, den aktuellen Status und einen Link zu Ihrem Katalog anzeigt. Wählen Sie das Ansichtssymbol, um Ihre aktive Konfiguration anzuzeigen und zu bearbeiten.

Sie können Ihre Shopify-Produktsynchronisierung jederzeit über die Shopify-Partnerseite ändern, einschließlich der Verwaltung Ihrer Produkt-Tags, Kollektionen und Produkt-Metafelder.

Seite mit Integrationseinstellungen und einer aktiven Produkt-Katalogsynchronisierung.

Unterstützte Shopify-Katalogdaten

Feld Datentyp Beispiele
id String 45264808411274, wenn der Produktbezeichner des Katalogs Shopify Variant ID ist

12345, wenn der Produktbezeichner des Katalogs SKU ist (entspricht dem Wert, den Sie in Schritt 2 ausgewählt haben)
store_name String “your-store” (Subdomain des Shopify-Shops, ohne .myshopify.com)
shopify_product_id Zahl 7939032613002 (wird in Ihrem Braze-Katalog als Zahl gespeichert; Shopify-APIs geben diese ID möglicherweise als String zurück)
shopify_variant_id Zahl 45264808411274 (wird in Ihrem Braze-Katalog als Zahl gespeichert; Shopify-APIs geben diese ID möglicherweise als String zurück)
product_title String “Classic leather jacket”
variant_title String “Large / Red”, “Medium” oder “Default Title” bei Produkten mit nur einer Variante
status String “active”, “draft”, “archived”
product_image_url String “https://cdn.shopify.com/s/files/1/0641/0970/7402/files/t_shir.jpg?v=1736538760”
variant_image_url String Dieselbe CDN-URL wie das Produktbild, wenn kein Variantenbild vorhanden ist; andernfalls eine variantenspezifische Bild-URL
vendor String “Flash and Thread”, “PantsLabyrinth”
product_type String “Outerwear”, “T-Shirts” (aus dem Produkttyp des Produkts in Shopify)
product_url String “https://your-store.myshopify.com/products/classic-leather-jacket”
product_handle String “classic-leather-jacket”
published_scope String “web”, “global”
price Zahl 10.00, 24.99

Shopify gibt Preise häufig als Strings zurück (zum Beispiel "199.00" in der REST Admin API). Braze wandelt sie für dieses Katalogfeld in Zahlen um.
compare_at_price Zahl 15.00, wenn in Shopify ein Vergleichspreis festgelegt ist

0, wenn in Shopify kein Vergleichspreis vorhanden ist. Shopify-APIs geben für einen nicht festgelegten Vergleichspreis in der Regel null zurück; Braze speichert 0 im Katalog, damit das Feld immer numerisch ist (dies ist ein Braze-Standardwert, kein Wert, den Shopify als 0 sendet).
inventory_quantity Zahl 20, 0 oder ein negativer Wert, wenn Überverkäufe zulässig sind (zum Beispiel -18)
options String “Size,Color”

Shopify erlaubt bis zu drei Optionstypen pro Produkt (zum Beispiel Größe, Farbe, Material). Der Wert von options ist eine kommagetrennte Liste dieser Namen.
option_values String “Medium,Red”, “Large,Red”

Jeder Wert entspricht derselben Reihenfolge wie options (bis zu drei Werte).
sku String “12345”, “SKU-001-RED-L”
product_tags Array ["Summer", "Sale", "New"]

Erfordert die Synchronisierung von Produkt-Tags.
collection_ids Array [123456789012, 987654321098] (IDs von Shopify-Kollektionen)

Erfordert die Synchronisierung von Shopify-Kollektionen.
Metafield columns Variiert je nach Typ Jedes synchronisierte Metafield erscheint als separate Spalte, die nach seinem Schlüssel benannt ist. Weitere Informationen finden Sie unter Unterstützte Metafields im Tab „Produkt-Metafields“ in Schritt 3.

Anwendungsfälle für den Shopify-Katalog

Diese Anwendungsfälle zeigen, wie Sie Ihre synchronisierten Shopify-Katalogdaten nutzen können, um Nachrichten zu personalisieren.

Mit Produkt-Tags können Sie Nachrichten danach personalisieren, wie Ihre Produkte in Shopify kategorisiert sind. Sie können zum Beispiel über eine Katalogauswahl eine Aktion mit allen Produkten versenden, die mit „Summer Sale“ getaggt sind, oder ein Segment von Nutzer:innen erstellen, die mit „Premium“ getaggte Produkte gekauft haben.

Produkt-Tags werden als Array-Feld in jedem Katalogartikel gespeichert. Informationen zur Konfiguration der Synchronisierung von Produkt-Tags finden Sie unter Shopify-Produkt-Tags.

Katalogauswahl

  1. Weisen Sie den relevanten Produkten in Shopify das Produkt-Tag „Women’s“ zu.

Ein Produkttyp „Women's - Sweaters“ mit den Tags „Women's“, „Sweaters“ und „Men“.

  1. Aktivieren Sie in Braze die Tag-Synchronisierung und wählen Sie das Produkt-Tag „Women’s“ aus.

Modal zur Auswahl von Shopify-Produkt-Tags, in dem 15 bekleidungsbezogene Tags ausgewählt sind, darunter „Women's“.

Personalisierung

  1. Erstellen Sie eine Katalogauswahl, die nach Produkten mit dem jeweiligen Produkt-Tag filtert, zum Beispiel „Women’s“. Sie können innerhalb einer einzelnen Katalogauswahl nur ein eindeutiges Array-Feld verwenden und bis zu 50 Produkte in Ihre Katalogauswahl aufnehmen.

Eine Katalogauswahl, die nach Produkt-Tags mit dem Attribut „Women's“ filtert.

  1. Fügen Sie im Nachrichten-Editor die Auswahl an der Stelle ein, an der Sie die mit „Women’s“ getaggten Produkte aus der Katalogauswahl per Template einbinden möchten. Sie könnten zum Beispiel einen HTML-Produktblock wie diesen verwenden:
{% catalog_selection_items se-team-ecommerce_shopify_catalog womens_clothing %}

{% 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>

Wenn Sie bestimmte mit „Women’s“ getaggte Produkte in einer Push-Benachrichtigung erwähnen möchten, können Sie alternativ das Tool Personalisierung hinzufügen verwenden und Ihre Katalogartikel angeben.

Checkout the latest women's clothing:
    {% catalog_selection_items se-team-ecommerce_shopify_catalog womens_clothing %}
    {{ items[0].product_title}}{{items[0].price}}
    {{ items[1].product_title}}{{items[1].price}}
    {{ items[2].product_title}}{{items[2].price}}

Push-Benachrichtigungs-Editor mit einer Katalogauswahl, die drei Artikel mit einem Produkt-Tag einbindet.

Katalogsegmentierung (SQL)

Verwenden Sie Segmenterweiterungen, um Segmente auf Basis von Nutzer:innen zu erstellen, die mit einem Produkt-Tag interagiert haben. Um beispielsweise Nutzer:innen zu finden, die mit Katalogartikeln mit einem bestimmten Produkt-Tag interagiert haben, verwenden Sie diese Abfrage:

-- Description:
-- This query fetches users who have engaged with catalog items that contain a specific product tag. 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 = 'product_tags' AND ARRAY_CONTAINS('<product_tag_value>'::VARIANT, TRY_PARSE_JSON(items.field_value)));

Mit Produkt-Metafeldern können Sie Nachrichten mit angepassten Produktdetails personalisieren, die über die Standardfelder von Shopify hinausgehen. Sie können zum Beispiel Pflegehinweise in eine Bestellbestätigung aufnehmen, das Herkunftsland in einer Empfehlungs-E-Mail anzeigen oder Nutzer:innen segmentieren, die ein bestimmtes Material gekauft haben.

Jedes synchronisierte Metafeld wird zu einer separaten Spalte in Ihrem Katalog, deren Datentyp durch den Metafeld-Typ bestimmt wird. Informationen zur Einrichtung der Metafeld-Synchronisierung finden Sie unter Shopify-Produkt-Metafelder.

Katalogauswahl

  1. Setzen Sie in Shopify das Produkt-Metafeld seasonal bei den relevanten Produkten auf summer (dies ist ein Metafeld-Wert, kein Produkt-Tag).

Modal zum Hinzufügen von Produkt-Metafeldern, darunter das Metafeld „seasonal“ mit dem Wert „summer“.

  1. Aktivieren Sie in Braze die Metafeld-Synchronisierung und wählen Sie custom.seasonal aus (bzw. den Namespace und Schlüssel, die Ihrem Shopify-Metafeld entsprechen).

Modal zur Auswahl von Produkt-Metafeldern mit einem aufgeklappten Dropdown, in dem vier Elemente ausgewählt sind, darunter „custom.seasonal“.

Personalisierung

  1. Erstellen Sie eine Katalogauswahl, die nach Metafeldern mit dem jeweiligen Wert filtert.

Eine Katalogauswahl, die nach Metafeldern mit dem Attribut „summer“ filtert.

  1. Fügen Sie im Nachrichten-Editor die Auswahl an der Stelle ein, an der Sie Produkt-Metafelder per Template einbinden möchten. Sie könnten zum Beispiel einen HTML-Produktblock wie diesen verwenden:
{% 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>

Wenn Sie bestimmte Produkte mit einem bestimmten Metafeld-Wert in einer Push-Benachrichtigung erwähnen möchten, können Sie alternativ das Tool Personalisierung hinzufügen verwenden und Ihre Katalogartikel angeben.

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}}

Push-Benachrichtigungs-Editor mit einer metafeldbasierten Katalogauswahl, die drei Artikel einbindet.

Katalogsegmentierung (SQL)

Verwenden Sie Segmenterweiterungen, um Segmente auf Basis von Nutzer:innen zu erstellen, die mit einem Produkt-Metafeld interagiert haben. Um beispielsweise Nutzer:innen zu finden, die ein E-Commerce-Event mit einem Produkt ausgelöst haben, dessen Metafeld-Array einen bestimmten Wert enthält, verwenden Sie diese Abfrage:

-- -----------------------------------------------------------------------------
-- 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));

Wenn Sie Kund:innen segmentieren möchten, die eine Bestellung mit bestimmten Produkt-Metafeldern aufgegeben haben, verwenden Sie eines der folgenden Templates für SQL-Segmenterweiterungen (gesamter Zeitraum, bestimmter Zeitraum, erstes oder letztes Auslösen eines Events).

-- =============================================================================
-- 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;

Mit Shopify-Kollektionen können Sie kuratierte Produktgruppen in Ihre Nachrichten einbinden, die auch auf Ihrer Shopify-Website und in Ihren App-Erlebnissen verwendet werden. Sie können zum Beispiel „New Arrivals“ in einer Werbe-E-Mail hervorheben, „Best Sellers“ in einem Warenkorb-Abbruch-Canvas per Cross-Selling anbieten oder Nutzer:innen ansprechen, die eine saisonale Kollektion angesehen haben.

Katalogauswahl

  1. Erstellen Sie in Shopify eine Kollektion „New Women’s Products - In Stock“ mit Ihren erfolgreichsten Produkten.

Liste der Shopify-Kollektionen, darunter „New Women's Products - In Stock“.

  1. Aktivieren Sie in Braze die Kollektionssynchronisierung und wählen Sie „Women’s Products - In Stock“ aus.

Modal zur Auswahl von Kollektionen mit einem aufgeklappten Dropdown, in dem vier Kollektionen ausgewählt sind.

Personalisierung

  1. Erstellen Sie eine Katalogauswahl mit dem Namen „New Women’s Products - In Stock“, die nach Produkten mit der ID dieser Kollektion filtert. Sie können innerhalb einer einzelnen Katalogauswahl nur ein eindeutiges Array-Feld verwenden und bis zu 50 Produkte in Ihre Kollektion aufnehmen.
    • Sie können auch eigene angepasste Auswahlen erstellen, indem Sie mit dem Feld Kollektionen filtern.

Eine Katalogauswahl, die nach Kollektionen mit dem Kollektions-ID-Attribut „470645342446“ filtert.

  1. Binden Sie Ihre Kollektion per Template in Ihre Nachricht ein, indem Sie Ihre erstellte Auswahl verwenden oder direkt auf die Kollektion verweisen. Sie könnten zum Beispiel einen HTML-Produktblock wie diesen verwenden:
{% 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>

Wenn Sie bestimmte neue Produkte in einer Push-Benachrichtigung erwähnen möchten, können Sie alternativ das Tool Personalisierung hinzufügen verwenden und Ihre Katalogartikel angeben.

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}}

Push-Benachrichtigungs-Editor mit einer Katalogauswahl, die drei Artikel aus einer Kollektion einbindet.

Katalogsegmentierung (SQL)

Erstellen Sie ein Segment von Nutzer:innen, die mit einer Kollektion interagiert haben. Verwenden Sie Segmenterweiterungen, um Segmente auf Basis der Kollektionszugehörigkeit zu erstellen. Um beispielsweise Nutzer:innen zu finden, die im letzten Jahr Produkte aus einer bestimmten Kollektion gekauft haben, verwenden Sie diese Abfrage:

-- 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)));

Produktsynchronisierung deaktivieren

Wenn Sie das Shopify-Feature zur Produktsynchronisierung deaktivieren, werden Ihr gesamter Katalog und Ihre Produkte gelöscht. Dies kann sich auch auf alle Nachrichten auswirken, die die Produktdaten dieses Katalogs aktiv nutzen. Vergewissern Sie sich, dass Sie diese Campaigns oder Canvases vor der Deaktivierung entweder aktualisiert oder pausiert haben, da dies dazu führen kann, dass Nachrichten ohne Produktangaben versendet werden. Löschen Sie den Shopify-Katalog nicht direkt auf der Katalogseite.

Fehlerbehebung

Wenn bei Ihrer Shopify-Produktsynchronisierung ein Fehler auftritt, kann einer der folgenden Fehler die Ursache sein. Folgen Sie den Anweisungen, um das Problem zu beheben und die Synchronisierung wiederherzustellen:

Fehler Grund Lösung
Serverfehler Dieser Fehler tritt auf, wenn bei Shopify ein Serverfehler auftritt, während wir versuchen, Ihre Produkte zu synchronisieren. Deaktivieren Sie die Synchronisierung und synchronisieren Sie Ihren gesamten Produktbestand erneut.
Doppelte SKU Dieser Fehler tritt auf, wenn Sie die SKU als ID Ihrer Katalogartikel verwenden und mehrere Varianten dieselbe SKU haben. Jede item_id im Katalog muss eindeutig sein. Betroffene Artikel werden daher möglicherweise nicht synchronisiert, sammeln Fehlereinträge an oder ihre Produktinformationen werden unbeabsichtigt überschrieben. Prüfen Sie Ihre vollständige Liste der Produkte und Varianten in Shopify, um sicherzustellen, dass es keine doppelten SKUs gibt. Falls doch, ändern Sie diese ausschließlich in Ihrem Shopify-Shop-Konto in eindeutige SKUs. Nachdem Sie das korrigiert haben, deaktivieren Sie die Synchronisierung und synchronisieren Sie Ihren gesamten Produktbestand erneut.
Katalog-Limit überschritten Dieser Fehler tritt auf, wenn Sie Ihr Katalog-Limit überschreiten. Braze kann die Synchronisierung dann nicht abschließen oder aktiv halten, da kein Speicherplatz mehr verfügbar ist. Für dieses Problem gibt es zwei Lösungen:

1. Wenden Sie sich an Ihren Account Manager, um ein Upgrade Ihres Tarifs durchzuführen und Ihr Katalog-Limit zu erhöhen.

2. Geben Sie Speicherplatz frei, indem Sie Folgendes löschen:
- Katalogartikel aus anderen Katalogen
- Andere Kataloge
- Erstellte Selektionen

Nachdem Sie eine der beiden Lösungen angewendet haben, müssen Sie die Synchronisierung deaktivieren und anschließend erneut synchronisieren.

Weitere Informationen zur Validierung von Katalogartikeln finden Sie unter Fehlerbehebung in der Dokumentation zur Katalog-API.

New Stuff!