Objectif de cet article

Découvrez comment créer un webhook Zapier personnalisé pour transmettre le consentement pour l’envoi de SMS à Klaviyo. Vous pouvez facilement modifier les instructions de ce guide pour également transmettre un consentement pour l’envoi d’e-mails.

Les étapes ci-dessous vous aideront à créer un Zap à l’aide d’un webhook (également appelé « catch hook ») qui déclenche l’action d’un script Python. L’exemple met à jour le consentement au marketing par SMS. Inclure une adresse e-mail dans la demande n’abonne pas le profil au marketing par e-mail.

Cette configuration nécessite un forfait Zapier payant qui inclut webhook par Zapier.

À propos de l’intégration

Cette intégration n’est pas entièrement prise en charge par Klaviyo, mais peut être utilisée comme solution de contournement si nécessaire. Nous vous recommandons de n’utiliser cette intégration que si vous avez des développeurs dans votre équipe qui peuvent s’en charger.

Ce guide utilise une action de code Zapier qui exécute un script Python lorsque le déclencheur est détecté. Cette solution vous permet de mapper des champs vers les types de données requis par les points de terminaison de Klaviyo, en particulier pour l’abonnement de profils et le désabonnement de profils.

Avant de commencer

Configurez les SMS dans Klaviyo avec un numéro d’envoi pour le pays de votre destinataire test. Utilisez un vrai numéro de mobile et une adresse e-mail que vous contrôlez : le test de l’action de code modifie le consentement dans votre compte Klaviyo.

Ayez une clé d’API privée Klaviyo avec les autorisations lists:write, profiles:write et subscriptions:write. Consultez comment gérer les clés d’API de votre compte.

Si votre compte utilise le filtrage par âge SMS, étendez la demande d’abonnement pour inclure age_gated_date_of_birth avant d’utiliser cet exemple. L’exemple ci-dessous ne collecte ni n’envoie de date de naissance.

Configurer le webhook de Zapier

Pour obtenir les instructions de configuration actuelles de Zapier, consultez ses guides sur les déclencheurs de webhook et les actions de code Python.

  1. Connectez-vous à votre compte Zapier.
  2. Depuis la page principale de Zapier, sélectionnez +Create, puis Zap.
  3. Saisissez un nom pour votre nouveau Zap (par exemple, « Webhook Klaviyo »).
  4. Cliquez sur l’étape Déclencheur, puis recherchez et sélectionnez webhook par Zapier.
  1. Dans le menu déroulant Événement, sélectionnez Catch Hook.
  1. Cliquez sur Continue. Pour les données de test plates utilisées dans ce guide, laissez Sélectionner une clé enfant désactivée vide, puis cliquez à nouveau sur Continuer.
  2. Sélectionnez l’onglet Test.
  3. Copiez l’URL du webhook que Zapier vous fournit pour envoyer vos demandes.
  1. Configurez l’application qui collecte le consentement afin d’envoyer les changements de consentement vers cette URL de webhook, y compris les champs email, phone_number et sms_consent utilisés ci-dessous. Suivez la documentation de cette application pour configurer son webhook sortant.
  2. Avant de procéder aux tests, vous devez envoyer des données de test à votre webhook. Pour en savoir plus, consultez notre guide Comment envoyer des données de test à Zapier. Veillez à formater les numéros de téléphone au format E.164, en incluant le signe + et l’indicatif du pays, lorsque vous envoyez des données de test.
  3. Une fois que vous avez envoyé les données de test au webhook, cliquez sur Déclencheur de test (dans l’onglet Test).
  1. Si la demande aboutit, vous verrez un message de réussite et les données du test s’afficheront sous le message de réussite, comme dans l’exemple ci-dessous :
  1. Une fois que votre déclencheur fonctionne, cliquez sur Continue with selected record.

Configurer une action Zapier

  1. Ajoutez une étape d’action, puis recherchez et sélectionnez Code by Zapier.
  1. Dans le menu déroulant Événement, sélectionnez Exécuter Python.
  1. Cliquez sur Continue.

Configurer le mappage des champs et créer une logique de script

  1. Dans Données d’entrée, mappez email, phone_number et sms_consent aux champs correspondants dans vos données de test. Saisissez les clés exactement comme indiqué. Le champ name dans les données de l’exemple n’est pas utilisé par ce script.

Données d’entrée

Données de test mappées

email

1. Email: <E-mail test>

phone_number

1. Phone Number: <Numéro de téléphone test>

sms_consent

1. Sms Consent: true

name

1. Name: <Nom test>

