Du kommer att lära dig

Lär dig hur du skapar en anpassad Zapier-webhook för att skicka sms-samtycke till Klaviyo. Du kan också enkelt ändra instruktionerna i den här guiden för att skicka e-postsamtycke.

Stegen nedan hjälper dig att skapa en Zap med en webhook (även kallad en catch hook) som utlöser en åtgärd med ett Python-skript. Exemplet uppdaterar samtycket för sms-marknadsföring. Att inkludera en e-postadress i begäran gör inte att profilen prenumererar på e-postmarknadsföring.

Den här konfigurationen kräver ett betalt Zapier-abonnemang som inkluderar Webhooks by Zapier.

Om integrationen

Den här integreringen stöds inte fullt ut av Klaviyo, men kan användas som en tillfällig lösning om det behövs. Vi rekommenderar att du bara använder den här integrationen om du har utvecklare i ditt team som kan ge stöd för den.

Den här guiden använder en Zapier-kodåtgärd som kör ett Python-skript när utlösaren upptäcks. Med den här lösningen kan du mappa fält till de datatyper som Klaviyo-slutpunkter kräver, närmare bestämt slutpunkterna Prenumerera profiler och Avsluta prenumeration för profiler.

Innan du börjar

Konfigurera sms i Klaviyo med ett sändningsnummer för landet där din testmottagare finns. Använd ett riktigt mobilnummer och en e-postadress som du kontrollerar: när du testar kodåtgärden ändras samtycket i ditt Klaviyo-konto.

Ha en privat API-nyckel för Klaviyo med behörigheterna lists:write, profiles:write och subscriptions:write. Se hur du hanterar ditt kontos API-nycklar.

Om ditt Konto använder sms-åldersverifiering ska du utöka begäran om att prenumerera så att den inkluderar age_gated_date_of_birth innan du använder det här exemplet. Exemplet nedan samlar inte in eller skickar ett födelsedatum.

Konfigurera Zapier-webhook

För Zapiers aktuella installationsinstruktioner, se deras guider till webhook-utlösare och Python-kodåtgärder.

  1. Logga in på ditt Zapier-konto.
  2. På huvudsidan i Zapier väljer du +Skapa och väljer sedan Zap.
  3. Ange ett namn för din nya Zap (t.ex. Klaviyo-webhook).
  4. Klicka på steget Utlösare och sök sedan efter och välj Webhooks by Zapier.
  1. I rullgardinsmenyn Händelse väljer du Catch Hook.
  1. Klicka på Fortsätt. För de platta testdata som används i den här guiden lämnar du Pick Off A Child Key tomt och klickar sedan på Continue igen.
  2. Välj fliken Test.
  3. Kopiera webhook-URL:en som Zapier tillhandahåller så att du kan skicka dina förfrågningar till den.
  1. Konfigurera appen som samlar in samtycke så att den skickar samtyckesändringar till denna webhook-URL, inklusive fälten email, phone_number och sms_consent som används nedan. Följ appens dokumentation för att konfigurera dess utgående webhook.
  2. Innan du testar behöver du skicka testdata till din webhook. Se vår guide om hur du skickar testdata till Zapier för mer information. Se till att formatera telefonnummer i E.164-format, inklusive +-tecknet och landskod, när du skickar testdata.
  3. När du har skickat testdata till webhooken klickar du på Testa utlösare (på fliken Test).
  1. Om begäran lyckas ser du ett bekräftelsemeddelande och testdata fylls i under bekräftelsemeddelandet, liknande exemplet nedan:
  1. När din trigger fungerar klickar du på Fortsätt med vald post.

Konfigurera Zapier-åtgärd

  1. Lägg till ett åtgärdssteg och sök sedan efter och välj Code by Zapier.
  1. I listrutan Händelse väljer du Kör Python.
  1. Klicka på Fortsätt.

Ställ in fältmappning och skapa skriptlogik

  1. I Input Data mappar du email, phone_number och sms_consent till motsvarande fält i dina testdata. Ange nycklarna exakt som de visas. Fältet name i exempeldata används inte av det här skriptet.

Indata

Testdata mappad

email

1. E-post: <Test email>

phone_number

1. Telefonnummer: <Test phone number>

sms_consent

1. Sms_consent: true

name

1. Namn: <Test name>

