Cómo enviar el consentimiento a Klaviyo a través de Zapier
Objetivos del artículo
Descubre cómo 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 correo electrónico.
Los pasos a continuación te ayudarán a crear un Zap con un webhook (también llamado catch hook) que activa una acción de script de Python. El ejemplo actualiza el consentimiento para marketing por SMS. Incluir una dirección de correo electrónico en la solicitud no suscribe el perfil al marketing por correo electrónico.
Esta configuración requiere un plan de Zapier de pago que incluya webhook de Zapier.
Acerca de las integraciones
Esta integración no cuenta con el soporte completo de Klaviyo, pero se puede usar como una solución alternativa si es necesario. Recomendamos usar esta integración solo si hay desarrolladores en tu equipo que puedan darle soporte.
Esta guía usa 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 punto de conexión de Klaviyo; específicamente, los puntos de conexión Suscribirse a perfiles y Cancelar la suscripción de perfiles.
Antes de empezar
Configura SMS en Klaviyo con un número de envío del país de la persona destinataria de prueba. Usa un número de celular real y una dirección de correo electrónico 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 administrar las claves de API de tu cuenta.
Si la cuenta usa restricción de edad por SMS, amplía la solicitud de suscribirse para incluir age_gated_date_of_birth antes de usar este ejemplo. El siguiente ejemplo no recopila ni envía una fecha de nacimiento.
Configurar webhook de Zapier
Para consultar las instrucciones de configuración actuales de Zapier, revisa sus guías sobre activadores de webhook y acciones de código de Python.
- Inicia sesión en tu cuenta de Zapier.
- En la página principal de Zapier, selecciona +Crear y luego selecciona Zap.
- Ingresa un nombre para tu nuevo Zap (p. ej., webhook de Klaviyo).
- Haz clic en el paso Activador y luego busca y selecciona webhooks de Zapier.

- En el menú desplegable de Evento, selecciona Catch Hook.

- Haz clic en Continuar. Para los datos de prueba planos que se usan en esta guía, deja Elegir una clave secundaria en blanco y luego haz clic en Continuar de nuevo.
- Selecciona la pestaña Prueba.
- Copia la URL del webhook que Zapier proporciona para enviar las solicitudes.

- Configura la app que recopila el consentimiento para enviar los cambios de consentimiento a esta URL de webhook, incluidos los campos
email,phone_numberysms_consentque se usan a continuación. Sigue la documentación de esa app para configurar el webhook saliente. - Antes de realizar pruebas, tendrás que enviar datos de prueba a tu 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.
- Una vez que hayas enviado los datos de prueba al webhook, haz clic en Probar activador (en la pestaña Prueba).

- 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 que aparece a continuación:

- Una vez que el activador esté funcionando, haz clic en Continuar con el registro seleccionado.
Configurar una acción de Zapier
- Agrega un paso de acción y, luego, busca y selecciona Code by Zapier.

- En el menú desplegable Event, selecciona Run Python.

- Haz clic en Continuar.
Configura la asignación de campos y crea la lógica del script
- En Input Data, asigna
email,phone_numberysms_consenta los campos correspondientes en los datos de prueba. Ingresa las claves exactamente como se muestran. El camponameen los datos de ejemplo no lo usa este script.

Datos de entrada | Datos de prueba asignados |
| 1. Correo electrónico: <Correo electrónico de prueba> <Test email> |
| 1. Número de teléfono: <Número de teléfono de prueba> <Test phone number> |
| 1. Sms_consent: true |
| 1. Nombre: <Test name> |
Envía true solo cuando haya un consentimiento explícito para marketing por SMS. Envía false solo cuando haya una solicitud para cancelar la suscripción a SMS: revoca el consentimiento de marketing por SMS en toda la cuenta y elimina el perfil de la lista seleccionada. No uses false con un valor de consentimiento vacío o desconocido.
- Agrega un script como el que se muestra a continuación al cuadro de código:
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
}- Reemplaza
your-private-api-keycon la 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.
- Reemplaza
LIST_IDen ambos lugares 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. - Revisa Configuración > Consentimiento > Proceso de suscripción de esa lista. Para suscribirse sin una confirmación, selecciona Opt-in único y haz clic en Guardar. Con la doble confirmación de suscripción, completa cualquier confirmación por SMS que se envíe a tu número de prueba antes de comprobar la suscripción.
- Haz clic en Continuar y luego haz clic en Probar paso.
- Verifica que la salida muestre
status_code202. Esto significa que Klaviyo aceptó la solicitud para procesarla; no confirma que el consentimiento haya terminado de actualizarse. Se espera un cuerpo de respuesta vacío.

- En Klaviyo, revisa que el perfil de prueba se haya agregado a la lista seleccionada, luego abre el perfil y confirma que esté suscrito a marketing por SMS. Si se envió un mensaje de confirmación, completa esa confirmación primero.

- Prueba la ruta para cancelar la suscripción con el mismo perfil de prueba: envía una nueva solicitud de webhook con
sms_consentconfigurado enfalse, selecciona ese nuevo registro de activación en Zapier y vuelve a probar el paso de código. Confirma en Klaviyo que el perfil tenga que cancelar la suscripción al marketing por SMS y se haya eliminado de la lista seleccionada. - Cuando ambas pruebas sean exitosas, haz clic en Publicar para publicar tu Zap. Si una prueba no es exitosa, consulta nuestros consejos para la solución de problemas sobre problemas comunes.
Adapta el ejemplo para el consentimiento de correo electrónico
Para ver una versión solo de correo electrónico de este Zap:
- Asigna una entrada
email_consentde tu fuente y, después, reemplazasms_consentporemail_consenten todo el script. Usatruepara un consentimiento explícito de marketing por correo electrónico yfalsepara una solicitud de cancelar la suscripción del correo electrónico. - En ambas cargas útiles de solicitud, reemplaza la clave
smsensubscriptionsporemail. Conserva el campoemaildel destinatario y elimina el campophone_numberde ambas cargas útiles. - Prueba ambas rutas de consentimiento de correo electrónico antes de publicar la versión de correo electrónico de tu Zap. Verifica el consentimiento de correo electrónico en el perfil y completa cualquier confirmación de suscripción por correo electrónico que se envíe durante la prueba de suscribirse.
Consejos de solución de problemas
Los siguientes son problemas comunes con los que podrías encontrarte al configurar el webhook de Zapier. Si encuentras cualquier otro problema, puedes contactar con la Klaviyo Community para obtener más orientación.
EOL mientras se analizaba el literal de cadena
Si ves este error, falta una comilla alrededor de una de las variables. Revisa el ID de la lista y la clave de API privada para asegurarte de que estén entre comillas por ambos lados.
SyntaxError: sintaxis no válida
Si ves este error, revisa que los saltos de línea, la sangría, las comillas y los corchetes del código coincidan con el ejemplo. En particular, las asignaciones url y payload deben estar en líneas separadas. Las líneas que comienzan con # son comentarios válidos de Python y no es necesario eliminarlas.
Recursos adicionales
- Cómo administrar las claves de API de tu cuenta
Descubre cómo acceder y gestionar las claves de API de tu cuenta de Klaviyo.
- Cómo enviar datos de prueba a Zapier
Aprende cómo enviar datos de prueba a Zapier mediante una solicitud POST cuando crees un webhook para enviar el consentimiento de correo electrónico y SMS a Klaviyo.