Zum Inhalt springen

E-Commerce-Events protokollieren

Erfahren Sie, wie Sie empfohlene E-Commerce-Events über die Braze Android-, Swift- und Web-SDKs mithilfe typisierter Event-Klassen und logEcommerceEvent protokollieren. Informationen zu Event-Eigenschaftsschemata, Plattform-Features und Validierung bei der Datenaufnahme finden Sie unter Empfohlene Events und Event-Validierung und Fehlerbehebung.

Event-Schemata

Die sechs empfohlenen E-Commerce-Events verwenden plattformübergreifend ein gemeinsames Schema auf Bestellebene. Nutzen Sie die folgenden Eigenschaftstabellen, wenn Sie die Payload für jedes Event erstellen. Das kanonische Schema mit vollständigem Validierungsverhalten und Beispielen für die REST API finden Sie unter Empfohlene Events. Informationen zu Plattform-Features wie Segmentierung, Canvas-Templates und Reporting finden Sie unter So verwenden Sie E-Commerce-Events.

Triggern Sie dieses Event, wenn Nutzer:innen eine Produktdetailseite aufrufen.

Event-Eigenschaften

Name der Eigenschaft Datentyp Erforderlich Beschreibung
product_id String Ja Eindeutiger Produkt-Bezeichner (zum Beispiel SKU oder Artikel-ID).
product_name String Ja Anzeigename des Produkts.
variant_id String Ja Bezeichner der Produktvariante (zum Beispiel shirt_medium_blue).
image_url String Nein URL des Produktbilds.
product_url String Nein URL der Produktseite mit weiteren Details.
price Gleitkommazahl Ja Stückpreis der Variante zum Zeitpunkt des Aufrufs.
currency String Ja Dreistelliger Code nach ISO 4217 (zum Beispiel USD oder EUR).
source String Ja Quelle, aus der das Event stammt (zum Beispiel web, ios oder android).
type String-Array Nein Erforderlich, um die Katalog-Trigger-Features von Braze für Benachrichtigungen bei Wiederverfügbarkeit und Preissenkungen zu nutzen. Zulässige Werte: "price_drop", "back_in_stock".
catalog_name String Nein Der Katalog, zu dem ein aus diesem Event erstelltes Abo für Wiederverfügbarkeit oder Preissenkungen gehört. Wenn diese Eigenschaft fehlt, wird der Fallback-Katalog des Workspace verwendet. Muss eine Eigenschaft der obersten Ebene sein; ein in metadata verschachteltes catalog_name wird ignoriert.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare (zum Beispiel category oder brand).

Triggern Sie dieses Event jedes Mal, wenn sich der Inhalt des Warenkorbs von Nutzer:innen ändert. Verwenden Sie entweder den vollständigen Austausch des Warenkorbs (action weglassen oder auf replace setzen) oder inkrementelle Updates (add oder remove).

Event-Eigenschaften

Eigenschaft Datentyp Erforderlich Beschreibung
cart_id String Ja Eindeutiger Bezeichner für den Warenkorb. Wird von Warenkorb-, Checkout- und Bestell-Events gemeinsam für die Zuordnung des Warenkorbs der Nutzer:innen verwendet. Regeln zur Wiederverwendung nach dem Checkout oder der Bestellung finden Sie unter Warenkorb-ID nach Checkout oder Bestellung.
action String Nein add (Menge erhöhen oder eine Position hinzufügen), remove (Menge verringern; bei 0 wird die Position entfernt) oder replace (vollständiger Austausch des Warenkorbs, entspricht dem Weglassen von action).
total_value Gleitkommazahl Bedingt Erforderlich, wenn action fehlt oder replace ist; wird dann als Gesamtwert des Warenkorbs gespeichert. Optional, wenn action den Wert add oder remove hat.

Wenn action den Wert add oder remove hat, wird der Wert nicht im Warenkorb gespeichert und ein zuvor gespeicherter Gesamtwert wird nicht gelöscht. Wird ein Warenkorb nur mit add oder remove aktualisiert, wird kein total_value gespeichert, und der Tag {% shopping_cart %} summiert den price jedes Produkts multipliziert mit dessen quantity.
subtotal_value Gleitkommazahl Nein Zwischensumme des Warenkorbs (nach Rabatten, vor Steuern/Versand). Wird nicht im Warenkorb gespeichert und ist nicht über den Liquid-Tag {% shopping_cart %} verfügbar.
tax Gleitkommazahl Nein Gesamtsteuer für den Warenkorb. Wird nicht im Warenkorb gespeichert und ist nicht über den Liquid-Tag {% shopping_cart %} verfügbar.
shipping Gleitkommazahl Nein Gesamte Versandkosten für den Warenkorb. Wird nicht im Warenkorb gespeichert und ist nicht über den Liquid-Tag {% shopping_cart %} verfügbar.
currency String Ja Dreistelliger Code nach ISO 4217.
products Array Ja Positionen für dieses Update. Siehe die Tabelle der Produkteigenschaften.
source String Ja Quelle, aus der das Event stammt.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare für zusätzliche Daten auf Event-Ebene.

Produkteigenschaften (products[])

Eigenschaft Datentyp Erforderlich Beschreibung
product_id String Ja Eindeutiger Produkt-Bezeichner.
product_name String Ja Anzeigename des Produkts.
variant_id String Ja Bezeichner der Variante.
image_url String Nein URL des Produktbilds.
product_url String Nein URL der Produktseite.
quantity Ganzzahl Ja Bei vollständigem Austausch die Anzahl der Einheiten dieser Position im Warenkorb. Bei add oder remove die Anzahl der hinzuzufügenden oder zu entfernenden Einheiten.
price Gleitkommazahl Ja Stückpreis der Variante.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare (zum Beispiel color oder size).

