Skip to main content
Ao final desta página, seu projeto Next.js envia um template por uma Server Action e registra o status de cada mensagem que chega pelo webhook.

Antes de começar

  • Node 18 ou mais novo e Next 15 ou mais novo, com App Router. No Pages Router o caminho é análogo.
  • O SDK instalado e uma chave de API em ARARA_API_KEY. Siga SDK Node.
  • Um template aprovado. Os exemplos usam confirmacao_pedido. Veja Templates.
  • Uma URL https pública para o webhook. Em desenvolvimento, veja Testar localmente.
O SDK roda no runtime Node do Next.js (route handlers e Server Actions). No Edge Runtime, chame a API REST com fetch: o SDK depende do axios, que não roda em edge.

Instância do SDK

Crie uma instância única. Em desenvolvimento, o hot reload recriaria o cliente a cada alteração.
As demais opções do cliente estão em SDK Node.

Enviar numa Server Action

A API responde 202 com o status inicial, por exemplo PENDING. A entrega chega depois, pelo webhook. No client component:

Webhook

1

Guarde o secret

No painel, abra Webhooks, gere o secret e copie o valor para o .env.local:
2

Crie o route handler

O handler lê o corpo bruto, verifica a assinatura e registra o ID e o status de cada mensagem.
Troque os console.info pela gravação no seu banco. data.id é o mesmo ID devolvido no envio. data.status vem em minúsculas: queued, sent, delivered, read, failed.
3

Cadastre a URL

Na mesma tela do painel, informe https://seu-dominio.com/api/webhooks/arara e dispare o evento de teste.
A assinatura depende dos bytes exatos do corpo. Use req.text() antes de verificar. Com req.json() a conta não fecha.
Responda 2xx rápido. Quando a entrega falha, a Arara tenta de novo, então o handler precisa aguentar o mesmo evento mais de uma vez. Use o header X-Arara-Delivery-Id para deduplicar. Prazos e intervalos estão em Entrega.

Tipos do evento

O SDK exporta guards de tipo para o corpo do evento:
O tipo MessageStatusData do SDK 2.0.0 declara messageId, mas a API envia nesse campo o UUID interno. O id ara_msg_... (o mesmo devolvido no envio) está em data.id, que o tipo não declara: leia-o com um cast, por exemplo (payload.data as { id?: string }).id.

Consultar status de uma mensagem

Para gravar o status, prefira o webhook message.status_updated. Se você precisa consultar sob demanda (tela de suporte, reconciliação), use arara.messages.get:
Aqui status vem em maiúsculas (PENDING, SENT, DELIVERED, READ, FAILED…), diferente do webhook, que usa minúsculas. Quando a mensagem falha, reason traz o motivo.
GET /v1/messages/{id} só devolve mensagens enviadas pelo mesmo usuário dono da chave. Mensagem enviada por outro membro da organização responde 403. A chave também precisa da permissão READ (ou ADMIN).

Idempotência

Em rotas que enviam mensagem (Server Action, handler de webhook que responde ao cliente), passe idempotencyKey. O SDK envia no header Idempotency-Key:
Derive a chave do seu evento (id do pedido), não de randomUUID(): assim uma nova tentativa da função reaproveita a mesma chave. A mesma chave devolve a mensagem original sem novo envio. Em POST /v1/messages isso vale mesmo se o payload mudar (a API não compara destinatário nem variáveis), então nunca reaproveite a chave para outra mensagem.

Próximos passos

Eventos

Corpo e campos de cada evento.

Webhooks

Retentativas, deduplicação e teste local.

SDK Node

Métodos disponíveis na versão publicada.

Receitas

Carrinho abandonado, confirmação de pedido, suporte.