Jak wysyłać zgodę do Klaviyo przez Zapier
Czego się dowiesz?
Dowiedz się, jak utworzyć niestandardowy webhook Zapier, aby wysyłać zgodę na SMS do Klaviyo. Instrukcje zawarte w tym przewodniku możesz też łatwo zmodyfikować, aby wysyłać zgodę na e-mail.
Poniższe kroki pomogą Ci utworzyć Zap z webhookiem (nazywanym też catch hook), który uruchamia działanie skryptu Python. Ten przykład aktualizuje zgodę na marketing SMS-owy. Uwzględnienie adresu e-mail w żądaniu nie powoduje subskrybowania profilu na marketing e-mailowy.
Taka konfiguracja wymaga płatnego planu Zapier, który obejmuje Webhooki by Zapier.
Informacje o integracji
Ta integracja nie jest w pełni wspierana przez Klaviyo, ale w razie potrzeby możesz użyć jej jako obejścia. Zalecamy korzystać z tej integracji tylko wtedy, gdy masz w zespole programistów, którzy mogą ją wspierać.
W tym przewodniku używana jest akcja kodu Zapier, która uruchamia skrypt Python po wykryciu wyzwalacza. Dzięki temu rozwiązaniu możesz mapować pola na typy danych wymagane przez punkty końcowe Klaviyo; w szczególności punkty końcowe Subskrybuj profile i Wycofaj subskrypcję profili.
Kilka słów na początek
Skonfiguruj SMS w Klaviyo, używając numeru do wysyłki dla kraju twojego odbiorcy testowego. Użyj prawdziwego numeru telefonu komórkowego i adresu e-mail, do których masz dostęp: testowanie działania kodu zmienia zgodę na twoim koncie Klaviyo.
Upewnij się, że masz prywatny klucz API Klaviyo z uprawnieniami lists:write, profiles:write i subscriptions:write. Zobacz, jak zarządzać kluczami API swojego konta.
Jeśli twoje konto korzysta z weryfikacji wieku dla SMS, przed użyciem tego przykładu rozszerz prośbę o subskrybowanie, aby uwzględniała age_gated_date_of_birth. Poniższy przykład nie zbiera ani nie wysyła daty urodzenia.
Konfigurowanie webhooka Zapier
Aktualne instrukcje konfiguracji Zapiera znajdziesz w jego przewodnikach dotyczących wyzwalaczy webhook oraz akcji z kodem w Pythonie.
- Zaloguj się do swojego konta Zapier.
- Na stronie głównej w Zapier wybierz +Utwórz, a następnie wybierz Zap.
- Wprowadź nazwę nowego Zapa (np. Klaviyo Webhook).
- Kliknij krok Wyzwalacz, a następnie wyszukaj i wybierz Webhooki by Zapier.

- Z menu rozwijanego Event wybierz Catch Hook.

- Kliknij Kontynuuj. W przypadku płaskich danych testowych używanych w tym przewodniku pozostaw pole Wybierz klucz podrzędny puste, a następnie ponownie kliknij Kontynuuj.
- Wybierz kartę Test.
- Skopiuj URL webhooka, który Zapier udostępnia do wysyłania żądań.

- Skonfiguruj aplikację, która zbiera zgodę, aby wysyłała zmiany zgody na ten URL webhooka, w tym pola
email,phone_numberisms_consentużywane poniżej. Postępuj zgodnie z dokumentacją tej aplikacji, aby skonfigurować jej wychodzący webhook. - Przed rozpoczęciem testowania musisz wysłać dane testowe do swojego webhooka. Więcej informacji znajdziesz w naszym przewodniku: Jak wysyłać dane testowe do Zapiera. Podczas wysyłania danych testowych upewnij się, że formatujesz numery telefonów w formacie E.164, wraz ze znakiem + i kodem kraju.
- Po przesłaniu danych testowych do webhooka kliknij Testuj wyzwalacz (na karcie Test).

