Skip to main content
Receba notificações em tempo real sobre o status de entrega das mensagens.

Fluxo Completo

Implementação Recomendada

1. Crie um endpoint idempotente

const processedEvents = new Set(); // Use um cache persistente em produção

app.post('/webhook/rcs', express.json(), (req, res) => {
  // Responda 200 imediatamente
  res.status(200).send('OK');

  const { data } = req.body;
  const eventKey = `${data.dispatchId}:${data.status}`;

  // Idempotência
  if (processedEvents.has(eventKey)) return;
  processedEvents.add(eventKey);

  // Processe de forma assíncrona
  processEvent(data).catch(console.error);
});

2. Configure no Dashboard

Vá em Configurações > Webhook de Status e configure a URL do seu endpoint.

3. Atualize seu banco de dados

async function processEvent(data) {
  const { uid, status, phone, failureReason } = data;

  await db.query(
    `UPDATE mensagens
     SET status = $1, updated_at = NOW(), failure_reason = $2
     WHERE external_id = $3`,
    [status, failureReason, uid]
  );

  // Notifique seus sistemas internos
  if (status === 'failed') {
    await notifyFailure(uid, phone, failureReason);
  }
}

Tratando Falhas

CenárioAção Recomendada
Webhook retorna 5xxRetry automático (até 5 tentativas)
Webhook timeout (>10s)Retry automático
Webhook retorna 4xxNão será retentado — verifique seus logs
Mensagem duplicadaIgnore via idempotência (dispatchId + status)

Escopo de Webhooks

Configure o escopo para controlar quais campanhas geram webhooks:
EscopoDescrição
allWebhooks para todas as campanhas (dashboard + API)
api_onlyWebhooks apenas para campanhas disparadas via API
Use api_only se você só precisa receber status de campanhas disparadas programaticamente, evitando ruído de campanhas manuais.