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
logEcommerceEventprotokollieren. Informationen zu Event-Eigenschaftsschemata, Plattform-Features und Validierung bei der Datenaufnahme finden Sie unter Empfohlene Events und Event-Validierung und Fehlerbehebung.

Verwenden Sie für Wrapper-SDKs, die hier nicht aufgeführt sind, stattdessen die entsprechende native Android- oder Swift-Methode.
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. |

ecommerce.order_cancelled und ecommerce.order_refunded sind nicht als typisierte Android-SDK-Klassen verfügbar. Protokollieren Sie diese Events mit logCustomEvent oder über die REST API.
Gemeinsame Bausteine
EcommerceProduct: Einzelposten für Warenkorb-, Checkout- und Bestell-Events.- Erforderlich:
productId,productName,variantId,price,quantity(nicht-negativerLong) - Optional:
imageUrl,productUrl,metadata
- Erforderlich:
BrazeProperties:metadataauf 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.