Como enviar consentimento para a Klaviyo via Zapier
O que você vai aprender
Saiba como criar um webhook personalizado do Zapier para enviar consentimento de SMS para a Klaviyo. Você pode modificar facilmente as instruções deste guia para enviar consentimento por e-mail também.
As etapas abaixo vão ajudar você a criar um Zap usando um webhook (também chamado de catch hook) que aciona uma ação de script em Python. O exemplo atualiza o consentimento de marketing por SMS. Incluir um endereço de e-mail na solicitação não inscreve o perfil no marketing por e-mail.
Essa configuração exige um plano pago do Zapier que inclua webhook do Zapier.
Sobre a integração
Essas integrações não são totalmente compatíveis com a Klaviyo, mas podem ser usadas como alternativa, se necessário. Recomendamos usar essas integrações apenas se você tiver desenvolvedores na sua equipe que possam oferecer suporte.
Este guia usa uma ação de código do Zapier que executa um script em Python quando o acionador é detectado. Com esta solução, você pode mapear campos para os tipos de dados que os ponto de extremidade do Klaviyo exigem, especificamente os ponto de extremidade de Inscrever perfis e Cancelar inscrição de perfis.
Antes de começar
Configure o SMS no Klaviyo com um número de envio para o país do destinatário de teste. Use um número de celular real e um endereço de e-mail que você controla: testar a ação do código altera o consentimento na sua conta do Klaviyo.
Tenha uma chave de API privada do Klaviyo com permissões de lists:write, profiles:write e subscriptions:write. Veja como gerenciar as chaves de API da sua conta.
Se a sua conta usar restrição de idade por SMS, amplie a solicitação de inscrever-se para incluir age_gated_date_of_birth antes de usar este exemplo. O exemplo abaixo não coleta nem envia uma data de nascimento.
Configurar webhook do Zapier
Para conferir as instruções atuais de configuração do Zapier, consulte os guias sobre gatilhos de webhook e ações de código Python.
- Faça login na sua conta do Zapier.
- Na página principal do Zapier, selecione +Criar e, em seguida, selecione Zap.
- Digite um nome para seu novo Zap (por exemplo, webhook da Klaviyo).
- Clique na etapa Gatilho e, em seguida, pesquise e selecione Webhooks do Zapier.

- No menu suspenso Evento, selecione Catch Hook.

- Clique em Continuar. Para os dados de teste simples usados neste guia, deixe Escolher uma chave filha para separar em branco e clique em Continuar novamente.
- Selecione a aba Teste.
- Copie o URL do webhook que o Zapier fornece para que você envie suas solicitações.

- Configure o aplicativo que coleta consentimento para enviar alterações de consentimento para este URL de webhook, incluindo os campos
email,phone_numberesms_consentusados abaixo. Siga a documentação desse aplicativo para configurar o webhook de saída. - Antes de testar, você precisará enviar dados de teste para o seu webhook. Confira nosso guia sobre Como enviar dados de teste para o Zapier para mais informações. Ao enviar dados de teste, certifique-se de formatar números de telefone no formato E.164, incluindo o sinal de + e o código do país.
- Depois de enviar os dados de teste para o webhook, clique em Testar acionamento (na guia Teste).

- Se a solicitação for bem-sucedida, você verá uma mensagem de sucesso e os dados de teste serão preenchidos abaixo da mensagem de sucesso, semelhante ao exemplo abaixo:

- Quando o gatilho estiver funcionando, clique em Continuar com o registro selecionado.
Configurar a ação do Zapier
- Adicione uma etapa de ação e depois pesquise e selecione Code by Zapier.

- No menu suspenso Evento, selecione Executar Python.

- Clique em Continuar.
Configure o mapeamento de campos e crie a lógica do script
- Em Dados de entrada, mapeie
email,phone_numberesms_consentpara os campos correspondentes nos seus dados de teste. Insira as chaves exatamente como mostrado. O camponamenos dados de exemplo não é usado por este script.

