Integriere eine Standard-E-Commerce-Plattform

read
Last updated at:

Übersicht

Wenn du deine eigene Warenkorblösung entwickelt hast oder die E-Commerce-Daten, die du in Klaviyo verfolgen möchtest, noch nicht von einer unserer vorgefertigten Integrationen unterstützt werden, kannst du Klaviyo über unsere JavaScript-API, unsere serverseitige API und unsere Custom Catalog Integration integrieren.

Die wichtigsten Komponenten für die Integration eines individuellen E-Commerce-Wagens sind:

  • Kundendaten
  • Abo
  • Website-Aktivität
  • Aktivität bestellen

Dieser Leitfaden konzentriert sich darauf, wie man wichtige Metrik oder wichtige Kundenaktivität auf Klaviyo synchronisiert. Obwohl unsere JavaScript- und Server-seitige Track-and-Identify-API austauschbar sind, empfehlen wir die folgende Konfiguration für E-Commerce-Unternehmen. Verwende dies als Checkliste, wenn du deine Integration einrichtest:

  • Nutze unsere JavaScript Track API für Folgendes:
    • Aktiv vor Ort - Wenn jemand deine Website besucht
    • Angesehenes Produkt - Wenn jemand ein Produkt ansieht
    • Zum Warenkorb hinzugefügt - Wenn jemand einen Artikel in seinen Warenkorb legt
    • Gestarteter Bezahlvorgang - Wenn jemand auf der Bezahlvorgang-Seite landet
  • Nutze unsere serverseitige Track-API für die folgenden Aufgaben:
    • Platzierte Bestellung - Wenn eine Bestellung erfolgreich in deinem System verarbeitet wird
    • Bestelltes Produkt - Ein Ereignis für jeden Artikel in einer bearbeiteten Bestellung
    • Erfüllter Auftrag - Wenn ein Auftrag an den Kunden gesendet wird
    • Stornierte Bestellung - Wenn ein Kunde seine Bestellung storniert
    • Erstattete Bestellung - Wenn die Bestellung eines Kunden erstattet wird
  • Nutze unsere Custom Catalog Feed Integration für Folgendes:
    • Katalog-Feed - Ein XML-Feed oder JSON-Feed deines Produktkatalogs

Der Grad der detaillierten Daten, die du im Rahmen dieser Website-, Kauf- und Bezahlvorgang-Ereignisse an Klaviyo sendest, bestimmt, wie du auf der Grundlage dieser Ereignisse in Klaviyo filtern und segmentieren kannst. Um zu verstehen, wie Daten strukturiert sein müssen, damit wichtige Ereignisdetails für die Segmentierung zur Verfügung stehen, schau dir unseren Leitfaden zu den Segmentbedingungen an.

Beachte, dass die Snippets in diesem Leitfaden Beispieldaten verwenden. Du musst die Werte der JSON-Eigenschaften in diesen Snippets so aktualisieren, dass sie dynamisch die für die jeweilige Eigenschaft benötigten Informationen abrufen.

Wenn du Fragen zu benutzerdefinierten Integrationen hast, sieh dir unsere FAQ zu benutzerdefinierten Integrationen an oder wende dich an unser Support-Team.

Vor-Ort-Verhalten (JavaScript Track API)

Um unsere JavaScript-API und die Möglichkeit, Formulare direkt von Klaviyo auf deiner Website zu veröffentlichen, zu aktivieren, füge das folgende Snippet ein, damit es auf jeder Seite deiner Website erscheint (oft ist das Ende der Fußzeile ein guter Platz dafür). Ersetze PUBLIC_API_KEY durch den 6-stelligen öffentlichen API-Schlüssel deines Klaviyo-Kontos:

<script type="application/javascript" async
src="https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=PUBLIC_API_KEY"></script>

Aktiv vor Ort

Wenn du das Snippet oben hinzugefügt hast, wird die Aktivität "Active on Site" für jede Person ausgelöst, die ein Cookie hat:

  • Über eine Javascript Identify API-Anfrage
  • Indem du dich über ein Klaviyo-Formular anmeldest
  • Wenn du auf eine Klaviyo E-Mail klickst und auf deiner Website landest

Gesehenes Produkt

