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
- Seu formulário envia os dados ao seu servidor (nunca chame a API a partir do navegador: você exporia a chave).
- O servidor faz
POST /contactscomsource: "WEBSITE_FORM"e o consentimento. - Se responder
409 CONTACT_PHONE_EXISTS, use ocontactIde façaPATCH /contacts/{id}para adicionar a etiqueta da campanha. - 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:
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
# 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-Signaturecom 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.