- Jeśli żądanie się powiedzie, zobaczysz komunikat o powodzeniu, a dane testowe pojawią się poniżej komunikatu o powodzeniu, podobnie jak w poniższym przykładzie:

- Gdy wyzwalacz działa, kliknij Kontynuuj z wybranym rekordem.
Skonfiguruj działanie Zapier
- Dodaj krok działania, a potem wyszukaj i wybierz Code by Zapier.

- Z menu rozwijanego Zdarzenie wybierz Uruchom Python.

- Kliknij Kontynuuj.
Skonfiguruj mapowanie pól i utwórz logikę skryptu
- W sekcji Dane wejściowe przypisz
email,phone_numberisms_consentdo odpowiednich pól w danych testowych. Wpisz klucze dokładnie tak, jak pokazano. Polenamew przykładowych danych nie jest używane przez ten skrypt.

Dane wejściowe | Zmapowane dane testowe |
| 1. E-mail: <Test email> |
| 1. Numer telefonu: <Test phone number> |
| 1. Sms_consent: true |
| 1. Nazwa: <Test name> |
Wysyłaj true tylko w przypadku wyraźnej zgody na marketing SMS-owy. Wysyłaj false tylko w przypadku prośby o wycofać subskrypcję SMS: cofa zgodę na marketing SMS-owy na Twoim koncie i usuwa profil z wybranej listy. Nie używaj false w przypadku pustej lub nieznanej wartości zgody.
- Dodaj skrypt taki jak poniżej do pola kodu:
import requests
sms_consent = str(input_data.get("sms_consent", "")).strip().lower()
if sms_consent not in ("true", "false"):
raise ValueError("sms_consent must be true or false")
# Configure the SMS marketing subscribe or unsubscribe request.
if sms_consent == "true":
url = "https://a.klaviyo.com/api/profile-subscription-bulk-create-jobs/"
payload = {
"data": {
"type": "profile-subscription-bulk-create-job",
"attributes": {
"profiles": {
"data": [{
"type": "profile",
"attributes": {
"email": input_data["email"],
"phone_number": input_data["phone_number"],
"subscriptions": {
"sms": {"marketing": {"consent": "SUBSCRIBED"}}
}
}
}]
}
},
"relationships": {
"list": {"data": {"type": "list", "id": "LIST_ID"}}
}
}
}
else:
url = "https://a.klaviyo.com/api/profile-subscription-bulk-delete-jobs/"
payload = {
"data": {
"type": "profile-subscription-bulk-delete-job",
"attributes": {
"profiles": {
"data": [{
"type": "profile",
"attributes": {
"email": input_data["email"],
"phone_number": input_data["phone_number"],
"subscriptions": {
"sms": {"marketing": {"consent": "UNSUBSCRIBED"}}
}
}
}]
}
},
"relationships": {
"list": {"data": {"type": "list", "id": "LIST_ID"}}
}
}
}
headers = {
"accept": "application/json",
"revision": "2026-07-15",
"content-type": "application/json",
"Authorization": "Klaviyo-API-Key your-private-api-key"
}
response = requests.post(url, json=payload, headers=headers, timeout=10)
response.raise_for_status()
# Zapier requires an output object.
output = {
"status_code": response.status_code,
"response text": response.text
}- Zastąp
your-private-api-keyswoim prywatnym kluczem API Klaviyo.
Traktuj prywatne klucze API jak hasła - przechowuj je w bezpiecznym miejscu i nigdy nie ujawniaj ich publicznie.
- Zastąp
LIST_IDw obu miejscach identyfikatorem Twojej listy w Klaviyo. W Klaviyo przejdź do Odbiorcy > Listy i segmenty, otwórz listę i wybierz Ustawienia > Szczegóły, aby skopiować Identyfikator listy. - Sprawdź Ustawienia > Zgoda > Proces opt-in dla tej listy. Aby subskrybować bez potwierdzenia, wybierz Pojedyncza zgoda opt-in i kliknij Zapisz. W przypadku podwójnej zgody opt-in dokończ dowolne potwierdzenie SMS wysłane na Twój numer testowy, zanim sprawdzisz subskrypcję.
- Kliknij Kontynuuj, a następnie kliknij Testuj krok.
- Sprawdź, czy w danych wyjściowych wyświetla się
status_code202. Oznacza to, że Klaviyo zaakceptowało żądanie do przetworzenia; nie potwierdza to, że aktualizacja zgody została już zakończona. Oczekiwana jest pusta treść odpowiedzi.

