Integreer een Standard e-commerce platform
Overzicht
Als je je eigen aangepaste winkelwagenoplossing hebt gebouwd, of als de e-commerce gegevens die je wilt bijhouden in Klaviyo nog niet worden ondersteund door een van onze kant-en-klare integraties, kun je integreren met Klaviyo met behulp van onze JavaScript API, server-side API en Custom Catalog integraties.
De belangrijkste onderdelen van het integreren van een aangepaste e-commerce winkelwagen zijn:
- klantgegevens
- Abonnees
- websiteactiviteit
- Bestelactiviteit
Deze handleiding gaat over hoe je belangrijke vergaderwaarde, of belangrijke klantactiviteiten, kunt synchroniseren met Klaviyo. Hoewel onze JavaScript en server-side Track and Identify API's door elkaar gebruikt kunnen worden, raden we voor e-commerce bedrijven de volgende opzet aan. Gebruik dit als checklist bij het opzetten van je integraties:
- Gebruik onze JavaScript Track API voor het volgende:
- actief op site - Wanneer iemand je website bezoekt
- Bekeken product - Wanneer iemand een product bekijkt
- Toegevoegd aan winkelwagentje - Wanneer iemand een artikel toevoegt aan zijn winkelwagentje
- Afrekenen gestart - Wanneer iemand op de afrekenpagina terechtkomt
- Gebruik onze server-side Track API voor het volgende:
- Geplaatste bestelling - Wanneer een bestelling succesvol wordt verwerkt op je systeem
- Besteld product - Een gebeurtenis voor elk artikel in een verwerkte bestelling
- Uitgevoerde bestelling - Wanneer een bestelling naar de klant is verzonden.
- Geannuleerde bestelling - Als een klant zijn bestelling annuleert
- Terugbetaalde bestelling - Wanneer een bestelling van een klant wordt terugbetaald
- Gebruik onze aangepaste catalogus-feedintegraties voor het volgende:
- Catalogus Feed - Een XML feed of JSON feed van je productcatalogus
Het niveau van de gedetailleerde gegevens die je naar Klaviyo stuurt binnen deze website-, aankoop- en afrekengebeurtenissen bepaalt hoe je kunt filteren en segment op basis van deze gebeurtenissen in Klaviyo. Om te begrijpen hoe gegevens moeten worden gestructureerd zodat belangrijke gebeurtenisgegevens beschikbaar zijn voor segmentatie, kun je afrekenen met onze gids over segment voorwaarden.
Merk op dat de fragmenten in deze handleiding voorbeeldgegevens gebruiken. Je moet de waarden van de JSON eigenschappen in deze knipsels zodanig update dat ze dynamisch de relevante informatie ophalen die nodig is voor die eigenschap.
Zorg ervoor dat je afrekent met onze aangepaste integraties FAQ voor vragen over aangepaste integraties of contact opneemt met ons supportteam.
Gedrag op locatie (JavaScript Track API)Gedrag op locatie (JavaScript Track API)
Om onze JavaScript API en de mogelijkheid om formulieren direct vanuit Klaviyo op je site te publiceren in te schakelen, voeg je de volgende snippet toe zodat deze op elke pagina van je website verschijnt (vaak is het einde van de footer een goede plek om dit toe te voegen). Zorg ervoor dat je PUBLIC_API_KEY vervangt door je Klaviyo account's 6-karakter Public API-sleutel:
<script type="toepassing/javascript" async
src="https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=PUBLIC_API_KEY"></script>
Actief op websiteActief op website
Zodra je de bovenstaande snippet hebt toegevoegd, zal de activiteit Actief op locatie nu worden geactiveerd voor elke persoon die cookie-ed is:
- Via een Javascript Identify API verzoek
- Door je aan te melden via een Klaviyo formulier
- Door op een Klaviyo e-mail te klikken en op je site terecht te komen
Product bekeken
Als je een flow voor websiteverlaters wilt instellen of segmenten wilt bouwen op basis van productbrowsergegevens, moet je JavaScript-event tracking toevoegen voor een Viewed Product meetwaarde. Voeg op je productpagina template het volgende fragment toe:
<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", "Bekeken Product", item]);
_learnq.push(["trackViewedItem", {
Title: item.ProductName,
ItemId: item.ProductID,
Categories: item.Categories,
ImageUrl: item.ImageURL,
Url: item.URL,
Metadata:]); {
Brand: item.Brand,
Price: item.Price,
CompareAtPrice: item.CompareAtPrice
}</script>
Toegevoegd aan WinkelwagenToegevoegd aan Winkelwagen
Als je winkelwagen verlaten e-mail wilt versturen voordat iemand op de afrekenpagina terechtkomt, moet je informatie over de winkelwagen bijhouden wanneer iemand een bepaalde actie onderneemt. Hiervoor raden we aan om een evenement Toegevoegd aan winkelwagen te versturen wanneer iemand een item toevoegt aan zijn winkelwagen. Een persoon moet nog steeds "geïdentificeerd zijn," of cookie-ed, om deze gebeurtenis te kunnen volgen. Voor de payload moet je alle winkelwageninformatie bevatten (zoals Begonnen afrekenen hieronder) en informatie over het item dat zojuist is toegevoegd (zoals Bekeken product hierboven). Hier is een voorbeeld van een Track-aanvraag:
<script text="text/javascript">
_learnq.push(['track', Toegevoegd aan winkelwagen, {
" $waarde": 29,98,
" ToegevoegdItemProductNaam": "A Tale of Two Cities",
" ToegevoegdItemProductID": "1112",
" ToegevoegdItem_SKU": "TALEOFTWO",
" ToegevoegdItem_Categorieën": ["Fictie", "Klassiekers"],
" ToegevoegdItem_ImageURL": "http://www.example.com/path/to/product/image2.png",
"Toegevoegd_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",
"Items": [{
"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>
Afrekenen gestartAfrekenen gestart
afrekenen gegevens is belangrijk als je verlaten afrekenen e-mail wilt versturen. Wanneer iemand begint met afrekenen, stuur je Klaviyo een gebeurtenis om aan te geven dat ze zijn begonnen met afrekenen. De beste plaats om deze gebeurtenis te triggeren is wanneer iemand de afrekenpagina bezoekt nadat hij "is geïdentificeerd" of wanneer hij zijn e-mailadres invoert op de afrekenpagina als hij nog niet is geïdentificeerd.
Je wilt er zeker van zijn dat je alle details van de artikelen in je e-mail zet, zodat je de e-mail met verlaten afrekenen kunt aanpassen met afbeeldingen, links en andere informatie over de producten in iemands winkelwagentje. Hier is een voorbeeld van een Track-aanvraag:
<script text="text/javascript">
_learnq.push(['track', 'Gestart met afrekenen', {
" $event_id": "1000123_1387299423",
" $value": 29,98,
" ItemNames": ["Winnie the Pooh", "A Tale of Two Cities"],
" CheckoutURL": "http://www.example.com/path/to/checkout",
"Items": [{
"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>
De $event_id
moet een unieke identificatie zijn voor de winkelwagen in combinatie met de UNIX-geformatteerde tijd waarop de gebeurtenis werd geactiveerd. Hierdoor kan iemand het Begonnen afrekenen meer dan eens activeren als hij terugkeert nadat hij extra items heeft toegevoegd.
Server-Side meetwaarde
We raden tracking aan om bepaalde meetwaarden op de server te zetten vanwege mogelijke beperkingen van frontend code en veiligheidsoverwegingen. Als iemand een langzame verbinding/computer heeft of een JavaScript-blokkerende plug-in in zijn browser, kan het zijn dat de JavaScript-verzoeken niet worden uitgevoerd. In het geval van meer cruciale meetwaarden (zoals die voor bestellingen en andere transactiegebeurtenissen en -eigenschappen) of meetwaarden die gevoelige gegevens bevatten, gebruik je onze server-side Track and Identify API.
Bestelling geplaatstBestelling geplaatst
Nadat een bestelling is geplaatst, moet je een Track-aanvraag doen bij onze server-side API. We hebben bibliotheken beschikbaar voor Python, Ruby en PHP, maar in algemene zin vereist de API gewoon een HTTP GET verzoek met een base64 gecodeerde JSON payload.
Het is een goed gebruik om je historische bestelgegevens ook mee te sturen. Dit zal je beter in staat stellen om segment van die gegevens af te halen en de historische nauwkeurigheid in inkomsten tracking te verbeteren. Historische gegevens kunnen naar ons worden verzonden door je historische bestellingen te doorlopen en voor elke geplaatste bestelling en besteld product Track API verzoeken te genereren. De speciale "tijd" eigenschap voor deze gebeurtenissen moet de UNIX tijdstempel zijn van wanneer die bestelling plaatsvond. Meer details over deze meetwaarde hieronder.
Je wilt bestelgegevens op een van de volgende twee manieren naar Klaviyo sturen: realtime of batchgewijs.
- Real-time - Je doet aanvragen zodra een bestelling is geplaatst
- Batch - Je schrijft een script dat minstens één keer per uur wordt uitgevoerd om alle gebeurtenissen van het afgelopen uur te versturen.
Als je een abonnement neemt om winkelwagen verlaten/afrekenen per e-mail te versturen, moet je bestelgegevens in ieder geval versturen met een frequentie die binnen je e-mailvertraging valt om te voorkomen dat de e-mail naar mensen gaat die hun bestelling hebben afgerond. Als je bijvoorbeeld een tijdsvertraging van een uur hebt tussen het moment dat iemand de winkelwagen verlaat flow en het moment dat ze de eerste e-mail ontvangen, dan moet je ervoor zorgen dat je minstens elk uur gegevens verstuurt.
Voor elke bestelling raden we je aan om twee soorten evenementen te versturen:
- Eén gebeurtenis met de naam Geplaatste bestelling voor de hele bestelling
- Dit bevat een
$waarde
eigenschap die de totale waarde van een hele bestelling weergeeft, inclusief verzending, belasting, kortingen, enzovoort.
- Dit bevat een
- Eén gebeurtenis voor elk regelitem met de naam Besteld product
- Dit bevat een
$value
eigenschap die de totale kosten van een artikel in de bestelling weergeeft vóór eventuele aanpassingen, evenals gedetailleerde informatie op SKU-niveau over het artikel.
- Dit bevat een
Belangrijke dingen waar je op moet letten bij tracking server-side events:
- Zorg ervoor dat je
API_KEY
vervangt door je openbare API-sleutel. - De
$event_id
moet een unieke identificatie zijn voor de bestelling (bijv. Bestel-ID). - Als dezelfde combinatie van
gebeurtenis
en$event_id
meer dan eens wordt verzonden, slaan we alle gevolgde gebeurtenissen na de eerste met dezelfde combinatie over. -
$waarde
is een speciale eigenschap waarmee Klaviyo de inkomsten kan bijhouden; dit moet de totale numerieke, monetaire waarde zijn van het evenement waarmee het geassocieerd is. - De "Items" array moet voor elk regelitem een woordenboek bevatten.
-
time
is een speciale eigenschap die een UNIX timestamp van de besteldatum en -tijd moet zijn.
Hier is een voorbeeld van een Track verzoek voor geplaatste bestelling:
{
" token": "API_KEY",
" event": "Geplaatste bestelling",
" customer_properties": {
"$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"
},
" eigenschappen": {
" $event_id": "1234",
" $waarde": 29,98,
" Categorieën": ["Fictie", "Klassiekers", "Kinderen"],
" Itemnamen": ["Winnie the Pooh", "A Tale of Two Cities"], " Merken": ["Kinderboeken", "Harcourt Classics"],
" Kortingscode": "Gratis verzending",
" Kortingswaarde": 5,
" Artikelen": [{
"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"
}
]
},
" tijd": 1387302423
}
Product besteldProduct besteld
Voor elk regelitem moet je ook een Volgordeverzoek doen voor een gebeurtenis Besteld product:
{
" token": "API_KEY",
" event": "Besteld product",
" customer_properties": {
"$email": "john.smith@example.com",
"$first_name": "John",
"$last_name": "Smith"
},
" eigenschappen": {
"$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"
},
" tijd": 1387302423
}
Uitgevoerde Bestelling, Geannuleerde Bestelling en Terugbetaalde BestellingUitgevoerde Bestelling, Geannuleerde Bestelling en Terugbetaalde Bestelling
Afhankelijk van hoe je producten naar de klant worden gestuurd, of ze geannuleerd of terugbetaald kunnen worden, wil je misschien extra gebeurtenissen sturen die deze acties weergeven. Elk van deze ordergerelateerde gebeurtenissen heeft bijna dezelfde payload als een geplaatste ordergebeurtenis.
Voor Fulfilled Order is de enige update die gemaakt moet worden de naam van de gebeurtenis en het tijdstip waarop de vervulling plaatsvond:
{
" token": "API_KEY",
" event": "Fulfilled Order",
" customer_properties": {
"$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"
},
" eigenschappen": {
" $event_id": "1234",
" $waarde": 29,98,
" Categorieën": [
" Fictie",
" Klassiekers",
" Kinderen"
],
" Itemnamen": [ " Winnie the Pooh",
" A Tale of Two Cities"
],
" Merken": [
" Kinderboeken",
" Harcourt Classics"
],
" Kortingscode": "Gratis verzending",
" Kortingswaarde": 5,
" Artikelen": [
{
"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"
}
]
},
" tijd": 1387312956
}
Voor Geannuleerde bestelling en Terugbetaalde bestelling, update de naam van de gebeurtenis en het tijdstempel en voeg een extra eigenschap toe voor de reden van annulering of terugbetaling:
Geannuleerde bestelling
"token": "API_KEY",
" event": "Geannuleerde bestelling",
" customer_properties": {
"$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"
},
" eigenschappen": {
" $event_id": "1234",
" $waarde": 29,98,
" Reden": "Niet langer nodig",
" Categorieën": [
" Fictie",
" Klassiekers",
" Kinderen" ],
" Artikelnummer": [
" Winnie the Pooh",
" A Tale of Two Cities"
],
" Merken": [
" Kinderboeken",
" Harcourt Classics"
],
" Kortingscode": "Gratis verzending",
" Kortingswaarde": 5,
" Artikelen": [
{
"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"
}
]
},
" tijd: 1387312956
}
Terugbetaalde bestelling
{
" token": "API_KEY",
" event": "Refunded Order",
" customer_properties": {
"$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"
},
" eigenschappen": {
" $event_id": "1234",
" $waarde": 29,98,
" Reden": "Niet langer nodig",
" Categorieën": [
" Fictie",
" Klassiekers",
" Kinderen
],
" Artikelnummer": [
" Winnie the Pooh",
" A Tale of Two Cities"
],
" Merken": [
" Kinderboeken",
" Harcourt Classics"
],
" Kortingscode": "Gratis verzending",
" Kortingswaarde": 5,
" Artikelen": [
{
"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"
}
]
},
tijd": 1387312956
}
Catalogus-feed integratiesCatalogus-feed integraties
Door je catalogus te integreren kun je onze productfeed en Productblok gebruiken in e-mail. Om een aangepaste catalogusintegratie op te zetten, kun je contact opnemen met ons supportteam. Zij zullen de documentatie en voorbeelden voor deze instelling doorgeven en moeten op de hoogte worden gesteld zodra de instelling is voltooid om de feed op je account te activeren.
Historische gegevens synchroniserenHistorische gegevens synchroniseren
Het is een goed gebruik om ons ook je historische bestelgegevens te sturen. Dit zal je beter in staat stellen om segment van die gegevens af te halen en de historische nauwkeurigheid in inkomsten tracking te verbeteren. Deze gegevens kunnen naar ons worden verzonden door je historische bestellingen te doorlopen en voor elke geplaatste bestelling en besteld product Track API-verzoeken te genereren.