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
httpspú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.Enviar numa Server Action
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.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 webhookmessage.status_updated. Se você precisa consultar sob demanda (tela de suporte, reconciliação), use arara.messages.get:
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.
Idempotência
Em rotas que enviam mensagem (Server Action, handler de webhook que responde ao cliente), passeidempotencyKey. O SDK envia no header Idempotency-Key:
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.