Você precisa ser Owner da conta (só o Owner gera a chave) e o contato precisa existir no AttendTo: cada pedido é casado com um contato pelo telefone ou e-mail. Garanta a carteira antes, importando um CSV na Base de Contatos, ou deixe os contatos nascerem das conversas do WhatsApp. Prefere começar sem programar? O Monitor também aceita importação de pedidos por CSV.
No painel, abra Integrações (menu lateral) e, no cartão "Receber pedidos", clique em Gerar chave. Copie e guarde na hora: por segurança ela aparece uma única vez e depois só em versão mascarada. Gerar de novo invalida a anterior imediatamente.
Trate a chave como uma senha: ela vive apenas no seu servidor, nunca em site, aplicativo ou repositório público.
Troque SUA_CHAVE e use um telefone ou e-mail que exista nos seus contatos:
curl -X POST https://api.attendto.com.br/api/integrations/orders \
-H "X-Api-Key: SUA_CHAVE" \
-H "Content-Type: application/json" \
-d '{"orders":[{"external_id":"PED-1001","amount_cents":18990,"phone":"5511999990001","status":"pago","ordered_at":"2026-06-15"}]}'Resposta esperada:
{
"received": 1,
"imported": 1,
"updated": 0,
"matched_customers": 1,
"invalid": 0,
"errors": []
}Abra o Monitor de sucesso e veja o pedido refletido nos segmentos.
Em tempo real (dispare o envio quando o pedido é criado ou pago) ou por rotina (um job a cada 15 a 60 minutos envia os pedidos novos ou alterados, em lotes de 100 a 500).
O envio é idempotente por external_id: reenviar o mesmo pedido nunca duplica, apenas atualiza. Serve inclusive para mudar o status de "pendente" para "pago". Na dúvida, reenvie.
| Campo | Obrigatório | Descrição |
|---|---|---|
| external_id | sim | O ID do pedido no seu sistema. É a chave da idempotência: reenviar o mesmo ID atualiza, nunca duplica. |
| amount_cents | sim | Valor total em centavos (inteiro). R$ 189,90 vira 18990. Alternativa: "amount" como texto ("189,90"). |
| phone / email | pelo menos um | Casa o pedido com o contato. Telefone com DDI e DDD (ex.: 5511999990001). |
| status | não | Padrão "pago". Aceita "pendente"/"aberto" e "cancelado"/"estornado"/"reembolsado", em português ou inglês. |
| ordered_at | não | Data do pedido: ISO (2026-06-15, com ou sem hora) ou dd/mm/aaaa. Vazio usa a data do envio. |
| currency | não | Padrão "BRL". |
| items | não | Itens do pedido: {"sku","title","quantity","unit_price_cents"}. Com SKU cadastrado em Ofertas, o produto é vinculado e o estoque baixa em pedidos pagos. |
Cada erro vem com o índice do item no lote; os demais pedidos são processados normalmente.
| Motivo | O que fazer |
|---|---|
| external_id ausente | Envie o ID do pedido do seu sistema. |
| amount_cents/amount inválido | O valor precisa ser positivo e em centavos no amount_cents. |
| cliente não encontrado (telefone/e-mail) | O contato ainda não existe no AttendTo. Importe sua carteira na Base de Contatos ou confira o formato do telefone (DDI+DDD). |
| ordered_at inválido | Use data ISO ou dd/mm/aaaa. |
| external_id repetido no lote | O mesmo pedido apareceu duas vezes na mesma requisição. |
Na mesma tela de Integrações, cadastre uma URL do seu sistema para receber eventos em tempo real:
order.imported — pedidos recebidos ou atualizados pela integraçãolead.hot — um lead esquentou na qualificaçãoconversation.handoff — uma conversa foi transferida para uma pessoa do seu timelead.opted_out — um contato pediu para não receber mais mensagensDúvidas na primeira integração? Fale com a gente pelo chat do painel — nossa equipe acompanha com você.
Abrir Integrações no painel