Insira dados | Dados de teste mapeados |
| 1. E-mail: <Test email> |
| 1. Número de telefone: <Número de telefone de teste> <Test phone number> |
| 1. Sms_consent: true |
| 1. Nome: <Test name> |
Envie true somente para um aceite explícito de marketing por SMS. Envie false somente para uma solicitação de cancelar inscrição de SMS: isso revoga o consentimento de marketing por SMS em toda a sua conta e remove o perfil da lista selecionada. Não use false para um valor de consentimento vazio ou desconhecido.
- Adicione um script como o abaixo na caixa 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
}- Substitua
your-private-api-keypela sua chave de API privada da Klaviyo.
Trate as chaves de API privadas como senhas: armazene-as em um local seguro e nunca as divulgue ao público.
- Substitua
LIST_IDem ambos os locais pelo ID da sua lista Klaviyo. No Klaviyo, acesse Público > Listas e segmentos, abra a lista e selecione Configurações > Detalhes para copiar o ID da lista. - Revise Configurações > Consentimento > Processo de opt-in dessa lista. Para se inscrever sem uma confirmação, selecione Inscrição em uma etapa e clique em Salvar. Com inscrição em duas etapas, conclua qualquer confirmação de SMS enviada ao seu número de teste antes de verificar a inscrição.
- Clique em Continuar e, em seguida, clique em Testar etapa.
- Verifique se a saída mostra
status_code202. Isso significa que a Klaviyo aceitou a solicitação para processamento; isso não confirma que a atualização do consentimento foi concluída. É esperado um corpo de resposta vazio.

- No Klaviyo, verifique se o seu perfil de teste foi adicionado à lista selecionada. Depois, abra o perfil e confirme se ele está inscrito no marketing por SMS. Se uma mensagem de confirmação foi enviada, conclua essa confirmação primeiro.

- Teste o caminho de cancelar inscrição com o mesmo perfil de teste: envie uma nova solicitação de webhook com
sms_consentdefinido comofalse, selecione esse novo registro de acionamento no Zapier e teste a etapa de código novamente. Confirme no Klaviyo que o perfil cancelou inscrição no marketing por SMS e foi removido da lista selecionada. - Depois que ambos os testes forem bem-sucedidos, clique em Publicar para publicar seu Zap. Se um teste não for bem-sucedido, confira nossas dicas de solução de problemas para questões comuns.
Adapte o exemplo para consentimento de e-mail
Para uma versão somente por e-mail deste Zap:
- Mapeie uma entrada
email_consentda sua origem e, em seguida, substituasms_consentporemail_consentem todo o script. Usetruepara uma adesão explícita ao marketing por e-mail efalsepara uma solicitação de cancelar inscrição de e-mail. - Em ambos os payloads de solicitação, substitua a chave
smsemsubscriptionsporemail. Mantenha o campoemaildo destinatário e remova o campophone_numberde ambos os payloads. - Teste ambos os caminhos de consentimento de e-mail antes de publicar a versão de e-mail do seu Zap. Verifique o consentimento de e-mail no perfil e conclua qualquer confirmação de opt-in de e-mail enviada durante o teste de inscrever-se.
Dicas para solucionar problemas
A seguir, estão alguns problemas comuns que você pode encontrar ao configurar o webhook do Zapier. Se você encontrar qualquer outro problema, pode entrar em contato com a Klaviyo Community para receber mais orientações.
Fim de linha ao analisar literal de string
Se você vir esse erro, então está faltando uma aspa em torno de uma das suas variáveis. Verifique o ID da lista e a chave de API privada para garantir que eles estejam entre aspas dos dois lados.
SyntaxError: sintaxe inválida
Se você vir esse erro, verifique se as quebras de linha, o recuo, as aspas e os colchetes do código correspondem ao exemplo. Em particular, as atribuições url e payload devem estar em linhas separadas. As linhas que começam com # são comentários válidos de Python e não precisam ser removidas.
Recursos adicionais
- Como gerenciar as chaves de API da sua conta
Como acessar e gerenciar as chaves de API da sua conta Klaviyo.
- Como enviar dados de teste para o Zapier
Saiba como enviar dados de teste para o Zapier por uma solicitação POST ao criar um webhook para enviar consentimento de e-mail e SMS para a Klaviyo.