Triggern Sie dieses Event, wenn Nutzer:innen den Checkout starten.

Event-Eigenschaften

Eigenschaft Datentyp Erforderlich Beschreibung
checkout_id String Ja Eindeutiger Bezeichner für die Checkout-Sitzung.
cart_id String Nein Bezeichner des Warenkorbs. Wird von Warenkorb-, Checkout- und Bestell-Events gemeinsam für die Zuordnung des Warenkorbs der Nutzer:innen verwendet.
total_value Gleitkommazahl Ja Gesamter Geldwert des Checkouts.
subtotal_value Gleitkommazahl Nein Zwischensumme (nach Rabatten, vor Steuern/Versand).
tax Gleitkommazahl Nein Gesamtsteuer für den Checkout.
shipping Gleitkommazahl Nein Gesamte Versandkosten.
currency String Ja Dreistelliger Code nach ISO 4217.
products Array Ja Artikel im Checkout. Siehe die Tabelle der Produkteigenschaften.
source String Ja Quelle, aus der das Event stammt.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare. Erkannte Untereigenschaft: checkout_url (String).

Produkteigenschaften (products[])

Eigenschaft Datentyp Erforderlich Beschreibung
product_id String Ja Eindeutiger Produkt-Bezeichner.
product_name String Ja Anzeigename des Produkts.
variant_id String Ja Bezeichner der Variante.
image_url String Nein URL des Produktbilds.
product_url String Nein URL der Produktseite.
quantity Ganzzahl Ja Anzahl der Einheiten im Warenkorb.
price Gleitkommazahl Ja Stückpreis der Variante.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare (zum Beispiel color oder size).

Triggern Sie dieses Event, wenn eine Bestellung erfolgreich abgeschlossen oder die Zahlung bestätigt wurde.

Event-Eigenschaften

Eigenschaft Datentyp Erforderlich Beschreibung
order_id String Ja Eindeutiger Bezeichner für die Bestellung.
cart_id String Nein Bezeichner des Warenkorbs. Wird von Warenkorb-, Checkout- und Bestell-Events gemeinsam für die Zuordnung des Warenkorbs der Nutzer:innen verwendet.
total_value Gleitkommazahl Ja Gesamter Geldwert der Bestellung.
subtotal_value Gleitkommazahl Nein Zwischensumme (nach Rabatten, vor Steuern/Versand).
tax Gleitkommazahl Nein Gesamtsteuer für die Bestellung.
shipping Gleitkommazahl Nein Gesamte Versandkosten.
currency String Ja Dreistelliger Code nach ISO 4217.
total_discounts Gleitkommazahl Nein Gesamtbetrag der auf die Bestellung angewendeten Rabatte.
discounts Array Nein Detaillierte Liste der angewendeten Rabatte. Jedes Rabattobjekt unterstützt code (String), amount (Gleitkommazahl) und type (String).
products Array Ja Artikel in der Bestellung. Siehe die Tabelle der Produkteigenschaften.
source String Ja Quelle, aus der das Event stammt.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare. Erkannte Untereigenschaft: order_status_url (String).

Produkteigenschaften (products[])

Eigenschaft Datentyp Erforderlich Beschreibung
product_id String Ja Eindeutiger Produkt-Bezeichner.
product_name String Ja Anzeigename des Produkts.
variant_id String Ja Bezeichner der Variante.
image_url String Nein URL des Produktbilds.
product_url String Nein URL der Produktseite.
quantity Ganzzahl Ja Anzahl der Einheiten in der Bestellung.
price Gleitkommazahl Ja Stückpreis der Variante.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare (zum Beispiel color oder size).

Triggern Sie dieses Event, wenn eine Bestellung storniert wird.

Event-Eigenschaften

Eigenschaft Datentyp Erforderlich Beschreibung
order_id String Ja Eindeutiger Bezeichner für die Bestellung.
total_value Gleitkommazahl Ja Gesamter Geldwert der stornierten Bestellung. Senden Sie den absoluten Betrag (größer oder gleich 0); Braze übernimmt die Verringerung.
subtotal_value Gleitkommazahl Nein Zwischensumme (nach Rabatten, vor Steuern/Versand).
tax Gleitkommazahl Nein Gesamtsteuer für die Bestellung.
shipping Gleitkommazahl Nein Gesamte Versandkosten.
currency String Ja Dreistelliger Code nach ISO 4217.
total_discounts Gleitkommazahl Nein Gesamtbetrag der auf die Bestellung angewendeten Rabatte.
discounts Array Nein Detaillierte Liste der angewendeten Rabatte.
cancel_reason String Ja Grund für die Stornierung der Bestellung.
products Array Ja Artikel in der stornierten Bestellung. Siehe die Tabelle der Produkteigenschaften.
source String Ja Quelle, aus der das Event stammt.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare. Erkannte Untereigenschaft: order_status_url (String).

Produkteigenschaften (products[])

Eigenschaft Datentyp Erforderlich Beschreibung
product_id String Ja Eindeutiger Produkt-Bezeichner.
product_name String Ja Anzeigename des Produkts.
variant_id String Ja Bezeichner der Variante.
image_url String Nein URL des Produktbilds.
product_url String Nein URL der Produktseite.
quantity Ganzzahl Ja Anzahl der Einheiten in der Bestellung.
price Gleitkommazahl Ja Stückpreis der Variante.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare (zum Beispiel color oder size).

Triggern Sie dieses Event, wenn eine vollständige oder teilweise Rückerstattung erfolgt. Setzen Sie bei Teilrückerstattungen total_value nur auf den erstatteten Betrag, nicht auf den ursprünglichen Gesamtbetrag der Bestellung.

