Zintegruj platformę handlu elektronicznego Standard
Przegląd
Jeśli zbudowałeś własne, niestandardowe rozwiązanie koszyka lub dane e-commerce, które chcesz śledzić w Klaviyo nie są jeszcze obsługiwane przez jedną z naszych wbudowanych, wstępnie zbudowanych integracji, możesz zintegrować się z Klaviyo za pomocą naszego JavaScript API, po stronie serwera API i integracji Custom Catalog.
Kluczowe elementy integracji niestandardowego koszyka e-commerce to:
- dane klienta
- Subskrybenci
- aktywność na stronie
- Zamów aktywność
Ten przewodnik koncentruje się na tym, jak zsynchronizować ważne metryki lub kluczową aktywność klientów na Klaviyo. Chociaż nasz interfejs JavaScript i interfejs API Track and Identify po stronie serwera mogą być używane zamiennie, zalecamy użycie następującej konfiguracji dla firm zajmujących się handlem elektronicznym. Użyj tej listy kontrolnej podczas konfigurowania integracji:
- Skorzystaj z naszego interfejsu JavaScript Track API , aby uzyskać następujące informacje:
- aktywni w witrynie - Gdy ktoś odwiedza Twoją witrynę
- Wyświetlony produkt - gdy ktoś wyświetli produkt
- Dodano do koszyka - gdy ktoś doda przedmiot do koszyka.
- Uruchomiona strona płatności kasa - Gdy ktoś wyląduje na stronie płatności kasa
- Użyj naszego interfejsu API Track po stronie serwera do następujących celów:
- Złożone zamówienie - gdy zamówienie zostanie pomyślnie przetworzone w twoim systemie.
- Zamówiony produkt - zdarzenie dla każdej pozycji w przetworzonym zamówieniu.
- Zrealizowane zamówienie - gdy zamówienie zostanie wysłane do klienta
- Anulowane zamówienie - gdy klient anuluje swoje zamówienie.
- Zwrócone zamówienie - gdy zamówienie klienta zostanie zwrócone
- Skorzystaj z naszej integracji Custom Catalog Feed, aby uzyskać następujące informacje:
- Kanał katalogowy - Kanał XML lub JSON twojego katalogu produktów
Poziom szczegółowości danych, które wysyłasz do Klaviyo w ramach tych zdarzeń związanych z witryną, zakupem i stroną płatności kasa, określi sposób filtrowania i segment na podstawie tych zdarzeń w Klaviyo. Aby zrozumieć, w jaki sposób dane muszą być skonstruowane, aby kluczowe szczegóły zdarzenia były dostępne dla segmentacji, przejdź na stronę płatności przejdź do kasy naszego przewodnika po warunkach segment .
Zwróć uwagę, że fragmenty w tym przewodniku wykorzystują przykładowe dane. Będziesz musiał zaktualizować wartości właściwości JSON w tych fragmentach, tak aby dynamicznie pobierały odpowiednie informacje potrzebne dla tej właściwości.
Pamiętaj, aby przejść na stronę płatności przejść do kasy nasze niestandardowe integracje FAQ na wszelkie pytania dotyczące niestandardowych integracji lub docierać do naszego zespołu ds. pomocy.
Zachowania na miejscu (JavaScript Track API)Zachowania na miejscu (JavaScript Track API)
Aby włączyć nasz JavaScript API i możliwość publikowania formularzy bezpośrednio z Klaviyo na swojej stronie, dodaj następujący fragment, aby pojawił się na każdej stronie w Twojej witrynie (często koniec stopki jest dobrym miejscem do dodania tego). Upewnij się, że API zastąpiłeś PUBLIC_API_KEY swoim Klaviyo 6-znakowym kluczem publicznym konta:
<script type="application/javascript" async
src="https://static.klaviyo.com/onsite/js/klaviyo.js?company_id=PUBLIC_API_KEY"></script>
Aktywność na stronieAktywność na stronie
Po dodaniu powyższego fragmentu aktywni w witrynie będą teraz wyzwalać aktywność dla każdej osoby, która ma plik cookie:
- Za pośrednictwem żądania API Javascript Identify
- Rejestrując się za pośrednictwem formularza Klaviyo
- Klikając wiadomość e-mail na adres Klaviyo i przechodząc do Twojej witryny
Przeglądany produkt
Jeśli chcesz skonfigurować sekwencję porzuconego przeglądania lub zbudować segment na podstawie danych przeglądania produktu, musisz dodać śledzenie zdarzeń JavaScript dla metryki przeglądanego produktu. Na szablonie strony produktu dodaj następujący fragment:
<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", {
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>
Dodano do koszykaDodano do koszyka
Jeśli chcesz wysłać porzucony koszyk zakupowy e-mail , zanim ktoś wyląduje na stronie płatności kasa, musisz śledzić informacje o koszyku, gdy ktoś podejmie określoną akcję. W tym celu zalecamy wysłanie zdarzenia Added to Cart, gdy ktoś doda produkt do koszyka. Aby śledzić to zdarzenie, dana osoba będzie musiała zostać zidentyfikowana przez "," lub plik cookie. W ładunku powinieneś zawrzeć wszystkie informacje o koszyku (takie jak Rozpoczęta strona płatności kasa poniżej) oraz informacje o właśnie dodanym przedmiocie (takie jak Wyświetlony produkt powyżej). Oto przykładowy wniosek o śledzenie:
<script text="text/javascript">
_learnq.Push(['track', Dodano do koszyka, {
" $value": 29.98,
" AddedItemProductName": "A Tale of Two Cities",
" AddedItemProductID": "1112",
" AddedItem_SKU": "TALEOFTWO",
" AddedItem_Categories": ["Fiction", "Classics"],
" 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",
"Pozycje": [{
"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>
Zakupy dodane do kasyZakupy dodane do kasy
strona płatności kasa dane są ważne,jeśli chcesz wysłać porzuconą stronę płatności kasa e-mail. Gdy ktoś rozpocznie proces strona płatności kasa, wyślesz na adres Klaviyo zdarzenie wskazujące, że rozpoczął on dokonywanie płatności. Najlepszym miejscem do wyzwolenia tego zdarzenia jest odwiedzenie strony płatności kasa po zidentyfikowaniu "" lub po wprowadzeniu adresu e-mail na stronie płatności kasa, jeśli nie został jeszcze zidentyfikowany.
Upewnij się, że uwzględniasz wszystkie szczegóły pozycji, aby Twoja porzucona strona płatności kasa e-mail mogła zostać dostosowana tak, aby zawierała zdjęcia, linki i inne informacje o produktach w czyimś koszyku. Oto przykładowy wniosek o śledzenie:
<script text="text/javascript">
_learnq.Push(['track', 'Uruchomiono stronę płatności
kasa', {
" $event_id": "1000123_1387299423",
" $value": 29.98,
" ItemNames": ["Winnie the Pooh", "A Tale of Two Cities"],
" CheckoutURL": "http://www.example.com/path/to/checkout",
"Pozycje": [{
"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>
$event_id
powinien być unikalnym identyfikatorem koszyka połączonym z czasem zdarzenia w formacie UNIX. Pozwala to komuś uruchomić Uruchomioną stronę płatności kasa więcej niż jeden raz, gdy powróci po dodaniu dodatkowych przedmiotów.
Metryka po stronie serwera
Zalecamy śledzenie niektórych metryk po stronie serwera ze względu na potencjalne ograniczenia kodu frontendowego, a także obawy związane z bezpieczeństwem. Jeśli ktoś ma wolne połączenie/komputer lub wtyczkę blokującą JavaScript w swojej przeglądarce, żądania JavaScript mogą nie zostać uruchomione. W przypadku bardziej kluczowych metryk (takich jak te dla zamówień i innych zdarzeń i właściwości transakcyjnych) lub takich, które zawierałyby wrażliwe dane, skorzystaj z naszego interfejsu API śledzenia i identyfikacji po stronie serwera.
Złożone zamówienieZłożone zamówienie
Po złożeniu zamówienia powinieneś wysłać żądanie śledzenia do naszego interfejsu API po stronie serwera. Mamy dostępne biblioteki dla Python, Ruby i PHP, ale w ogólnym sensie API wymaga po prostu wykonania żądania HTTP GET z ładunkiem JSON zakodowanym base64.
Dobrą praktyką jest również wysyłanie historycznych zamówień do danych. Zwiększy to twoją zdolność do segment tego dana i poprawi dokładność historyczną w przychody / przychód śledzenie. Dane historyczne mogą być wysyłane do nas poprzez iterację Twoich historycznych zamówień i generowanie żądań Złożonego zamówienia i Śledzenia zamówionego produktu API dla każdego z nich. Specjalna właściwość "time" dla tych zdarzeń powinna być znacznikiem czasu UNIX, kiedy to zlecenie miało miejsce. Więcej szczegółów na temat tej metryki znajdziesz poniżej.
Będziesz chciał wysyłać dane zamówień do Klaviyo na jeden z dwóch sposobów: w czasie rzeczywistym lub wsadowo.
- W czasie rzeczywistym - będziesz składać wnioski natychmiast po złożeniu zamówienia.
- Batch - napiszesz skrypt, który będzie uruchamiany co najmniej raz na godzinę, aby wysłać wszystkie zdarzenia, które miały miejsce w ciągu ostatniej godziny.
Jeśli na stronie plan chcesz wysyłać porzucony koszyk zakupowy/strona płatności kasa e-mail, musisz wysyłać dane zamówienia przynajmniej z częstotliwością, która mieści się w zakresie opóźnienia wiadomości e-mail, aby zapobiec wysyłaniu wiadomości e-mail do osób, które złożyły zamówienie. Na przykład, jeśli masz godzinne opóźnienie między uruchomieniem przez kogoś porzuconego koszyka zakupowego a otrzymaniem pierwszej wiadomości e-mail, musisz upewnić się, że wysyłasz dane co najmniej raz na godzinę.
Dla każdego zamówienia zalecamy wysłanie dwóch rodzajów zdarzeń:
- Jedno zdarzenie o nazwie Złożone zamówienie dla całego zamówienia
- Obejmuje to właściwość
$value
, która reprezentuje całkowitą wartość całego zamówienia, w tym wysyłkę, podatek, rabaty itp.
- Obejmuje to właściwość
- Jedno zdarzenie dla każdej pozycji o nazwie Zamówiony produkt
- Obejmuje to właściwość
$value
, która reprezentuje całkowity koszt pozycji w zamówieniu przed dokonaniem jakichkolwiek korekt, a także bardziej szczegółowe informacje o pozycji na poziomie SKU
- Obejmuje to właściwość
Kluczowe rzeczy, o których należy pamiętać podczas śledzenia zdarzeń po stronie serwera:
- Pamiętaj, aby zastąpić
API_KEY
swoim publicznym kluczem API. -
$event_id
powinien być unikalnym identyfikatorem zamówienia (np. ID zamówienia). - Jeśli ta sama kombinacja
zdarzeń
i$event_id
zostanie wysłana więcej niż raz, pominiemy wszystkie śledzone zdarzenia po pierwszym z tą samą kombinacją. -
$value
to specjalna właściwość, która pozwala Klaviyo śledzić przychody / przychód; powinna to być całkowita liczbowa, pieniężna wartość zdarzenia, z którym jest powiązana. - Tablica "Items" powinna zawierać jeden słownik dla każdej pozycji.
-
time
to specjalna właściwość, która powinna być znacznikiem czasu UNIX daty i godziny zamówienia.
Oto przykład żądania śledzenia dla złożonego zamówienia:
{
" token": "API_KEY",
" zdarzenie": "Złożono zamówienie",
" 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"
},
" properties": {
" $event_id": "1234",
" $value": 29.98,
" Kategorie": ["Fiction", "Classics", "Children"],
" ItemNames": ["Winnie the Pooh", "A Tale of Two Cities"], " Marki": ["Książki dla dzieci", "Harcourt Classics"],
" Kod rabatowy": "Darmowa wysyłka",
" Wartość rabatu": 5,
" Pozycje": [{
"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"
}
]
},
" czas": 1387302423
}
Zamówiony produktZamówiony produkt
Dla każdej pozycji powinieneś również utworzyć żądanie śledzenia dla zdarzenia Ordered Product:
{
" token": "API_KEY",
" event": "Zamówiony produkt",
" customer_properties": {
"$email": "john.smith@example.com",
"$first_name": "John",
"$last_name": "Smith"
},
" properties": {
"$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"
},
" time": 1387302423
}
Zrealizowane zamówienie, anulowane zamówienie i zwrócone zamówienieZrealizowane zamówienie, anulowane zamówienie i zwrócone zamówienie
W zależności od tego, w jaki sposób Twoje produkty są wysyłane do klienta lub czy można je anulować lub zwrócić, możesz chcieć wysłać dodatkowe zdarzenia, które odzwierciedlają te działania. Każde z tych zdarzeń związanych z zamówieniem będzie miało prawie taki sam ładunek jak zdarzenie Złożonego zamówienia.
W przypadku zrealizowanego zamówienia jedyną aktualizacją, którą należy wykonać, jest nazwa zdarzenia i czas, w którym nastąpiło zrealizowanie:
{
" token": "API_KEY",
" zdarzenie": "Zrealizowane zamówienie",
" 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"
},
" properties": {
" $event_id": "1234",
" $value": 29.98,
" Categories": [
" Fikcja",
" Klasyka",
" Dzieci"
],
" ItemNames": [ " Kubuś Puchatek",
" Opowieść o dwóch miastach"
],
" Marki": [
" Książki dla dzieci",
" Harcourt Classics"
],
" Kod rabatowy": "Darmowa wysyłka",
" Wartość rabatu": 5,
" Pozycje": [
{
"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"
}
]
},
" czas": 1387312956
}
W przypadku anulowanego zamówienia i zwróconego zamówienia zaktualizuj nazwę zdarzenia i znacznik czasu oraz dodaj dodatkową właściwość dla powodu anulowania lub zwrotu:
Anulowano zamówienie
"token": "API_KEY",
" zdarzenie": "Anulowane zamówienie",
" 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"
},
" properties": {
" $event_id": "1234",
" $value": 29.98,
" Powód": "Nie jest już potrzebny",
" Kategorie": [
" Fikcja",
" Klasyka",
" Dzieci" ],
" ItemNames": [
" Winnie the Pooh",
" A Tale of Two Cities"
],
" Brands": [
" Książki dla dzieci",
" Harcourt Classics"
],
" Kod rabatowy": "Darmowa wysyłka",
" Wartość rabatu": 5,
" Pozycje": [
{
"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"
}
]
},
" czas: 1387312956
}
Zwrócono płatność za zamówienie
{
" token": "API_KEY",
" zdarzenie": "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"
},
" properties": {
" $event_id": "1234",
" $value": 29.98,
" Powód": "Nie jest już potrzebny",
" Kategorie": [
" Fikcja",
" Klasyka",
" Dzieci
],
" ItemNames": [
" Winnie the Pooh",
" A Tale of Two Cities"
],
" Brands": [
" Książki dla dzieci",
" Harcourt Classics"
],
" Kod rabatowy": "Darmowa wysyłka",
" Wartość rabatu": 5,
" Pozycje": [
{
"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"
}
]
},
time": 1387312956
}
Integracje kanałów katalogowychIntegracje kanałów katalogowych
Integracja Twojego katalogu pozwoli Ci korzystać z naszego feedu produktowego i bloku produktowego w wiadomościach e-mail. Aby skonfigurować niestandardowe integracje katalogów, skontaktuj się z naszym zespołem ds. pomocy. Przekażą oni dokumentację i przykłady tej konfiguracji i będą musieli zostać powiadomieni po zakończeniu konfiguracji, aby aktywować kanał na Twoim koncie.
Synchronizacja danych historycznychSynchronizacja danych historycznych
Dobrą praktyką jest również przesłanie nam danych historycznych zamówień. Zwiększy to twoją zdolność do segment tego dana i poprawi dokładność historyczną w przychody / przychód śledzenie. Dane te mogą zostać przesłane do nas poprzez iterację po Twoich historycznych zamówieniach i wygenerowanie dla każdego z nich żądań Złożonego zamówienia i Śledzenia zamówionego produktu API.