Hoe je toestemming naar Klaviyo stuurt via Zapier
Wat je leert
Ontdek hoe je een aangepaste Zapier-webhook maakt om sms-toestemming naar Klaviyo te sturen. Je kunt de instructies in deze handleiding eenvoudig aanpassen om ook e-mailtoestemming te versturen.
De stappen hieronder helpen je om een Zap te maken met een webhook (ook wel een catch hook genoemd) die een actie voor een Python-script activeert. Het voorbeeld werkt de toestemming voor sms-marketing bij. Als je een e-mailadres in de aanvraag opneemt, wordt het profiel niet aangemeld voor e-mailmarketing.
Voor deze configuratie heb je een betaald Zapier-abonnement nodig met Webhooks by Zapier.
Over de integratie
Deze integratie wordt niet volledig ondersteund door Klaviyo, maar kan indien nodig als tijdelijke oplossing worden gebruikt. We raden aan deze integratie alleen te gebruiken als je ontwikkelaars in je team hebt die dit kunnen ondersteunen.
Deze handleiding gebruikt een Zapier-codeactie die een Python-script uitvoert wanneer de trigger wordt gedetecteerd. Met deze oplossing kun je velden koppelen aan de gegevenstypen die Klaviyo-eindpunten vereisen; specifiek de eindpunten Profielen aanmelden en Profielen afmelden.
Voordat je van start gaat
Stel sms in Klaviyo in met een verzendnummer voor het land van je testontvanger. Gebruik een echt mobiel nummer en e-mailadres waar jij controle over hebt: het testen van de codeactie wijzigt de toestemming in je Klaviyo account.
Zorg dat je een Klaviyo privé-API-sleutel hebt met lists:write-, profiles:write- en subscriptions:write -machtigingen. Bekijk hoe je de API-sleutels van je account beheert.
Als je account sms-leeftijdsverificatie gebruikt, breid je aanmeldingsverzoek dan uit met age_gated_date_of_birth voordat je dit voorbeeld gebruikt. In het onderstaande voorbeeld wordt geen geboortedatum verzameld of verstuurd.
Zapier-webhook instellen
Voor Zapier's huidige installatie-instructies kun je de handleidingen voor webhooktriggers en Python-codeacties raadplegen.
- Log in bij je Zapier-account.
- Selecteer op de hoofdpagina in Zapier +Maken en selecteer vervolgens Zap.
- Voer een naam in voor je nieuwe Zap (bijv. Klaviyo-webhook).
- Klik op de stap Trigger, zoek vervolgens naar Webhooks by Zapier en selecteer dit.

- Selecteer Catch Hook in het dropdownmenu Event.

- Klik op Doorgaan. Voor de platte testgegevens die in deze handleiding worden gebruikt, laat je Een onderliggende sleutel verwijderen leeg en klik je daarna opnieuw op Doorgaan.
- Selecteer het tabblad Test.
- Kopieer de webhook-URL die Zapier voor je aanbiedt om je verzoeken naartoe te sturen.

- Configureer de app die toestemming verzamelt, zodat deze toestemmingswijzigingen naar deze webhook-URL kan sturen, inclusief de velden
email,phone_numberensms_consentdie hieronder worden gebruikt. Volg de documentatie van die app om de uitgaande webhook in te stellen. - Voordat je gaat testen, moet je testgegevens naar je webhook sturen. Bekijk onze handleiding Testgegevens naar Zapier sturen voor meer informatie. Zorg dat je telefoonnummers opmaakt in E.164-indeling, inclusief het +-teken en de landcode, wanneer je testgegevens verstuurt.
- Zodra je de testgegevens naar de webhook hebt gestuurd, klik je op Testtrigger (op het tabblad Test).

- Als de aanvraag is gelukt, zie je een succesbericht en worden de testgegevens onder het succesbericht ingevuld, vergelijkbaar met het onderstaande voorbeeld:

- Zodra je trigger werkt, klik je op Doorgaan met geselecteerde record.
Zapier-actie instellen
- Voeg een actiestap toe en zoek naar en selecteer Code by Zapier.

- Selecteer in het dropdownmenu Event Python uitvoeren.

- Klik op Doorgaan.
Stel veldtoewijzing in en maak scriptlogica
- Koppel in invoergegevens
email,phone_numberensms_consentaan de bijbehorende velden in je testgegevens. Voer de sleutels precies in zoals weergegeven. Het veldnamein de voorbeeldgegevens wordt niet gebruikt door dit script.