Event-Eigenschaften

Eigenschaft Datentyp Erforderlich Beschreibung
order_id String Ja Eindeutiger Bezeichner für die ursprüngliche Bestellung.
total_value Gleitkommazahl Ja Gesamter Geldwert der Rückerstattung. Senden Sie den absoluten Betrag (größer oder gleich 0); Braze übernimmt die Anpassung des Umsatzes.
currency String Ja Dreistelliger Code nach ISO 4217.
total_discounts Gleitkommazahl Nein Gesamtbetrag der ursprünglich angewendeten Rabatte.
discounts Array Nein Detaillierte Liste der Rabatte.
products Array Ja Erstattete Artikel. Siehe die Tabelle der Produkteigenschaften.
source String Ja Quelle, aus der das Event stammt.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare. Erkannte Untereigenschaft: order_status_url (String).

Produkteigenschaften (products[])

Eigenschaft Datentyp Erforderlich Beschreibung
product_id String Ja Eindeutiger Produkt-Bezeichner.
product_name String Ja Anzeigename des Produkts.
variant_id String Ja Bezeichner der Variante.
image_url String Nein URL des Produktbilds.
product_url String Nein URL der Produktseite.
quantity Ganzzahl Ja Anzahl der erstatteten Einheiten.
price Gleitkommazahl Ja Stückpreis der Variante.
metadata Objekt Nein Flexible Schlüssel-Wert-Paare (zum Beispiel color oder size).

Android

Ab Android SDK 42.3.0+ stehen typisierte E-Commerce-Event-Klassen zur Verfügung. Sie bieten eine clientseitige Validierung zur Konstruktionszeit und eine automatische snake_case-Serialisierung, wenn Sie Braze.logEcommerceEvent aufrufen.

Android-Klasse Event-Name Hinweise
ProductViewedEvent ecommerce.product_viewed Flacht Produktfelder auf die oberste Ebene von properties ab (kein products-Array). Unterstützt die optionalen Parameter type (ab 43.0.0) und catalogName für Katalog-Trigger bei Wiederverfügbarkeit und Preissenkung. Verwenden Sie in früheren Versionen logCustomEvent oder die REST API, um diese Eigenschaften zu senden.
CartUpdatedEvent ecommerce.cart_updated Verwenden Sie CartUpdatedAction (ADD, REMOVE, REPLACE) für die action-Eigenschaft.
CheckoutStartedEvent ecommerce.checkout_started  
OrderPlacedEvent ecommerce.order_placed Unterstützt die optionalen Parameter cartId, totalDiscounts und discounts.

Gemeinsame Bausteine

  • EcommerceProduct: Einzelposten für Warenkorb-, Checkout- und Bestell-Events.
    • Erforderlich: productId, productName, variantId, price, quantity (nicht-negativer Long)
    • Optional: imageUrl, productUrl, metadata
  • BrazeProperties: metadata auf Event- oder Produktebene. Schlüssel müssen nicht-leere Strings mit mindestens 255 Zeichen ohne führendes Dollarzeichen ($) sein.

Clientseitige Validierung

Ungültige Payloads lösen beim Konstruieren der Event-Klasse eine IllegalArgumentException aus, sodass das Event nie in die Warteschlange gestellt wird. Allgemeine Regeln:

Feld oder Regel Validierung
String-IDs und -Namen (product_id, product_name, variant_id, cart_id, checkout_id, order_id, source, optionale URLs) Nicht leer, bis zu 255 Zeichen
price, total_value, total_discounts Muss größer oder gleich 0 sein
currency Gültiger ISO-4217-Code (vom SDK getrimmt und in Großbuchstaben umgewandelt)
products (Warenkorb-, Checkout-, Bestell-Events) Mindestens ein EcommerceProduct
quantity (pro Produkt) Nicht-negative Ganzzahl

Wenn die serialisierten Eigenschaften zum Versandzeitpunkt das SDK-Größenlimit überschreiten, protokolliert logEcommerceEvent einen Fehler und sendet das Event nicht.

Code-Beispiele

import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import com.braze.models.recommended.ecommerce.ProductViewedEvent

val metadata = BrazeProperties()
  .addProperty("category", "Apparel")

val productViewedEvent = ProductViewedEvent(
  productId = "PROD101",
  productName = "Silk Scarf",
  variantId = "SCARF_RED_SILK",
  price = 150.00,
  currency = "EUR",
  source = "https://braze-fashion.eu",
  imageUrl = "https://braze-fashion.eu/images/scarf_red.jpg",
  productUrl = "https://braze-fashion.eu/products/scarf",
  metadata = metadata,
  type = listOf("price_drop", "back_in_stock"),
  catalogName = "scarves",
)

Braze.getInstance(context).logEcommerceEvent(productViewedEvent)

Legen Sie action mit CartUpdatedAction fest:

Wert Wire-Wert Beschreibung
CartUpdatedAction.ADD add Menge erhöhen oder eine Position hinzufügen.
CartUpdatedAction.REMOVE remove Menge verringern; Position bei 0 entfernen.
CartUpdatedAction.REPLACE replace Den gesamten Warenkorb ersetzen (Standard).
import com.braze.Braze
import com.braze.models.recommended.ecommerce.CartUpdatedAction
import com.braze.models.recommended.ecommerce.CartUpdatedEvent
import com.braze.models.recommended.ecommerce.EcommerceProduct

val product = EcommerceProduct(
  productId = "SKU-RUN-4821",
  productName = "Ultraboost Running Shoe",
  variantId = "UB-BLK-11",
  price = 189.99,
  quantity = 1,
)

