Cadastro no App (In-App Signup)

Cadastro no App (In-App Signup)

POST /v1/accounts/{id}/signups — gere deep links de opt-in de marketing (wa.me) para contatos optarem em receber suas mensagens sem enviar nada antes.

Gera um deep link de opt-in de marketing (wa.me/{telefone}/signup/{id}) — o cliente final clica e opta em receber mensagens sem precisar mandar mensagem primeiro pra sua empresa. Resolve o “cold start” de opt-in pra campanhas (sem isso, só dá pra usar template pra quem já é contato). Não exige nenhuma configuração prévia de conta na Meta.

privacyPolicyUrl é a política de privacidade do seu negócio (qualquer URL válida aprovada pela Meta). Internamente, na primeira criação de cada WABA, a API aceita automaticamente os Termos de Serviço da Meta pra essa feature (policy.tos, valor fixo da própria Meta) — você não precisa fornecer nem configurar nada sobre isso.

Quando o contato aceita o link, você recebe um webhook user.preferences_updated com value: "signup" + signup_id (qual link foi usado). Registre um endpoint em POST /v1/webhooks com esse evento habilitado pra saber em tempo real quando alguém opta em receber suas mensagens. Veja o payload completo em Eventos de webhook.

POST /v1/accounts/{id}/signups

Cria um cadastro e retorna o deep link de opt-in.

POST /v1/accounts/{id}/signups 201400401404422429

Body (JSON):

{
  "signupMessage": "Cadastre-se pra novidades!",
  "confirmationMessage": "Cadastro confirmado!",
  "privacyPolicyUrl": "https://suaempresa.com/privacidade",
  "promoCode": "PROMO10",
  "displayName": "Minha Empresa",
  "websiteUrl": "https://suaempresa.com"
}
Campo Tipo Obrigatório Regras
signupMessage string Sim mensagem mostrada antes do opt-in
confirmationMessage string Sim mensagem enviada após confirmar. Se usar {{promo_code}}, promoCode vira obrigatório
privacyPolicyUrl string Sim política de privacidade do seu negócio — precisa ser URL aprovada pela Meta
promoCode string Não obrigatório só se confirmationMessage contém {{promo_code}}
displayName string Não
websiteUrl string Não

Resposta 201:

Resposta 201

{
"id": "su_1",
"status": "ACTIVE",
"deepLink": "https://wa.me/+5511999990000/signup/su_1"
}

Erros: 400 INVALID_BODY, 404 ACCOUNT_NOT_FOUND, 422 META_ERROR (erro retornado pela Meta — inclui ToS não aprovada), 429 (rate limit).

Exemplo

curl -X POST https://api.wablastmessage.com/v1/accounts/ckv.../signups \
-H "Authorization: Bearer wak_sua_chave" \
-H "Content-Type: application/json" \
-d '{
  "signupMessage": "Cadastre-se pra novidades!",
  "confirmationMessage": "Cadastro confirmado!",
  "privacyPolicyUrl": "https://suaempresa.com/privacidade"
}'

GET /v1/accounts/{id}/signups

Lista os cadastros criados nesta conexão.

GET /v1/accounts/{id}/signups 200401404429

Resposta 200: array com o mesmo shape do POST (id, status, deepLink).


POST /v1/accounts/{id}/signups/{signupId}

Ativa ou desativa um cadastro. A Meta não tem endpoint de delete — só dá pra desabilitar.

POST /v1/accounts/{id}/signups/{signupId} 200400401404429

Body (JSON):

{ "status": "ACTIVE" }

status aceita ACTIVE | DISABLED.

Resposta 200:

{ "success": true }
Pular para o conteúdo