Qué aprenderás

Aprende a crear un webhook personalizado de Zapier para enviar el consentimiento de SMS a Klaviyo. Puedes modificar fácilmente las instrucciones de esta guía para enviar también el consentimiento de email.

Los pasos que se indican a continuación te ayudarán a crear un Zap con un webhook (también llamado catch hook) que active una acción de script de Python. El ejemplo actualiza el consentimiento para recibir marketing por SMS. Incluir una dirección de email en la solicitud no suscribe el perfil al marketing por email.

Esta configuración requiere un plan de pago de Zapier que incluya Webhooks by Zapier.

Información sobre las integraciones

Esta integración no cuenta con la compatibilidad total de Klaviyo, pero se puede usar como solución alternativa si es necesario. Recomendamos usar esta integración solo si tienes desarrolladores en el equipo que puedan ofrecer compatibilidad.

Esta guía utiliza una acción de código de Zapier que ejecuta un script de Python cuando se detecta el activador. Con esta solución, puedes asignar campos a los tipos de datos que requieren los puntos de conexión de Klaviyo; en concreto, los puntos de conexión Suscribirse a perfiles y Darse de baja de perfiles.

Antes de empezar

Configura SMS en Klaviyo con un número de envío para el país del destinatario de prueba. Usa un número de teléfono móvil y una dirección de email reales que controles: probar la acción del código cambia el consentimiento en la cuenta de Klaviyo.

Ten una clave de API privada de Klaviyo con permisos de lists:write, profiles:write y subscriptions:write. Consulta cómo gestionar las claves de API de tu cuenta.

Si tu cuenta usa la restricción de edad por SMS, amplía la solicitud de suscripción para incluir age_gated_date_of_birth antes de usar este ejemplo. El ejemplo a continuación no recopila ni envía una fecha de nacimiento.

Configurar el webhook de Zapier

Para ver las instrucciones de configuración actuales de Zapier, consulta sus guías sobre disparadores de webhook y acciones de código de Python.

  1. Inicia sesión en tu cuenta de Zapier.
  2. En la página principal de Zapier, selecciona +Crear y, a continuación, selecciona Zap.
  3. Introduce un nombre para tu nuevo Zap (p. ej., webhook de Klaviyo).
  4. Haz clic en el paso Activador y, luego, busca y selecciona Webhooks by Zapier.
  1. En el menú desplegable Evento, selecciona Catch Hook.
  1. Haz clic en Continuar. En el caso de los datos de prueba planos que se usan en esta guía, deja Pick Off A Child Key en blanco y, a continuación, vuelve a hacer clic en Continuar.
  2. Selecciona la pestaña Prueba.
  3. Copia la URL del webhook que Zapier te proporciona para enviar tus solicitudes.
  1. Configura la aplicación que recopila el consentimiento para enviar los cambios de consentimiento a esta URL de webhook, incluidos los campos email, phone_number y sms_consent que se usan a continuación. Sigue la documentación de esa aplicación para configurar su webhook saliente.
  2. Antes de hacer pruebas, tendrás que enviar datos de prueba al webhook. Consulta nuestra guía sobre Cómo enviar datos de prueba a Zapier para obtener más información. Asegúrate de dar formato a los números de teléfono en formato E.164, incluido el signo + y el código de país, al enviar datos de prueba.
  3. Una vez que hayas enviado los datos de prueba al webhook, haz clic en Probar activador (en la pestaña Prueba).
  1. Si la solicitud se realiza correctamente, verás un mensaje de éxito y los datos de prueba se mostrarán debajo del mensaje de éxito, de forma similar al ejemplo siguiente:
  1. Cuando el activador funcione, haz clic en Continuar con el registro seleccionado.

Configura la acción de Zapier

  1. Añade un paso de acción y, a continuación, busca y selecciona Code by Zapier.
  1. En el menú desplegable Event, selecciona Run Python.
  1. Haz clic en Continuar.

Configura la asignación de campos y crea la lógica del script

  1. En Datos de entrada, asigna email, phone_number y sms_consent a los campos correspondientes en los datos de prueba. Introduce las claves exactamente como se muestran. El campo name en los datos de ejemplo no se utiliza en este script.

Datos de entrada

Datos de prueba mapeados

email

1. Email: <Test email>

phone_number

1. Número de teléfono: <Número de teléfono de prueba> <Test phone number>

sms_consent

1. Sms_consent: true

name

1. Nombre: <Test name>