val cartUpdatedEvent = CartUpdatedEvent(
  cartId = "cart_abc123",
  currency = "USD",
  source = "android",
  totalValue = 189.99,
  products = listOf(product),
  action = CartUpdatedAction.ADD,
)

Braze.getInstance(context).logEcommerceEvent(cartUpdatedEvent)
import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import com.braze.models.recommended.ecommerce.CheckoutStartedEvent
import com.braze.models.recommended.ecommerce.EcommerceProduct

val products = listOf(
  EcommerceProduct(
    productId = "SKU-RUN-4821",
    productName = "Ultraboost Running Shoe",
    variantId = "UB-BLK-11",
    price = 189.99,
    quantity = 1,
  ),
)

val checkoutStartedEvent = CheckoutStartedEvent(
  checkoutId = "chk_88291",
  currency = "USD",
  source = "android",
  totalValue = 234.96,
  products = products,
  cartId = "cart_abc123",
  metadata = BrazeProperties().addProperty("checkout_url", "https://www.example.com/checkout/chk_88291"),
)

Braze.getInstance(context).logEcommerceEvent(checkoutStartedEvent)
import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import com.braze.models.recommended.ecommerce.EcommerceProduct
import com.braze.models.recommended.ecommerce.OrderPlacedEvent

val products = listOf(
  EcommerceProduct(
    productId = "SKU-RUN-4821",
    productName = "Ultraboost Running Shoe",
    variantId = "UB-BLK-11",
    price = 189.99,
    quantity = 1,
  ),
)

val orderPlacedEvent = OrderPlacedEvent(
  orderId = "ord_77821",
  currency = "USD",
  source = "android",
  totalValue = 224.96,
  products = products,
  cartId = "cart_abc123",
  totalDiscounts = 10.0,
  discounts = listOf(
    mapOf("code" to "SPRING10", "amount" to 10.0, "type" to "percentage"),
  ),
  metadata = BrazeProperties().addProperty("order_status_url", "https://www.example.com/orders/ord_77821/status"),
)

Braze.getInstance(context).logEcommerceEvent(orderPlacedEvent)

Braze stellt für dieses Event keine typisierte SDK-Klasse bereit. Verwenden Sie logCustomEvent mit einem Payload, der dem ecommerce.order_cancelled-Event-Schema entspricht.

import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import org.json.JSONArray
import org.json.JSONObject

val properties = BrazeProperties(
  JSONObject()
    .put("order_id", "ord_77821")
    .put("total_value", 224.96)
    .put("currency", "USD")
    .put("cancel_reason", "customer_request")
    .put("source", "android")
    .put(
      "products",
      JSONArray().put(
        JSONObject()
          .put("product_id", "SKU-RUN-4821")
          .put("product_name", "Ultraboost Running Shoe")
          .put("variant_id", "UB-BLK-11")
          .put("quantity", 1)
          .put("price", 189.99),
      ),
    ),
)

Braze.getInstance(context).logCustomEvent("ecommerce.order_cancelled", properties)

Braze stellt für dieses Event keine typisierte SDK-Klasse bereit. Verwenden Sie logCustomEvent mit einem Payload, der dem ecommerce.order_refunded-Event-Schema entspricht.

import com.braze.Braze
import com.braze.models.outgoing.BrazeProperties
import org.json.JSONArray
import org.json.JSONObject

val properties = BrazeProperties(
  JSONObject()
    .put("order_id", "ord_77821")
    .put("total_value", 189.99)
    .put("currency", "USD")
    .put("source", "android")
    .put(
      "products",
      JSONArray().put(
        JSONObject()
          .put("product_id", "SKU-RUN-4821")
          .put("product_name", "Ultraboost Running Shoe")
          .put("variant_id", "UB-BLK-11")
          .put("quantity", 1)
          .put("price", 189.99),
      ),
    ),
)

Braze.getInstance(context).logCustomEvent("ecommerce.order_refunded", properties)
import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import com.braze.models.recommended.ecommerce.ProductViewedEvent;

BrazeProperties metadata = new BrazeProperties()
    .addProperty("category", "Apparel");

ProductViewedEvent productViewedEvent = new ProductViewedEvent(
    /* productId */ "PROD101",
    /* productName */ "Silk Scarf",
    /* variantId */ "SCARF_RED_SILK",
    /* price */ 150.00,
    /* currency */ "EUR",
    /* source */ "https://braze-fashion.eu",
    /* imageUrl */ "https://braze-fashion.eu/images/scarf_red.jpg",
    /* productUrl */ "https://braze-fashion.eu/products/scarf",
    /* metadata */ metadata,
    /* type */ Arrays.asList("price_drop", "back_in_stock"),
    /* catalogName */ "scarves"
);

Braze.getInstance(context).logEcommerceEvent(productViewedEvent);

Legen Sie action mit CartUpdatedAction fest:

Wert Wire-Wert Beschreibung
CartUpdatedAction.ADD add Menge erhöhen oder eine Position hinzufügen.
CartUpdatedAction.REMOVE remove Menge verringern; Position bei 0 entfernen.
CartUpdatedAction.REPLACE replace Den gesamten Warenkorb ersetzen (Standard).
import com.braze.Braze;
import com.braze.models.recommended.ecommerce.CartUpdatedAction;
import com.braze.models.recommended.ecommerce.CartUpdatedEvent;
import com.braze.models.recommended.ecommerce.EcommerceProduct;
import java.util.Collections;

EcommerceProduct product = new EcommerceProduct(
    /* productId */ "SKU-RUN-4821",
    /* productName */ "Ultraboost Running Shoe",
    /* variantId */ "UB-BLK-11",
    /* price */ 189.99,
    /* quantity */ 1
);

