Ir para o conteúdo
WhatsMarketingDeveloper Hub

Receitas

Padrões que se repetem em quase todas as integrações. Cada receita usa apenas o que já existe na API.

Formulário web → contato → campanha de boas-vindas

  1. Seu formulário envia os dados ao seu servidor (nunca chame a API a partir do navegador: você exporia a chave).
  2. O servidor faz POST /contacts com source: "WEBSITE_FORM" e o consentimento.
  3. Se responder 409 CONTACT_PHONE_EXISTS, use o contactId e faça PATCH /contacts/{id} para adicionar a etiqueta da campanha.
  4. No painel, uma automação com o gatilho «entra na etapa Lead nuevo» envia o modelo de boas-vindas. Não é preciso código para o envio.

Sincronizar com o seu CRM (HubSpot, Zoho, Pipedrive, Salesforce)

Do CRM para a WhatsMarketing: quando um contato é criado ou alterado no CRM, POST /contacts ou PATCH /contacts/{id}; guarde o id da WhatsMarketing em um campo personalizado do CRM para não precisar buscar toda vez.

Da WhatsMarketing para o CRM: inscreva-se em contact.created, contact.updated e contact.stage_changed. Cada evento traz o contactId e os dados básicos; peça a ficha se precisar de mais, atualize o CRM e, se a etapa mudou para «Cliente», mova o negócio no CRM.

Dica: etiquete na WhatsMarketing com o identificador do CRM (crm:12345) e filtre por tag quando precisar cruzá-los.

Aviso no Slack quando uma campanha termina

Inscreva-se em campaign.finished. O evento traz o id da campanha; peça o detalhe e publique-o com um webhook de entrada do Slack:

Node.js
app.post('/webhooks/wm', express.raw({ type: 'application/json' }), async (req, res) => {
  if (!verificar(req.body.toString(), req.header('X-WM-Signature'), SEGREDO)) return res.status(401).end();
  res.status(200).end();
  const { event, data } = JSON.parse(req.body);
  if (event !== 'campaign.finished') return;
  const r = await fetch(`https://micuenta.whatsmarketing.es/api/v1/campaigns/${data.campaignId}`, {
    headers: { Authorization: `Bearer ${process.env.WM_API_KEY}` },
  });
  const c = await r.json();
  await fetch(process.env.SLACK_WEBHOOK, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ text: `Campanha «${c.name}» concluída: ${c.stats.delivered} entregues, ${c.stats.replied} respostas.` }),
  });
});

Lançar uma campanha a partir do seu sistema

curl
# 1. Criar o rascunho
curl -X POST $API/campaigns -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" \
  -d '{"name":"Recordatorio de cita","phoneNumberId":"…","templateId":"…","variables":{"1":"{{fullName}}"}}'
# 2. Público por etiqueta
curl -X POST $API/campaigns/$ID/recipients -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d '{"tag":"cita-manana"}'
# 3. Custo antes de enviar
curl $API/campaigns/$ID/preview-cost -H "Authorization: Bearer $KEY"
# 4. Enviar agora
curl -X POST $API/campaigns/$ID/send -H "Authorization: Bearer $KEY" -H "Content-Type: application/json" -d '{"when":"now"}'

Se preview-cost disser wallet.sufficient: false, recarregue a wallet no painel antes de enviar: o envio responderia 400 «Saldo insuficiente en la wallet.».

Sem código: n8n, Make e Zapier

Enquanto não houver nós oficiais, use o nó HTTP de cada ferramenta:

  • Autenticação: cabeçalho Authorization: Bearer wm_live_… (no n8n, credencial «Header Auth»).
  • Entrada: um nó «Webhook» recebe os eventos; verifique X-WM-Signature com um nó de código (o exemplo de Webhooks serve tal como está no n8n).
  • Saída: nós HTTP com as rotas da referência.

Os modelos prontos para importar (HubSpot, Zoho, Pipedrive, formulário web, aviso de saldo no Slack) chegarão ao painel; vamos anunciá-los no changelog.