Envía true solo para una suscripción explícita al marketing por SMS. Envía false solo para una solicitud de darse de baja de SMS: revoca el consentimiento para marketing por SMS en toda la cuenta y elimina el perfil de la lista seleccionada. No uses false para un valor de consentimiento vacío o desconocido.

  1. Añade un script como el de abajo en el cuadro de código:
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. Sustituye your-private-api-key por tu clave de API privada de Klaviyo.

Trata las claves de API privadas como si fueran contraseñas: guárdalas en un lugar seguro y nunca las expongas al público.

  1. Reemplaza LIST_ID en ambas ubicaciones por el ID de lista de Klaviyo. En Klaviyo, ve a Audiencia > Listas y segmentos, abre la lista y selecciona Configuración > Detalles para copiar el ID de lista.
  2. Revisa Ajustes > Consentimiento > Proceso de suscripción de esa lista. Para suscribirse sin una confirmación, selecciona Suscripción única y haz clic en Guardar. Con doble confirmación de registro, completa cualquier confirmación por SMS que se envíe a tu número de prueba antes de comprobar la suscripción.
  3. Haz clic en Continuar y, después, haz clic en Probar paso.
  4. Comprueba que el resultado muestre status_code 202. Esto significa que Klaviyo aceptó la solicitud para su procesamiento; no confirma que el consentimiento haya terminado de actualizarse. Se espera un cuerpo de respuesta vacío.
  1. En Klaviyo, comprueba que el perfil de prueba se haya añadido a la lista seleccionada, luego abre el perfil y confirma que esté suscrito al marketing por SMS. Si se envió un mensaje de confirmación, completa primero esa confirmación.
  1. Prueba la ruta de darse de baja con el mismo perfil de prueba: envía una nueva solicitud de webhook con sms_consent establecido en false, selecciona ese nuevo registro de activación en Zapier y vuelve a probar el paso de código. Confirma en Klaviyo que el perfil se ha dado de baja del marketing por SMS y se ha eliminado de la lista seleccionada.
  2. Una vez que ambas pruebas se hayan realizado correctamente, haz clic en Publicar para publicar tu Zap. Si una prueba no se realiza correctamente, consulta nuestros consejos de solución de problemas para problemas comunes.

Adapta el ejemplo para el consentimiento de email

Para una versión solo de email de este Zap:

  1. Asigna una entrada de email_consent desde la fuente y luego reemplaza sms_consent por email_consent en todo el script. Usa true para un consentimiento explícito de marketing por email y false para una solicitud de darse de baja del email.
  2. En ambos payloads de solicitud, reemplaza la clave sms en subscriptions por email. Conserva el campo email del destinatario y elimina el campo phone_number de ambos payloads.
  3. Prueba ambas rutas de consentimiento de email antes de publicar la versión de email del Zap. Comprueba el consentimiento de email en el perfil y completa cualquier confirmación de suscripción a email enviada durante la prueba de suscripción.

Consejos para solucionar problemas

A continuación se indican problemas habituales con los que puedes encontrarte al configurar el webhook de Zapier. Si encuentras cualquier otro problema, puedes ponerte en contacto con Klaviyo Community para obtener más orientación.

EOL mientras se analizaba el literal de cadena

Si ves este error, te falta una comilla alrededor de una de tus variables. Comprueba el ID de la lista y la clave de API privada para asegurarte de que estén rodeados por comillas en ambos lados.

SyntaxError: sintaxis no válida

Si ves este error, comprueba que los saltos de línea, la sangría, las comillas y los corchetes del código coinciden con el ejemplo. En concreto, las asignaciones de url y payload deben estar en líneas separadas. Las líneas que empiezan por # son comentarios válidos de Python y no es necesario eliminarlas.

Recursos adicionales

¿Te ha resultado útil este artículo?
Utiliza este formulario solo para enviar comentarios sobre el artículo. Más información sobre cómo contactar con el servicio de asistencia.

Descubre más sobre Klaviyo

Klaviyo Community
Conecta con compañeros, socios y expertos de Klaviyo para encontrar ideas, compartir información y resolver todas tus dudas.
Socios
Contrata a un experto certificado por Klaviyo para ayudarte con una tarea específica o para la gestión continua de marketing.
Asistencia

Accede al servicio de asistencia a través de tu cuenta.

Asistencia por correo electrónico (prueba gratuita y cuentas de pago) Disponible 24/7

Asistencia por chat/virtual
La disponibilidad varía según la ubicación y el tipo de plan