CartUpdatedEvent cartUpdatedEvent = new CartUpdatedEvent(
    /* cartId */ "cart_abc123",
    /* currency */ "USD",
    /* source */ "android",
    /* totalValue */ 189.99,
    /* products */ Collections.singletonList(product),
    /* metadata */ null,
    /* action */ CartUpdatedAction.ADD
);

Braze.getInstance(context).logEcommerceEvent(cartUpdatedEvent);
import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import com.braze.models.recommended.ecommerce.CheckoutStartedEvent;
import com.braze.models.recommended.ecommerce.EcommerceProduct;
import java.util.Collections;

EcommerceProduct product = new EcommerceProduct(
    /* productId */ "SKU-RUN-4821",
    /* productName */ "Ultraboost Running Shoe",
    /* variantId */ "UB-BLK-11",
    /* price */ 189.99,
    /* quantity */ 1
);

BrazeProperties metadata = new BrazeProperties()
    .addProperty("checkout_url", "https://www.example.com/checkout/chk_88291");

CheckoutStartedEvent checkoutStartedEvent = new CheckoutStartedEvent(
    /* checkoutId */ "chk_88291",
    /* currency */ "USD",
    /* source */ "android",
    /* totalValue */ 234.96,
    /* products */ Collections.singletonList(product),
    /* cartId */ "cart_abc123",
    /* metadata */ metadata
);

Braze.getInstance(context).logEcommerceEvent(checkoutStartedEvent);
import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import com.braze.models.recommended.ecommerce.EcommerceProduct;
import com.braze.models.recommended.ecommerce.OrderPlacedEvent;
import java.util.Collections;

EcommerceProduct product = new EcommerceProduct(
    /* productId */ "SKU-RUN-4821",
    /* productName */ "Ultraboost Running Shoe",
    /* variantId */ "UB-BLK-11",
    /* price */ 189.99,
    /* quantity */ 1
);

BrazeProperties metadata = new BrazeProperties()
    .addProperty("order_status_url", "https://www.example.com/orders/ord_77821/status");

OrderPlacedEvent orderPlacedEvent = new OrderPlacedEvent(
    /* orderId */ "ord_77821",
    /* currency */ "USD",
    /* source */ "android",
    /* totalValue */ 224.96,
    /* products */ Collections.singletonList(product),
    /* cartId */ "cart_abc123",
    /* totalDiscounts */ 10.0,
    /* discounts */ null,
    /* metadata */ metadata
);

Braze.getInstance(context).logEcommerceEvent(orderPlacedEvent);

Braze stellt für dieses Event keine typisierte SDK-Klasse bereit. Verwenden Sie logCustomEvent mit einem Payload, der dem ecommerce.order_cancelled-Event-Schema entspricht.

import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import org.json.JSONArray;
import org.json.JSONObject;

Braze.getInstance(context).logCustomEvent(
    "ecommerce.order_cancelled",
    new BrazeProperties(new JSONObject()
        .put("order_id", "ord_77821")
        .put("total_value", 224.96)
        .put("currency", "USD")
        .put("cancel_reason", "customer_request")
        .put("source", "android")
        .put("products", new JSONArray()
            .put(new JSONObject()
                .put("product_id", "SKU-RUN-4821")
                .put("product_name", "Ultraboost Running Shoe")
                .put("variant_id", "UB-BLK-11")
                .put("quantity", 1)
                .put("price", 189.99)))));

Braze stellt für dieses Event keine typisierte SDK-Klasse bereit. Verwenden Sie logCustomEvent mit einem Payload, der dem ecommerce.order_refunded-Event-Schema entspricht.

import com.braze.Braze;
import com.braze.models.outgoing.BrazeProperties;
import org.json.JSONArray;
import org.json.JSONObject;

Braze.getInstance(context).logCustomEvent(
    "ecommerce.order_refunded",
    new BrazeProperties(new JSONObject()
        .put("order_id", "ord_77821")
        .put("total_value", 189.99)
        .put("currency", "USD")
        .put("source", "android")
        .put("products", new JSONArray()
            .put(new JSONObject()
                .put("product_id", "SKU-RUN-4821")
                .put("product_name", "Ultraboost Running Shoe")
                .put("variant_id", "UB-BLK-11")
                .put("quantity", 1)
                .put("price", 189.99)))));

iOS

Das Swift SDK stellt typisierte E-Commerce-Event-Klassen bereit – ProductViewedEvent, CartUpdatedEvent, CheckoutStartedEvent und OrderPlacedEvent –, die Sie erstellen und an logEcommerceEvent übergeben. Verwenden Sie ProductLineItem für die Produkte in Warenkorb-, Checkout- und Bestell-Events. Jeder Initializer kann einen Fehler werfen. Schließen Sie ihn daher in try? ein und protokollieren Sie das Event nur, wenn die Konstruktion erfolgreich ist. Dies ist ab Swift SDK Version 15.0.0 verfügbar.

ecommerce.order_cancelled und ecommerce.order_refunded sind nicht als typisierte Swift-SDK-Klassen verfügbar. Protokollieren Sie diese mit logCustomEvent.

Code-Beispiele