Invoergegevens | Testgegevens toegewezen |
| 1. E-mail: <Test email> |
| 1. Telefoonnummer: <Test phone number> |
| 1. Sms_consent: true |
| 1. Naam: <Test name> |
Verstuur true alleen bij een expliciete opt-in voor sms-marketing. Verstuur false alleen voor een sms-afmeldverzoek: hiermee wordt de toestemming voor sms-marketing in je account ingetrokken en wordt het profiel uit de geselecteerde lijst verwijderd. Gebruik false niet voor een lege of onbekende toestemmingswaarde.
- Voeg een script zoals hieronder toe aan het codevak:
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
}- Vervang
your-private-api-keydoor je privé-API-sleutel van Klaviyo.
Behandel privé-API-sleutels als wachtwoorden – bewaar ze op een veilige plek en maak ze nooit openbaar.
- Vervang
LIST_IDop beide locaties door je lijst-ID van Klaviyo. Ga in Klaviyo naar Doelgroep > Lijsten & segmenten, open de lijst en selecteer Instellingen > Details om de lijst-ID te kopiëren. - Controleer Instellingen > Toestemming > Opt-inproces voor die lijst. Als je je wilt aanmelden zonder een bevestiging, selecteer je Single opt-in en klik je op Opslaan. Met dubbele toestemming rond je een sms-bevestiging af die naar je testnummer is gestuurd voordat je het abonnement controleert.
- Klik op Doorgaan en klik vervolgens op Teststap.
- Controleer of de output
status_code202weergeeft. Dit betekent dat Klaviyo het verzoek heeft geaccepteerd om het te verwerken; het bevestigt niet dat de toestemming al klaar is met updaten. Er wordt een lege response body verwacht.

- Controleer in Klaviyo of je testprofiel is toegevoegd aan de geselecteerde lijst, open vervolgens het profiel en bevestig dat het is aangemeld voor sms-marketing. Als er een bevestigingsbericht is verzonden, rond je eerst die bevestiging af.

- Test het afmeldpad met hetzelfde testprofiel: verstuur een nieuwe webhook-aanvraag met
sms_consentingesteld opfalse, selecteer die nieuwe triggerrecord in Zapier en test de codestap opnieuw. Controleer in Klaviyo of het profiel is afgemeld voor sms-marketing en is verwijderd uit de geselecteerde lijst. - Als beide tests succesvol zijn, klik je op Publiceren om je Zap te publiceren. Als een test niet succesvol is, bekijk dan onze tips voor probleemoplossing voor veelvoorkomende problemen.
Pas het voorbeeld voor e-mailtoestemming aan
Voor een versie van deze Zap met alleen e-mail:
- Koppel een
email_consent-invoer uit je bron en vervangsms_consentvervolgens dooremail_consentin het hele script. Gebruiktruevoor een expliciete e-mailmarketing-opt-in enfalsevoor een verzoek om je af te melden voor e-mail. - Vervang in beide requestpayloads de sleutel
smsondersubscriptionsdooremail. Behoud hetemail-veld van de ontvanger en verwijder hetphone_number-veld uit beide payloads. - Test beide paden voor e-mailtoestemming voordat je de e-mailversie van je Zap publiceert. Controleer de e-mailtoestemming op het profiel en rond eventuele bevestiging van e-mailopt-in af die tijdens de aanmelden-test is verzonden.
Tips voor probleemoplossing
De volgende problemen komen vaak voor bij het instellen van de Zapier-webhook. Als je andere problemen tegenkomt, kun je contact opnemen met de Klaviyo Community voor verdere begeleiding.
EOL tijdens het scannen van stringliteral
Als je deze fout ziet, ontbreekt er een aanhalingsteken rond een van je variabelen. Controleer de lijst-ID en private API-sleutel om te zorgen dat ze aan beide kanten tussen aanhalingstekens staan.
SyntaxError: ongeldige syntaxis
Als je deze fout ziet, controleer dan of de regeleinden, inspringing, aanhalingstekens en haakjes in de code overeenkomen met het voorbeeld. Met name de toewijzingen url en payload moeten op afzonderlijke regels staan. Regels die beginnen met # zijn geldige Python-opmerkingen en hoeven niet te worden verwijderd.
Extra hulpbronnen
- De API-sleutels van je account beheren
Ontdek hoe je toegang krijgt tot je API-sleutels voor je Klaviyo-account en hoe je deze kunt beheren.
- Testgegevens naar Zapier verzenden
Lees hoe je testgegevens naar Zapier kunt versturen via een POST-verzoek wanneer je een webhook maakt om e-mail- en sms-toestemming naar Klaviyo te sturen.