So sendest du Einwilligungen über Zapier an Klaviyo
Übersicht
Erfahre, wie du einen benutzerdefinierten Zapier-Webhook erstellst, um die SMS-Einwilligung an Klaviyo zu senden. Du kannst die Anweisungen in diesem Leitfaden ganz einfach anpassen, um auch die E-Mail-Einwilligung zu senden.
Mit den folgenden Schritten kannst du einen Zap mit einem Webhook (auch Catch Hook genannt) erstellen, der eine Python-Skript-Aktion auslöst. Das Beispiel aktualisiert die SMS-Marketing-Einwilligung. Wenn du eine E-Mail-Adresse in die Anfrage aufnimmst, wird das Profil dadurch nicht für E-Mail-Marketing abonniert.
Für Diese Einrichtung ist ein kostenpflichtiger Zapier-Tarif erforderlich, der Webhooks von Zapier umfasst.
Über die Integration
Diese Integrationen werden nicht vollständig von Klaviyo unterstützt, können aber bei Bedarf als Workaround verwendet werden. Wir empfehlen, diese Integrationen nur zu verwenden, wenn du Entwickler*innen in deinem Team hast, die sie unterstützen können.
Dieser Leitfaden verwendet eine Zapier-Code-Aktion, die ein Python-Skript ausführt, sobald der Trigger erkannt wird. Mit dieser Lösung kannst du Felder den Datentypen zuordnen, die Klaviyo-Endpunkte erfordern; konkret die Endpunkte Profile abonnieren und Profile abmelden.
Bevor du anfängst
Richte SMS in Klaviyo mit einer Absendernummer für das Land eures Testempfänger*innen ein. Verwende eine echte Mobilnummer und E-Mail-Adresse, die du kontrollierst: Das Testen der Code-Aktion ändert die Einwilligung in deinem Klaviyo-Konto.
Verfüge über einen privaten Klaviyo-API-Schlüssel mit lists:write-, profiles:write- und subscriptions:write -Berechtigungen. Sieh dir an, wie du die API-Schlüssel deines Kontos verwaltest.
Wenn dein Konto SMS-Altersverifizierung verwendet, erweitere die Abonnieren-Anfrage so, dass sie age_gated_date_of_birth enthält, bevor du dieses Beispiel verwendest. Das Beispiel unten erfasst oder sendet kein Geburtsdatum.
Zapier-Webhook einrichten
Aktuelle Einrichtungsanweisungen für Zapier findest du in den Anleitungen zu Webhook-Triggern und Python-Code-Aktionen.
- Melde dich bei deinem Zapier-Konto an.
- Wähle auf der Hauptseite in Zapier +Erstellen aus und wähle dann Zap.
- Gib einen Namen für deinen neuen Zap ein (z. B. Klaviyo Webhook).
- Klicke auf den Schritt Trigger und suche dann nach Webhook von Zapier und wähle ihn aus.

- Wähle im Dropdown-Menü Ereignis Catch Hook aus.

- Klicke auf Weiter. Lasse für die in diesem Leitfaden verwendeten flachen Testdaten Wähle einen untergeordneten Schlüssel leer, und klicke dann erneut auf Weiter.
- Wähle die Registerkarte Test aus.
- Kopiere die Webhook-URL, die Zapier dir bereitstellt, damit du deine Anfragen dorthin senden kannst.

- Konfiguriere die App, die Einwilligungen erfasst, so, dass sie Einwilligungsänderungen an diese Webhook-URL sendet, einschließlich der unten verwendeten Felder
email,phone_numberundsms_consent. Folge der Dokumentation dieser App, um ihren ausgehenden Webhook einzurichten. - Bevor du testest, musst du Testdaten an deinen Webhook senden. Weitere Informationen findest du in unserem Leitfaden So sendest du Testdaten an Zapier. Achte darauf, Telefonnummern zu formatieren und beim Senden von Testdaten das Format E.164 zu verwenden, einschließlich des +-Zeichens und der Ländervorwahl.
- Sobald du die Testdaten an den Webhook gesendet hast, klicke auf Trigger testen (im Tab Test).

- Wenn die Anfrage erfolgreich ist, wird eine Erfolgsmeldung angezeigt, und die Testdaten werden unterhalb der Erfolgsmeldung eingefügt, ähnlich wie im folgenden Beispiel:

- Sobald dein Trigger funktioniert, klicke auf Mit ausgewähltem Datensatz fortfahren.
Zapier-Aktion einrichten
- Füge einen Aktionsschritt hinzu und suche dann nach Code by Zapier und wähle ihn aus.

- Wähle im Dropdown-Menü Event die Option Run Python aus.

- Klicke auf Weiter.
Feldzuordnung einrichten und Skriptlogik erstellen
- Ordne in Eingabedaten
email,phone_numberundsms_consentden entsprechenden Feldern in deinen Testdaten zu. Gib die Schlüssel genau wie angezeigt ein. Das Feldnamein den Beispieldaten wird von diesem Skript nicht verwendet.