- W Klaviyo sprawdź, czy twój profil testowy został dodany do wybranej listy, a następnie otwórz profil i potwierdź, że subskrybuje marketing SMS-owy. Jeśli wysłano wiadomość potwierdzającą, najpierw dokończ to potwierdzenie.

- Przetestuj ścieżkę wycofać subskrypcję na tym samym profilu testowym: wyślij nowe żądanie webhook z ustawioną wartością
sms_consentnafalse, wybierz ten nowy rekord wyzwalacza w Zapier i ponownie przetestuj krok kodu. Potwierdź w Klaviyo, że profil wycofał subskrypcję marketingu SMS-owego i został usunięty z wybranej listy. - Gdy oba testy zakończą się powodzeniem, kliknij Opublikuj, aby opublikować Zapa. Jeśli test nie zakończy się powodzeniem, zapoznaj się z naszymi wskazówkami dotyczącymi rozwiązywania problemów dotyczącymi typowych kwestii.
Dostosuj przykład dotyczący zgody na e-mail
Aby wyświetlić wersję tego Zapa tylko do e-maili:
- Zmapuj dane wejściowe
email_consentze swojego źródła, a następnie w całym skrypcie zamieńsms_consentnaemail_consent. Użyjtruedla wyraźnej zgody na marketing e-mailowy, afalsedla prośby o wycofać subskrypcję e-mail. - W obu ładunkach żądania zastąp klucz
smswsubscriptionsnaemail. Zachowaj poleemailodbiorcy i usuń polephone_numberz obu ładunków. - Przetestuj obie ścieżki uzyskiwania zgody na e-mail, zanim opublikujesz wersję e-mailową swojego Zapa. Sprawdź zgodę na e‑maile na profilu i dokończ każde potwierdzenie zapisu na e‑maile wysłane podczas testu subskrybowania.
Wskazówki dotyczące rozwiązywania problemów
Poniżej znajdują się typowe problemy, na które możesz natrafić podczas konfigurowania webhooka Zapier. Jeśli napotkasz jakiekolwiek inne problemy, możesz skontaktować się ze Społecznością Klaviyo, aby uzyskać dodatkowe wskazówki.
EOL podczas skanowania literału łańcuchowego
Jeśli widzisz ten błąd, brakuje cudzysłowu wokół jednej ze zmiennych. Sprawdź identyfikator listy i prywatny klucz API, aby upewnić się, że z obu stron są ujęte w cudzysłowy.
SyntaxError: nieprawidłowa składnia
Jeśli widzisz ten błąd, sprawdź, czy podziały wierszy, wcięcia, cudzysłowy i nawiasy w kodzie są zgodne z przykładem. W szczególności przypisania url i payload muszą znajdować się w osobnych wierszach. Wiersze zaczynające się od # są prawidłowymi komentarzami w Pythonie i nie trzeba ich usuwać.
Dodatkowe źródła
- Zarządzanie kluczami API konta
Dowiedz się, jak uzyskać dostęp do kluczy API swojego konta Klaviyo i nimi zarządzać.
- Jak wysłać dane testowe do Zapier
Dowiedz się, jak wysłać dane testowe do Zapier za pomocą żądania POST podczas tworzenia webhook w celu przesłania do Klaviyo zgody na e-mail i SMS.