N’envoyez true que dans le cadre d’un opt-in explicite au marketing par SMS. N’envoyez false que dans le cadre d’une demande de se désabonner des SMS : cela révoque le consentement au marketing par SMS dans l’ensemble de votre compte et supprime le profil de la liste sélectionnée. N’utilisez pas false avec une valeur de consentement vide ou inconnue.

  1. Ajoutez un script comme celui-ci dans la zone de code :
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. Remplacez your-private-api-key par votre clé d’API privée Klaviyo.

Traitez les clés d’API privées comme des mots de passe : conservez-les en lieu sûr et ne les dévoilez jamais au public.

  1. Remplacez LIST_ID aux deux emplacements par l’identifiant de votre liste Klaviyo. Dans Klaviyo, accédez à Audience > Listes et segments, ouvrez la liste, puis sélectionnez Paramètres > Détails pour copier l’ identifiant de la liste.
  2. Consultez Paramètres > Consentement > Processus d’opt-in pour cette liste. Pour vous abonner sans confirmation, sélectionnez Single opt-in, puis cliquez sur Enregistrer. Avec le double opt-in, complétez toute confirmation SMS envoyée à votre numéro de test avant de vérifier son abonnement.
  3. Cliquez sur Continue, puis sur Test step.
  4. Vérifiez que la sortie affiche status_code 202. Cela signifie que Klaviyo a accepté la demande de traitement ; cela ne confirme pas que la mise à jour du consentement est terminée. Un corps de réponse vide est attendu.
  1. Dans Klaviyo, vérifiez que votre profil de test a été ajouté à la liste sélectionnée, puis ouvrez le profil et confirmez qu’il est abonné au marketing par SMS. Si un message de confirmation a été envoyé, terminez d’abord cette confirmation.
  1. Testez le parcours de désabonnement avec le même profil de test : envoyez une nouvelle requête webhook avec sms_consent défini sur false, sélectionnez ce nouvel enregistrement de déclenchement dans Zapier, puis testez à nouveau l’étape de code. Confirmez dans Klaviyo que le profil s’est désabonné du marketing par SMS et a été supprimé de la liste sélectionnée.
  2. Une fois les deux tests réussis, cliquez sur Publier pour publier votre zap. Si un test n’aboutit pas, consultez nos conseils de dépannage des problèmes les plus courants.

Adaptez l’exemple pour le consentement à l’e-mail

Pour une version uniquement e-mail de ce Zap :

  1. Mappez une entrée email_consent à partir de votre source, puis remplacez sms_consent par email_consent dans l’ensemble du script. Utilisez true pour un consentement explicite au marketing par e-mail et false pour une demande de se désabonner d’un e-mail.
  2. Dans les deux charges utiles de la requête, remplacez la clé sms sous subscriptions par email. Conservez le champ email du destinataire et supprimez le champ phone_number des deux charges utiles.
  3. Testez les deux parcours de consentement à l’e-mail avant de publier la version e-mail de votre Zap. Vérifiez le consentement à l’e-mail sur le profil, et effectuez toute confirmation d’abonnement à l’e-mail envoyée pendant le test d’abonnement.

Résolution de problèmes

Les points suivants sont des problèmes courants que vous pouvez rencontrer lors de la configuration du webhook de Zapier. Si vous rencontrez d’autres problèmes, contactez la communauté Klaviyo pour obtenir des conseils supplémentaires.

EOL lors de l’analyse d’une chaîne de caractères littérale (« EOL while scanning string literal »)

Si vous voyez cette erreur, c’est qu’il manque un guillemet au niveau de l’une de vos variables. Vérifiez que l’ID de la liste et la clé d’API privée sont entourés de guillemets.

Syntaxe non valide (« SyntaxError: invalid syntax »)

Si vous voyez cette erreur, vérifiez que les sauts de ligne, l’indentation, les guillemets et les crochets du code correspondent à l’exemple. En particulier, les affectations url et payload doivent se trouver sur des lignes distinctes. Les lignes commençant par # sont des commentaires Python valides et n’ont pas besoin d’être supprimées.

Ressources supplémentaires

Cet article vous a-t-il été utile ?
Utilisez ce formulaire uniquement pour nous faire part de vos commentaires sur cet article. Comment contacter l’assistance.

Explorer d’autres contenus Klaviyo

Communauté
Contactez des membres de votre secteur, des partenaires et des experts Klaviyo pour trouver de l’inspiration, partager des informations et obtenir des réponses à toutes vos questions.
Partenaires
Engagez un expert certifié Klaviyo pour vous aider avec une tâche spécifique ou pour la gestion continue du marketing.
Assistance

Accédez à l’assistance par l’intermédiaire de votre compte.

Assistance par e-mail (essai gratuit et comptes payants) Disponible 24 h/24, 7 j/7

Assistance par chat/virtuelle
La disponibilité varie selon la localisation et le type d’abonnement.