Wenn du einen Browse-Abandonment-Flow einrichten oder ein Segment auf Basis von Produkt-Browsing-Daten erstellen möchtest, musst du das JavaScript-Event-Tracking für eine Viewed Product Metrik hinzufügen. Füge das folgende Snippet in die Vorlage deiner Produktseite ein:

<script text="text/javascript">
   var _learnq = _learnq || [];
   var item = {
     "ProductName": "Winnie the Pooh",
     "ProductID": "1111",
     "Categories": ["Fiction", "Children"],
     "ImageURL": "http://www.example.com/path/to/product/image.png",
     "URL": "http://www.example.com/path/to/product",
     "Brand": "Kids Books",
     "Price": 9.99,
     "CompareAtPrice": 14.99
   };
 
   _learnq.Push(["track", "Viewed Product", item]);
 
   _learnq.Push(["trackViewedItem", {
     Titel: item.ProductName,
     ItemId: item.ProductID,
     Categories: item.Categories,
     ImageUrl: item.ImageURL,
     Url: item.URL,
     Metadaten: {
       Brand: item.Brand,
       Price: item.Price,
       CompareAtPrice: item.CompareAtPrice
     }
   ]);
 </script>

Zum Warenkorb hinzugefügt

Wenn du Warenkorbabbruch-E-Mails verschicken möchtest , bevor jemand auf der Bezahlvorgang-Seite landet, musst du Informationen über den Warenkorb verfolgen, wenn jemand eine bestimmte Aktion durchführt. Dazu empfehlen wir, ein Added to Cart-Ereignis zu senden, wenn jemand einen Artikel in seinen Warenkorb legt. Um dieses Ereignis zu verfolgen, muss eine Person immer noch über "," oder Cookie-ed identifiziert worden sein. Im Payload solltest du alle Informationen zum Warenkorb (wie z.B. Started Bezahlvorgang unten) und Informationen über den Artikel, der gerade hinzugefügt wurde (wie z.B. Viewed Product oben), enthalten. Hier ist ein Beispiel für eine Track-Anfrage:

<script text="text/javascript">
   _learnq.Push(['track', In den Warenkorb gelegt, {
    "$value": 29.98,
    "AddedItemProductName": "Eine Geschichte aus zwei Städten",
    "AddedItemProductID": "1112",
    "AddedItem_SKU": "TALEOFTWO",
    "AddedItem_Categories": ["Belletristik", "Klassiker"],
    "AddedItem_ImageURL": "http://www.example.com/path/to/product/image2.png",
     "AddedItem_URL": "http://www.example.com/path/to/product2",
     "AddedItem_Price": 19.99,
    "AddedItem_Quantity": 1,
    "ItemNames": ["Winnie the Pooh", "A Tale of Two Cities"],
    "CheckoutURL": "http://www.example.com/path/to/checkout",
     "Artikel": [{
         "ProductID": "1111",
         "SKU": "WINNIEPOOH",
         "ProductName": "Winnie the Pooh",
         "Quantity": 1,
         "ItemPrice": 9.99,
         "RowTotal": 9.99,
         "ProductURL": "http://www.example.com/path/to/product",
         "ImageURL": "http://www.example.com/path/to/product/image.png",
         "ProductCategories": ["Fiction", "Children"]
       },
       {
         "ProductID": "1112",
         "SKU": "TALEOFTWO",
         "ProductName": "A Tale of Two Cities",
         "Quantity": 1,
         "ItemPrice": 19.99,
         "RowTotal": 19.99,
         "ProductURL": "http://www.example.com/path/to/product2",
         "ImageURL": "http://www.example.com/path/to/product/image2.png",
         "ProductCategories": ["Fiction", "Classics"]
       }
     ]
   }]);
 </script>

Begonnener Bezahlvorgang

Bezahlvorgang Daten sind wichtig, wenn du eine aufgegebene Bezahlvorgang E-Mail versenden möchtest. Wenn jemand mit dem Bezahlvorgang beginnt, schickst du Klaviyo ein Ereignis, das anzeigt, dass er mit dem Bezahlvorgang begonnen hat. Der beste Ort, um dieses Ereignis auszulösen, ist, wenn jemand die Bezahlvorgang-Seite besucht, nachdem er "identifiziert wurde" oder wenn er seine E-Mail-Adresse auf der Bezahlvorgang-Seite eingibt, wenn er noch nicht identifiziert wurde.

Achte darauf, dass du alle Details zu den Artikeln angibst, damit deine E-Mail mit dem abgebrochenen Bezahlvorgang Bilder, Links und andere Informationen zu den Produkten im Einkaufswagen enthalten kann. Hier ist ein Beispiel für eine Track-Anfrage:

<script text="text/javascript">
   _learnq.Push(['track', 'Gestarteter Bezahlvorgang', {
    "$event_id": "1000123_1387299423",
    "$value": 29.98,
    "ItemNames": ["Winnie the Pooh", "A Tale of Two Cities"],
    "CheckoutURL": "http://www.example.com/path/to/checkout",
     "Artikel": [{
         "ProductID": "1111",
         "SKU": "WINNIEPOOH",
         "ProductName": "Winnie the Pooh",
         "Quantity": 1,
         "ItemPrice": 9.99,
         "RowTotal": 9.99,
         "ProductURL": "http://www.example.com/path/to/product",
         "ImageURL": "http://www.example.com/path/to/product/image.png",
         "ProductCategories": ["Fiction", "Children"]
       },
       {
         "ProductID": "1112",
         "SKU": "TALEOFTWO",
         "ProductName": "A Tale of Two Cities",
         "Quantity": 1,
         "ItemPrice": 19.99,
         "RowTotal": 19.99,
         "ProductURL": "http://www.example.com/path/to/product2",
         "ImageURL": "http://www.example.com/path/to/product/image2.png",
         "ProductCategories": ["Fiction", "Classics"]
       }
     ]
   }]);
 </script>

Die $event_id sollte ein eindeutiger Bezeichner für den Einkaufswagen sein, kombiniert mit der UNIX-formatierten Zeit, zu der das Ereignis ausgelöst wurde. So kann jemand den gestarteten Bezahlvorgang mehr als einmal auslösen, wenn er nach dem Hinzufügen weiterer Gegenstände zurückkehrt.

Server-seitige Metrik

Wir empfehlen, bestimmte Metrik auf der Serverseite zu verfolgen, da der Frontend-Code möglicherweise eingeschränkt ist und Sicherheitsbedenken bestehen. Wenn jemand eine langsame Verbindung/einen langsamen Computer oder ein JavaScript-blockierendes Plug-in in seinem Browser hat, werden die JavaScript-Anfragen möglicherweise nicht ausgelöst. Bei wichtigeren Metrik-Daten (z. B. für Bestellungen und andere Transaktionsereignisse und -eigenschaften) oder solchen, die sensible Daten enthalten, kannst du unsere serverseitige Track and Identify API verwenden.

Bestellung aufgegeben

Nachdem eine Bestellung aufgegeben wurde, solltest du eine Track-Anfrage an unsere serverseitige API stellen. Wir haben Bibliotheken für Python, Ruby und PHP, aber im Allgemeinen erfordert die API nur eine HTTP-GET-Anfrage mit einer base64-kodierten JSON-Nutzlast.

Es ist eine gute Praxis, auch deine historischen Auftragsdaten zu übermitteln. So kannst du diese Daten besser segmentieren und die historische Genauigkeit bei der Umsatzverfolgung verbessern. Historische Daten können an uns gesendet werden, indem du deine historischen Bestellungen durchgehst und für jede Bestellung eine API-Anfrage zur Nachverfolgung der platzierten Bestellung und des bestellten Produkts erstellst. Die spezielle Eigenschaft "Zeit" für diese Ereignisse sollte der UNIX-Zeitstempel sein, der angibt, wann diese Bestellung aufgetreten ist.  Weitere Details zu diesen Metriks findest du weiter unten.

Es gibt zwei Möglichkeiten, Bestelldaten an Klaviyo zu senden: in Echtzeit oder als Batch.

  • Echtzeit - Du stellst Anfragen, sobald ein Auftrag erteilt wird
  • Batch - Du schreibst ein Skript, das mindestens einmal pro Stunde ausgeführt wird, um alle Ereignisse zu senden, die in der letzten Stunde aufgetreten sind

Wenn du den Warenkorbabbruch/Bezahlvorgang per E-Mail abonniert hast, musst du die Bestelldaten mindestens so oft senden, dass sie in deine E-Mail-Verzögerung fallen, damit die E-Mail nicht an Personen geht, die ihre Bestellung abgeschlossen haben. Wenn du z.B. eine Zeitverzögerung von einer Stunde zwischen dem Auslösen des Warenkorbabbruchs und dem Empfang der ersten E-Mail hast, musst du sicherstellen, dass du mindestens einmal pro Stunde Daten übermittelst.

Wir empfehlen, für jede Bestellung zwei Arten von Veranstaltungen zu versenden:

  • Ein Ereignis namens Platzierte Bestellung für die gesamte Bestellung
    • Dazu gehört eine $value-Eigenschaft, die den Gesamtwert einer Bestellung einschließlich Versand, Steuern, Rabatten usw. angibt.
  • Ein Ereignis für jede Position mit dem Namen Bestelltes Produkt
    • Dazu gehört eine $value-Eigenschaft, die die Gesamtkosten eines Artikels in der Bestellung vor allen Anpassungen darstellt, sowie weitere detaillierte Informationen auf SKU-Ebene über den Artikel

Die wichtigsten Dinge, die beim Verfolgen von serverseitigen Ereignissen zu beachten sind:

  • Achte darauf, dass du API durch deinen öffentlichen API-Schlüssel ersetzt.
  • Die $event_id sollte ein eindeutiger Bezeichner für die Bestellung sein (z.B.. Bestell-ID).
  • Wenn dieselbe Kombination aus Ereignis und $event_id mehr als einmal gesendet wird, werden alle verfolgten Ereignisse nach dem ersten mit derselben Kombination übersprungen.
  • $value ist eine spezielle Eigenschaft, die es Klaviyo ermöglicht, den Umsatz zu verfolgen; dies sollte der gesamte numerische, monetäre Wert des Ereignisses sein, mit dem es verbunden ist.
  • Das Array "Items" sollte ein Wörterbuch für jeden Einzelposten enthalten.
  • time ist eine besondere Eigenschaft, die ein UNIX-Zeitstempel des Bestelldatums und der Uhrzeit sein sollte.

Hier ist ein Beispiel für eine Tracking-Anfrage für eine platzierte Bestellung:

{
  "Token": "API",
  "event": "Placed Order",
  "Kunde": {
     "$email": "john.smith@example.com",
     "$first_name": "John",
     "$last_name": "Smith",
     "$phone_number": "5551234567",
     "$address1": "123 Abc st",
     "$address2": "Suite 1",
     "$city": "Boston",
     "$zip": "02110",
     "$region": "MA",
     "$country": "USA"
   },
  "Eigenschaften": {
    "$event_id": "1234",
    "$value": 29.98,
    "Kategorien": ["Belletristik", "Klassiker", "Kinder"],
    "ItemNames": ["Winnie the Pooh", "A Tale of Two Cities"],
    "Marken": ["Kinderbücher", "Harcourt Classics],
    "Rabattcode": "Kostenloser Versand",
    "Rabatt Wert": 5,
    "Artikel": [{
         "ProductID": "1111",
         "SKU": "WINNIEPOOH",
         "ProductName": "Winnie the Pooh",
         "Quantity": 1,
         "ItemPrice": 9.99,
         "RowTotal": 9.99,
         "ProductURL": "http://www.example.com/path/to/product",
         "ImageURL": "http://www.example.com/path/to/product/image.png",
         "Categories": ["Fiction", "Children"],
         "Brand": "Kids Books"
       },
       {
         "ProductID": "1112",
         "SKU": "TALEOFTWO",
         "ProductName": "A Tale of Two Cities",
         "Quantity": 1,
         "ItemPrice": 19.99,
         "RowTotal": 19.99,
         "ProductURL": "http://www.example.com/path/to/product2",
         "ImageURL": "http://www.example.com/path/to/product/image2.png",
         "Categories": ["Fiction", "Classics"],
         "Brand": "Harcourt Classics"
       }
     ]
   },
  "Zeit": 1387302423
 }

Bestelltes Produkt

Für jede Position solltest du auch einen Track-Antrag für ein Ereignis " Bestelltes Produkt" stellen:

{
  "Token": "API",
  "event": "Bestelltes Produkt",
  "Kunde": {
     "$email": "john.smith@example.com",
     "$first_name": "John",
     "$last_name": "Smith"
   },
  "Eigenschaften": {
     "$event_id": "1234_WINNIEPOOH",
     "$value": 9.99,
     "ProductID": "1111",
     "SKU": "WINNIEPOOH",
     "ProductName": "Winnie the Pooh",
     "Quantity": 1,
     "ProductURL": "http://www.example.com/path/to/product",
     "ImageURL": "http://www.example.com/path/to/product/image.png",
     "ProductCategories": [
       "Fiction",
       "Children"
     ],
     "ProductBrand": "Kids Books"
   },
  "Zeit": 1387302423
 }

Erfüllter Auftrag, stornierter Auftrag und rückerstatteter Auftrag

Je nachdem, wie deine Produkte an den Kunden gesendet werden, oder ob sie storniert oder erstattet werden können, möchtest du vielleicht zusätzliche Ereignisse senden, die diese Aktionen widerspiegeln. Jedes dieser auftragsbezogenen Ereignisse hat fast dieselbe Nutzlast wie ein Ereignis für eine platzierte Bestellung.

Bei einem erfüllten Auftrag müssen nur der Name des Ereignisses und die Uhrzeit, zu der die Erfüllung stattgefunden hat, aktualisiert werden:

{
  "Token": "API",
  "event": "Erfüllter Auftrag",
  "Kunde": {
     "$email": "john.smith@example.com",
     "$first_name": "John",
     "$last_name": "Smith",
     "$phone_number": "5551234567",
     "$address1": "123 Abc st",
     "$address2": "Suite 1",
     "$city": "Boston",
     "$zip": "02110",
     "$region": "MA",
     "$country": "USA"
   },
  "properties": {
    "$event_id": "1234",
    "$value": 29.98,
    "Kategorien": [
      "Belletristik",
      "Klassiker",
      "Kinder"
     ],
    "ItemNames": [
      "Winnie the Pooh",
      "Eine Geschichte aus zwei Städten"
     ],
    "Marken": [ "Kinderbücher",
      "Harcourt Classics"
     ],
    "Rabatt-Code": "Kostenloser Versand",
    "Rabatt Wert": 5,
    "Artikel": [
       {
         "ProductID": "1111",
         "SKU": "WINNIEPOOH",
         "ProductName": "Winnie the Pooh",
         "Quantity": 1,
         "ItemPrice": 9.99,
         "RowTotal": 9.99,
         "ProductURL": "http://www.example.com/path/to/product",
         "ImageURL": "http://www.example.com/path/to/product/image.png",
         "Categories": [
           "Fiction",
           "Children"
         ],
         "Brand": "Kids Books"
       },
       {
         "ProductID": "1112",
         "SKU": "TALEOFTWO",
         "ProductName": "A Tale of Two Cities",
         "Quantity": 1,
         "ItemPrice": 19.99,
         "RowTotal": 19.99,
         "ProductURL": "http://www.example.com/path/to/product2",
         "ImageURL": "http://www.example.com/path/to/product/image2.png",
         "Categories": [
           "Fiction",
           "Classics"
         ],
         "Brand": "Harcourt Classics"
       }
     ]
   },
  "Zeit": 1387312956
 }

Aktualisiere bei stornierten und erstatteten Bestellungen den Ereignisnamen und den Zeitstempel und füge eine zusätzliche Eigenschaft für den Grund der Stornierung oder Erstattung hinzu:

Stornierte Bestellung


   "Token": "API",
  "Ereignis": "Stornierte Bestellung",
  "Kunde": {
     "$email": "john.smith@example.com",
     "$first_name": "John",
     "$last_name": "Smith",
     "$phone_number": "5551234567",
     "$address1": "123 Abc st",
     "$address2": "Suite 1",
     "$city": "Boston",
     "$zip": "02110",
     "$region": "MA",
     "$country": "USA"
   },
  "Eigenschaften": {
    "$event_id": "1234",
    "$value": 29.98,
    "Grund": "Nicht mehr benötigt",
    "Kategorien": [
      "Belletristik",
      "Klassiker",
      "Kinder"
     ],
    "ItemNames": [
      "Winnie the Pooh",
      "Ein Märchen von  Zwei Städte"
     ],
    "Marken": [
      "Kinderbücher",
      "Harcourt-Klassiker"
     ],
    "Rabatt-Code": "Kostenloser Versand",
    "Rabatt Wert": 5,
    "Artikel": [
       {
         "ProductID": "1111",
         "SKU": "WINNIEPOOH",
         "ProductName": "Winnie the Pooh",
         "Quantity": 1,
         "ItemPrice": 9.99,
         "RowTotal": 9.99,
         "ProductURL": "http://www.example.com/path/to/product",
         "ImageURL": "http://www.example.com/path/to/product/image.png",
         "Categories": [
           "Fiction",
           "Children"
         ],
         "Brand": "Kids Books"
       },
       {
         "ProductID": "1112",
         "SKU": "TALEOFTWO",
         "ProductName": "A Tale of Two Cities",
         "Quantity": 1,
         "ItemPrice": 19.99,
         "RowTotal": 19.99,
         "ProductURL": "http://www.example.com/path/to/product2",
         "ImageURL": "http://www.example.com/path/to/product/image2.png",
         "Categories": [
           "Fiction",
           "Classics"
         ],
         "Brand": "Harcourt Classics"
       }
     ]
   },
  "Zeit": 1387312956
 }

Erstattete Bestellung

{
  "Token": "API",
  "event": "Erstattete Bestellung",
  "Kunde": {
     "$email": "john.smith@example.com",
     "$first_name": "John",
     "$last_name": "Smith",
     "$phone_number": "5551234567",
     "$address1": "123 Abc st",
     "$address2": "Suite 1",
     "$city": "Boston",
     "$zip": "02110",
     "$region": "MA",
     "$country": "USA"
   },
  "Eigenschaften": {
    "$event_id": "1234",
    "$value": 29.98,
    "Grund": "Nicht mehr benötigt",
    "Kategorien": [
      "Belletristik",
      "Klassiker",
      "Kinder"
     ],
    "ItemNames": [
      "Winnie the Pooh",
       Eine Geschichte aus zwei Städten"
     ],
    "Marken": [
      "Kinderbücher",
      "Harcourt-Klassiker"
     ],
    "Rabatt-Code": "Kostenloser Versand",
    "Rabatt Wert": 5,
    "Artikel": [
       {
         "ProductID": "1111",
         "SKU": "WINNIEPOOH",
         "ProductName": "Winnie the Pooh",
         "Quantity": 1,
         "ItemPrice": 9.99,
         "RowTotal": 9.99,
         "ProductURL": "http://www.example.com/path/to/product",
         "ImageURL": "http://www.example.com/path/to/product/image.png",
         "Categories": [
           "Fiction",
           "Children"
         ],
         "Brand": "Kids Books"
       },
       {
         "ProductID": "1112",
         "SKU": "TALEOFTWO",
         "ProductName": "A Tale of Two Cities",
         "Quantity": 1,
         "ItemPrice": 19.99,
         "RowTotal": 19.99,
         "ProductURL": "http://www.example.com/path/to/product2",
         "ImageURL": "http://www.example.com/path/to/product/image2.png",
         "Categories": [
           "Fiction",
           "Classics"
         ],
         "Brand": "Harcourt Classics"
       }
     ]
   },
  "Zeit": 1387312956
 }

Katalog-Feed-Integration

Die Integration deines Katalogs ermöglicht es dir, unsere Produkt-Feeds und den Produktblock in E-Mails zu nutzen. Wenn du eine benutzerdefinierte Katalogintegration einrichten möchtest, wende dich bitte an unser Support-Team. Sie geben die Dokumentation und Beispiele für diese Einrichtung weiter und müssen benachrichtigt werden, sobald die Einrichtung abgeschlossen ist, um den Feed in deinem Konto zu aktivieren.

Historische Daten synchronisieren

Es ist eine gute Praxis, uns auch deine historischen Auftragsdaten zu schicken. So kannst du diese Daten besser segmentieren und die historische Genauigkeit bei der Umsatzverfolgung verbessern. Diese Daten können an uns gesendet werden, indem du deine historischen Bestellungen durchgehst und für jede Bestellung eine API-Anfrage zur Nachverfolgung der platzierten Bestellung und des bestellten Produkts erstellst.

x
War dieser Beitrag hilfreich?
1 von 1 fanden dies hilfreich