Eingabedaten | Testdaten zugeordnet |
| 1. E-Mail: <Test email> |
| 1. Telefonnummer: <Test phone number> |
| 1. Sms_consent: true |
| 1. Name: <Test name> |
Sende true nur bei einem ausdrücklichen Opt-in für SMS-Marketing. Sende false nur bei einer SMS-Anfrage zum Abmelden: Dadurch wird die Zustimmung zum SMS-Marketing in deinem Konto widerrufen und das Profil aus der ausgewählten Liste entfernt. Verwende false nicht bei einem leeren oder unbekannten Zustimmungswert.
- Füge ein Script wie das folgende in das Codefeld ein:
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
}- Ersetze
your-private-api-keydurch deinen privaten Klaviyo API-Schlüssel.
Behandle private API-Schlüssel wie Passwörter – bewahre sie an einem sicheren Ort auf und lege sie niemals öffentlich offen.
- Ersetze
LIST_IDan beiden Stellen durch deine Klaviyo-Listen-ID. Gehe in Klaviyo zu Zielgruppe > Listen & Segmente, öffne die Liste, und wähle Einstellungen > Details aus, um die Listen-ID zu kopieren. - Überprüfe für diese Liste Einstellungen > Einwilligung > Opt-in-Prozess. Um ohne Bestätigung zu abonnieren, wähle Single Opt-in aus und klicke auf Speichern. Mit Double Opt-in musst du jede SMS-Bestätigung, die an deine Testnummer gesendet wurde, abschließen, bevor du das Abonnement prüfst.
- Klicke auf Weiter und dann auf Schritt testen.
- Prüfe, dass die Ausgabe
status_code202anzeigt. Das bedeutet, dass Klaviyo die Anfrage zur Verarbeitung akzeptiert hat; es bestätigt nicht, dass die Einwilligung bereits fertig aktualisiert wurde. Ein leerer Antwort-Body wird erwartet.

- Überprüfe in Klaviyo, ob dein Testprofil zur ausgewählten Liste hinzugefügt wurde, öffne dann das Profil und bestätige, dass es SMS-Marketing abonniert hat. Wenn eine Bestätigungsnachricht gesendet wurde, schließe diese Bestätigung zuerst ab.

- Teste den Abmeldepfad mit demselben Test-Profil: Sende eine neue Webhook-Anfrage mit
sms_consentauffalsegesetzt, wähle diesen neuen Trigger-Datensatz in Zapier aus und teste den Code-Schritt erneut. Bestätige in Klaviyo, dass das Profil von SMS-Marketing abgemeldet und aus der ausgewählten Liste entfernt wurde. - Sobald beide Tests erfolgreich sind, klicke auf Veröffentlichen, um deinen Zap zu veröffentlichen. Wenn ein Test nicht erfolgreich ist, sieh dir unsere Tipps zur Fehlerbehebung für häufige Probleme an.
Passe das Beispiel für die E-Mail-Einwilligung an
Für eine Nur-E-Mail-Version dieses Zaps:
- Ordne eine
email_consent-Eingabe aus deiner Quelle zu und ersetze dannsms_consentim gesamten Skript durchemail_consent. Verwendetruefür ein explizites E-Mail-Marketing-Opt-in undfalsefür eine Anfrage zum Abmelden von E-Mails. - Ersetze in beiden Request-Payloads den Schlüssel
smsuntersubscriptionsdurchemail. Behalte das Feldemaildes Empfänger*in bei und entferne das Feldphone_numberaus beiden Payloads. - Teste beide Pfade für die E-Mail-Einwilligung, bevor du die E-Mail-Version deines Zaps veröffentlichst. Überprüfe die E-Mail-Einwilligung im Profil und schließe alle E-Mail-Opt-in-Bestätigungen ab, die während des Abonnier-Tests gesendet werden.
Tipps zur Fehlerbehebung
Folgende Probleme treten häufig bei der Einrichtung des Zapier-Webhooks auf. Wenn andere Probleme auftreten, kannst du dich an die Klaviyo Community wenden, um weitere Hilfe zu erhalten.
EOL beim Scannen eines String-Literals
Wenn du diesen Fehler siehst, fehlt dir ein Anführungszeichen um eine deiner Variablen. Überprüfe die Listen-ID und den privaten API-Schlüssel, um sicherzustellen, dass sie auf beiden Seiten von Anführungszeichen umgeben sind.
SyntaxError: ungültige Syntax
Wenn du diesen Fehler siehst, prüfe, ob die Zeilenumbrüche, Einrückungen, Anführungszeichen und Klammern des Codes mit dem Beispiel übereinstimmen. Insbesondere müssen die Zuweisungen url und payload in separaten Zeilen stehen. Zeilen, die mit # beginnen, sind gültige Python-Kommentare und müssen nicht entfernt werden.
Weitere Ressourcen
- So verwaltest du die API-Schlüssel deines Kontos
Finde heraus, wie du auf die API-Schlüssel für dein Klaviyo-Konto zugreifen und diese verwalten kannst.
- So sendest du Testdaten an Zapier
Hier erfährst du, wie du beim Erstellen eines Webhooks Testdaten über eine POST-Anfrage an Zapier sendest, um E-Mail- und SMS-Einwilligungen an Klaviyo zu übertragen.