if let productViewedEvent = try? Braze.Ecommerce.ProductViewedEvent(
    productId: "4111176",
    productName: "Torchie runners",
    variantId: "4111176700",
    imageUrl: "https://braze-apparel.com/images/products/large/torchie-runners.jpg",
    productUrl: "https://braze-apparel.com/footwear-categories/sneakers/braze-orange-torchie-runners/",
    price: 85,
    currency: "GBP",
    source: "https://braze-apparel.com/",
    metadata: [
        "color": "ORANGE",
        "size": "6",
        "brand": "Braze"
    ],
    type: ["price_drop", "back_in_stock"],
    catalogName: "footwear"
) {
    AppDelegate.braze?.logEcommerceEvent(productViewedEvent)
}
if let productLine = try? Braze.Ecommerce.ProductLineItem(
    productId: "8266836345064",
    productName: "Classic T-Shirt",
    variantId: "44610569208040",
    imageUrl: "https://braze-apparel.com/images/tshirt-blue-medium.jpg",
    productUrl: "https://braze-apparel.com/products/classic-tshirt?variant=44610569208040",
    quantity: 2,
    price: 99.99,
    metadata: [
        "sku": "TSH-BLU-M",
        "color": "BLUE",
        "size": "Medium",
        "brand": "Braze"
    ]
), let cartUpdatedEvent = try? Braze.Ecommerce.CartUpdatedEvent(
    cartId: "cart_12345",
    totalValue: 199.98,
    currency: "USD",
    products: [productLine],
    source: "https://braze-apparel.com",
    metadata: [:]
) {
    AppDelegate.braze?.logEcommerceEvent(cartUpdatedEvent)
}
if let productLine = try? Braze.Ecommerce.ProductLineItem(
    productId: "632910392",
    productName: "Wireless Headphones",
    variantId: "808950810",
    quantity: 1,
    price: 199.98,
    metadata: [
        "sku": "WH-BLK-PRO",
        "color": "Black",
        "brand": "BrazeAudio"
    ]
), let checkoutStartedEvent = try? Braze.Ecommerce.CheckoutStartedEvent(
    checkoutId: "checkout_abc123",
    cartId: "cart_12345",
    totalValue: 199.98,
    currency: "USD",
    products: [productLine],
    source: "https://braze-audio.com",
    metadata: [
        "checkout_url": "https://checkout.braze-audio.com/abc123"
    ]
) {
    AppDelegate.braze?.logEcommerceEvent(checkoutStartedEvent)
}
if let productLine = try? Braze.Ecommerce.ProductLineItem(
    productId: "632910392",
    productName: "Wireless Headphones",
    variantId: "808950810",
    quantity: 1,
    price: 199.98,
    metadata: [
        "sku": "WH-BLK-PRO",
        "color": "Black",
        "brand": "BrazeAudio"
    ]
), let orderPlacedEvent = try? Braze.Ecommerce.OrderPlacedEvent(
    orderId: "order_67890",
    cartId: "cart_12345",
    totalValue: 189.98,
    currency: "USD",
    totalDiscounts: 10.00,
    discounts: [.structured(code: "SAVE10", amount: 10.00, type: "fixed")],
    products: [productLine],
    source: "https://braze-audio.com",
    metadata: [
        "order_status_url": "https://braze-audio.com/orders/67890/status",
        "order_number": "ORD-2024-001234",
        "tags": ["electronics", "audio"],
        "referring_site": "https://www.e-referrals.com",
        "payment_gateway_names": ["tap2pay", "dotcash"]
    ]
) {
    AppDelegate.braze?.logEcommerceEvent(orderPlacedEvent)
}

Braze stellt für dieses Event keine typisierte SDK-Klasse bereit. Verwenden Sie logCustomEvent mit einem Payload, der dem ecommerce.order_cancelled-Event-Schema entspricht.

let discounts: [[String: Any]] = [
    [
        "code": "SAVE10",
        "amount": 10.00
    ]
]

let products: [[String: Any]] = [
    [
        "product_id": "632910392",
        "product_name": "Wireless Headphones",
        "variant_id": "808950810",
        "quantity": 1,
        "price": 199.98,
        "metadata": [
            "sku": "WH-BLK-PRO",
            "color": "Black",
            "brand": "BrazeAudio"
        ]
    ]
]

let properties: [String: Any] = [
    "order_id": "order_67890",
    "cancel_reason": "customer changed mind",
    "total_value": 189.98,
    "subtotal_value": 169.98,
    "tax": 14.40,
    "shipping": 5.60,
    "currency": "USD",
    "total_discounts": 10.00,
    "discounts": discounts,
    "products": products,
    "source": "https://braze-audio.com",
    "metadata": [
        "order_status_url": "https://braze-audio.com/orders/67890/status",
        "order_number": "ORD-2024-001234",
        "tags": ["cancelled", "customer_request"]
    ]
]

AppDelegate.braze?.logCustomEvent(name: "ecommerce.order_cancelled", properties: properties)

Braze stellt für dieses Event keine typisierte SDK-Klasse bereit. Verwenden Sie logCustomEvent mit einem Payload, der dem ecommerce.order_refunded-Event-Schema entspricht.

let discounts: [[String: Any]] = [
    [
        "code": "SAVE5",
        "amount": 5.00
    ]
]

let products: [[String: Any]] = [
    [
        "product_id": "632910392",
        "product_name": "Wireless Headphones",
        "variant_id": "808950810",
        "quantity": 1,
        "price": 99.99,
        "metadata": [
            "sku": "WH-BLK-PRO",
            "color": "Black",
            "brand": "BrazeAudio"
        ]
    ]
]

let properties: [String: Any] = [
    "order_id": "order_67890",
    "total_value": 99.99,
    "currency": "USD",
    "total_discounts": 5.00,
    "discounts": discounts,
    "products": products,
    "source": "https://braze-audio.com",
    "metadata": [
        "order_status_url": "https://braze-audio.com/orders/67890/status",
        "order_note": "Customer requested refund due to defective item",
        "order_number": "ORD-2024-001234",
        "tags": ["refund", "defective"]
    ]
]

AppDelegate.braze?.logCustomEvent(name: "ecommerce.order_refunded", properties: properties)

Web