Skicka true endast vid ett uttryckligt samtycke till sms-marknadsföring. Skicka false endast för en begäran om att avsluta prenumeration via sms: det återkallar samtycke till sms-marknadsföring för hela ditt Konto och tar bort profilen från den valda listan. Använd inte false för ett tomt eller okänt samtyckesvärde.

  1. Lägg till ett skript som det nedan i kodrutan:
python
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
}
  1. Ersätt your-private-api-key med din privata API-nyckel för Klaviyo.

Behandla privata API-nycklar som lösenord – förvara dem på en säker plats och exponera dem aldrig för allmänheten.

  1. Ersätt LIST_ID på båda ställena med ditt Klaviyo-list-ID. I Klaviyo går du till Publik > Listor och segment, öppnar listan och väljer Inställningar > Information för att kopiera List-ID.
  2. Granska Inställningar > Samtycke > Opt-in-process för den listan. Om du vill prenumerera utan en bekräftelse väljer du Enkel opt-in och klickar på Spara. Med dubbel opt-in slutför du alla sms-bekräftelser som skickas till ditt testnummer innan du kontrollerar prenumerationen.
  3. Klicka på Fortsätt och klicka sedan på Testa steg.
  4. Kontrollera att utdata visar status_code 202. Det här betyder att Klaviyo godkände begäran för behandling; det bekräftar inte att samtycket har uppdaterats klart. En tom svarstext förväntas.
  1. I Klaviyo kontrollerar du att din testprofil har lagts till i den valda listan. Öppna sedan profilen och bekräfta att den prenumererar på sms-marknadsföring. Om ett bekräftelsemeddelande skickades slutför du den bekräftelsen först.
  1. Testa flödet för att avsluta prenumeration med samma testprofil: skicka en ny webhook-begäran med sms_consent inställt på false, välj den nya utlösarposten i Zapier och testa kodsteget igen. Bekräfta i Klaviyo att profilen har avslutat prenumerationen på sms-marknadsföring och har tagits bort från den valda listan.
  2. När båda testerna har lyckats klickar du på Publicera för att publicera din Zap. Om ett test inte lyckas kan du läsa våra felsökningstips för vanliga problem.

Anpassa exemplet för samtycke till e-post

För en version av den här Zap-en som bara innehåller e-post:

  1. Mappa en email_consent -indata från din källa och ersätt sedan sms_consent med email_consent i hela skriptet. Använd true för ett uttryckligt samtycke till e-postmarknadsföring och false för en begäran om att avsluta prenumeration via e-post.
  2. I båda begärandenyttolasterna ersätter du nyckeln sms under subscriptions med email. Behåll mottagarens fält email och ta bort fältet phone_number från båda nyttolasterna.
  3. Testa båda vägarna för e-postsamtycke innan du publicerar e-postversionen av din Zap. Kontrollera e-postsamtycke på profilen och slutför eventuell bekräftelse för e-postopt-in som skickas under testet av prenumerera.

Felsökningsguide

Följande är vanliga problem som du kan råka ut för när du konfigurerar Zapier-webhooken. Om du stöter på andra problem kan du vända dig till Klaviyo Community för ytterligare vägledning.

EOL vid genomsökning av strängliteral

Om du ser det här felet saknar du ett citationstecken runt en av dina variabler. Kontrollera list-ID:t och den privata API-nyckeln så att de omges av citationstecken på båda sidor.

SyntaxError: ogiltig syntax

Om du ser det här felet ska du kontrollera att kodens radbrytningar, indrag, citattecken och hakparenteser matchar exemplet. Särskilt tilldelningarna url och payload måste vara på separata rader. Rader som börjar med # är giltiga Python-kommentarer och behöver inte tas bort.

Ytterligare resurser

Var den här artikeln till hjälp?
Använd endast detta formulär för feedback på artiklar. Lär dig hur du kontaktar support.

Utforska mer från Klaviyo

Community
Få kontakt med kollegor, partner och Klaviyo-experter för att hitta inspiration, dela insikter och få svar på alla dina frågor.
Partners
Anlita en Klaviyo-certifierad expert för att hjälpa dig med en specifik uppgift eller för löpande marknadsföringshantering.
Support

Få tillgång till support via ditt konto.

E-postsupport (gratis provperiod och betalkonton) Tillgänglig dygnet runt, alla dagar i veckan

Chatt/virtuell hjälp
Tillgängligheten varierar beroende på plats och abonnemangstyp