Rufen Sie ab Web SDK 6.8.0+ logEcommerceEvent mit einem Event-name und properties auf. Rufen Sie bei älteren SDK-Versionen logCustomEvent mit dem Event-Namen und einem Eigenschaften-Objekt auf. ecommerce.order_cancelled und ecommerce.order_refunded verwenden logCustomEvent.

Code-Beispiele

Rufen Sie bei neueren SDK-Versionen logEcommerceEvent() auf:

braze.logEcommerceEvent({
    "name": "ecommerce.product_viewed",
    "properties": {
        "product_id": "4111176",
        "product_name": "Torchie runners",
        "variant_id": "4111176700",
        "image_url": "https://braze-apparel.com/images/products/large/torchie-runners.jpg",
        "product_url": "https://braze-apparel.com/footwear-categories/sneakers/braze-orange-torchie-runners/",
        "price": 85,
        "currency": "GBP",
        "source": "https://braze-apparel.com/",
        "type": ["price_drop", "back_in_stock"],
        "catalog_name": "footwear",
        "metadata": {
            "color": "ORANGE",
            "size": "6",
            "brand": "Braze"
        }
    }
});

Rufen Sie bei älteren SDK-Versionen logCustomEvent() auf:

braze.logCustomEvent("ecommerce.product_viewed", {
    "product_id": "4111176",
    "product_name": "Torchie runners",
    "variant_id": "4111176700",
    "image_url": "https://braze-apparel.com/images/products/large/torchie-runners.jpg",
    "product_url": "https://braze-apparel.com/footwear-categories/sneakers/braze-orange-torchie-runners/",
    "price": 85,
    "currency": "GBP",
    "source": "https://braze-apparel.com/",
    "metadata": {
        "color": "ORANGE",
        "size": "6",
        "brand": "Braze"
    }
});

Rufen Sie bei neueren SDK-Versionen logEcommerceEvent() auf:

braze.logEcommerceEvent({
    "name": "ecommerce.cart_updated",
    "properties": {
        "cart_id": "cart_12345",
        "currency": "USD",
        "total_value": 199.98,
        "products": [
            {
                "product_id": "8266836345064",
                "product_name": "Classic T-Shirt",
                "variant_id": "44610569208040",
                "image_url": "https://braze-apparel.com/images/tshirt-blue-medium.jpg",
                "product_url": "https://braze-apparel.com/products/classic-tshirt?variant=44610569208040",
                "quantity": 2,
                "price": 99.99,
                "metadata": {
                    "sku": "TSH-BLU-M",
                    "color": "BLUE",
                    "size": "Medium",
                    "brand": "Braze"
                }
            }
        ],
        "source": "https://braze-apparel.com",
        "metadata": {}
    }
});

Rufen Sie bei älteren SDK-Versionen logCustomEvent() auf:

braze.logCustomEvent("ecommerce.cart_updated", {
    "cart_id": "cart_12345",
    "currency": "USD",
    "total_value": 199.98,
    "subtotal_value": 179.98,
    "tax": 15.00,
    "shipping": 5.00,
    "products": [
        {
            "product_id": "8266836345064",
            "product_name": "Classic T-Shirt",
            "variant_id": "44610569208040",
            "image_url": "https://braze-apparel.com/images/tshirt-blue-medium.jpg",
            "product_url": "https://braze-apparel.com/products/classic-tshirt?variant=44610569208040",
            "quantity": 2,
            "price": 99.99,
            "metadata": {
                "sku": "TSH-BLU-M",
                "color": "BLUE",
                "size": "Medium",
                "brand": "Braze"
            }
        }
    ],
    "source": "https://braze-apparel.com",
    "metadata": {}
});

Rufen Sie bei neueren SDK-Versionen logEcommerceEvent() auf:

braze.logEcommerceEvent({
    "name": "ecommerce.checkout_started",
    "properties": {
        "checkout_id": "checkout_abc123",
        "cart_id": "cart_12345",
        "total_value": 199.98,
        "currency": "USD",
        "products": [
            {
                "product_id": "632910392",
                "product_name": "Wireless Headphones",
                "variant_id": "808950810",
                "quantity": 1,
                "price": 199.98,
                "metadata": {
                    "sku": "WH-BLK-PRO",
                    "color": "Black",
                    "brand": "BrazeAudio"
                }
            }
        ],
        "source": "https://braze-audio.com",
        "metadata": {
            "checkout_url": "https://checkout.braze-audio.com/abc123"
        }
    }
});

Rufen Sie bei älteren SDK-Versionen logCustomEvent() auf:

braze.logCustomEvent("ecommerce.checkout_started", {
    "checkout_id": "checkout_abc123",
    "cart_id": "cart_12345",
    "total_value": 199.98,
    "subtotal_value": 179.98,
    "tax": 15.00,
    "shipping": 5.00,
    "currency": "USD",
    "products": [
        {
            "product_id": "632910392",
            "product_name": "Wireless Headphones",
            "variant_id": "808950810",
            "quantity": 1,
            "price": 199.98,
            "metadata": {
                "sku": "WH-BLK-PRO",
                "color": "Black",
                "brand": "BrazeAudio"
            }
        }
    ],
    "source": "https://braze-audio.com",
    "metadata": {
        "checkout_url": "https://checkout.braze-audio.com/abc123"
    }
});

Rufen Sie bei neueren SDK-Versionen logEcommerceEvent() auf:

braze.logEcommerceEvent({
    "name": "ecommerce.order_placed",
    "properties": {
        "order_id": "order_67890",
        "cart_id": "cart_12345",
        "total_value": 189.98,
        "currency": "USD",
        "total_discounts": 10.00,
        "discounts": [
            {
                "code": "SAVE10",
                "amount": 10.00
            }
        ],
        "products": [
            {
                "product_id": "632910392",
                "product_name": "Wireless Headphones",
                "variant_id": "808950810",
                "quantity": 1,
                "price": 199.98,
                "metadata": {
                    "sku": "WH-BLK-PRO",
                    "color": "Black",
                    "brand": "BrazeAudio"
                }
            }
        ],
        "source": "https://braze-audio.com",
        "metadata": {
            "order_status_url": "https://braze-audio.com/orders/67890/status",
            "order_number": "ORD-2024-001234",
            "tags": ["electronics", "audio"],
            "referring_site": "https://www.e-referrals.com",
            "payment_gateway_names": ["tap2pay", "dotcash"]
        }
    }
});

Rufen Sie bei älteren SDK-Versionen logCustomEvent() auf:

braze.logCustomEvent("ecommerce.order_placed", {
    "order_id": "order_67890",
    "cart_id": "cart_12345",
    "total_value": 189.98,
    "subtotal_value": 169.98,
    "tax": 14.40,
    "shipping": 5.60,
    "currency": "USD",
    "total_discounts": 10.00,
    "discounts": [
        {
            "code": "SAVE10",
            "amount": 10.00
        }
    ],
    "products": [
        {
            "product_id": "632910392",
            "product_name": "Wireless Headphones",
            "variant_id": "808950810",
            "quantity": 1,
            "price": 199.98,
            "metadata": {
                "sku": "WH-BLK-PRO",
                "color": "Black",
                "brand": "BrazeAudio"
            }
        }
    ],
    "source": "https://braze-audio.com",
    "metadata": {
        "order_status_url": "https://braze-audio.com/orders/67890/status",
        "order_number": "ORD-2024-001234",
        "tags": ["electronics", "audio"],
        "referring_site": "https://www.e-referrals.com",
        "payment_gateway_names": ["tap2pay", "dotcash"]
    }
});
braze.logCustomEvent("ecommerce.order_cancelled", {
    "order_id": "order_67890",
    "cancel_reason": "customer changed mind",
    "total_value": 189.98,
    "subtotal_value": 169.98,
    "tax": 14.40,
    "shipping": 5.60,
    "currency": "USD",
    "total_discounts": 10.00,
    "discounts": [
        {
            "code": "SAVE10",
            "amount": 10.00
        }
    ],
    "products": [
        {
            "product_id": "632910392",
            "product_name": "Wireless Headphones",
            "variant_id": "808950810",
            "quantity": 1,
            "price": 199.98,
            "metadata": {
                "sku": "WH-BLK-PRO",
                "color": "Black",
                "brand": "BrazeAudio"
            }
        }
    ],
    "source": "https://braze-audio.com",
    "metadata": {
        "order_status_url": "https://braze-audio.com/orders/67890/status",
        "order_number": "ORD-2024-001234",
        "tags": ["cancelled", "customer_request"]
    }
});
braze.logCustomEvent("ecommerce.order_refunded", {
    "order_id": "order_67890",
    "total_value": 99.99,
    "currency": "USD",
    "total_discounts": 5.00,
    "discounts": [
        {
            "code": "SAVE5",
            "amount": 5.00
        }
    ],
    "products": [
        {
            "product_id": "632910392",
            "product_name": "Wireless Headphones",
            "variant_id": "808950810",
            "quantity": 1,
            "price": 99.99,
            "metadata": {
                "sku": "WH-BLK-PRO",
                "color": "Black",
                "brand": "BrazeAudio"
            }
        }
    ],
    "source": "https://braze-audio.com",
    "metadata": {
        "order_status_url": "https://braze-audio.com/orders/67890/status",
        "order_note": "Customer requested refund due to defective item",
        "order_number": "ORD-2024-001234",
        "tags": ["refund", "defective"]
    }
});

Google Tag Manager

Wenn Sie den Google Tag Manager (GTM) verwenden, nutzen Sie im Braze-Actions-Tag den Tag-Typ Log eCommerce Event (New), anstatt logEcommerceEvent() im Code Ihrer Website aufzurufen. Das Tag liest Ihren E-Commerce-Datenlayer im GA4-Format und unterstützt die Events ecommerce.product_viewed, ecommerce.cart_updated, ecommerce.checkout_started und ecommerce.order_placed. Außerdem unterstützt es Event- und Produkt-Metadaten. Um ecommerce.order_cancelled oder ecommerce.order_refunded zu protokollieren, verwenden Sie ein Custom HTML-Tag, das braze.logCustomEvent() aufruft.

Informationen zu Einrichtungsschritten, Feld-Abbildung und Fehlerbehebung finden Sie unter E-Commerce-Events mit GTM protokollieren.

Manuelles Protokollieren mit logCustomEvent

Um ein empfohlenes Event manuell zu protokollieren, rufen Sie logCustomEvent mit dem exakten Event-Namen (zum Beispiel ecommerce.product_viewed) und einem manuell erstellten BrazeProperties- oder JSONObject-Payload auf. Das SDK validiert keine Schemata empfohlener Events bei manuellen Aufrufen. Braze validiert diese Payloads während der Ingestion:

  • Gültige Payloads werden als empfohlene Events mit vollständiger Nachverarbeitung verarbeitet.
  • Ungültige Payloads (fehlende Pflichtfelder, falsche Typen, zusätzliche Eigenschaften auf oberster Ebene) werden nach der Ingestion verworfen. Fehler erscheinen im SDK-Verarbeitungsprotokoll des Workspace und in der Fehlerübersichts-E-Mail.

Verwenden Sie nach Möglichkeit logEcommerceEvent, damit Sie ungültige Daten erkennen, bevor sie die App verlassen. Informationen zur allgemeinen Verwendung von logCustomEvent finden Sie unter Angepasste Events protokollieren.

New Stuff!