Como integrar o ERP com site e e-commerce
O que precisa trafegar entre loja e ERP, estoque, pedido, nota e status, e como evitar venda de produto que já acabou ou pedido duplicado no ERP.
A integração entre e-commerce e ERP tem quatro fluxos: catálogo e preço descem do ERP para a loja, estoque sincroniza nos dois sentidos, pedido sobe da loja para o ERP e o status volta para o cliente. O erro mais caro é sincronizar estoque em lote de hora em hora, é assim que se vende produto que já acabou.
Integrar ERP e e-commerce é sincronizar quatro fluxos: catálogo e preço descem do ERP para a loja, estoque precisa refletir a realidade nos dois lados, pedido sobe da loja para o ERP e status e nota voltam para o cliente. Cada um tem um dono, uma frequência e um modo próprio de falhar. Quem trata os quatro como "uma integração" só descobre o problema quando vende o que não tem.
Quem é dono de cada dado
Antes de qualquer código, defina a fonte da verdade de cada informação. Sem isso, dois sistemas sobrescrevem um ao outro para sempre.
| Dado | Fonte da verdade | Direção |
|---|---|---|
| Cadastro de produto, SKU, ficha técnica | ERP | ERP → Loja |
| Preço de tabela | ERP | ERP → Loja |
| Preço promocional da loja | Loja | Loja → ERP (informativo) |
| Estoque físico | ERP | ERP → Loja |
| Estoque reservado por pedido | Loja | Loja → ERP |
| Pedido | Loja | Loja → ERP |
| Status de separação e envio | ERP/WMS | ERP → Loja |
| Nota fiscal | ERP | ERP → Loja |
| Cadastro do cliente | Depende | Definir explicitamente |
O cadastro de cliente é o campo de batalha mais comum. Se a loja permite compra sem login e o ERP exige CPF/CNPJ único, você vai acabar com clientes duplicados. Defina a chave de unicidade (documento, normalmente) e a regra de mesclagem antes de ligar o fluxo.
Estoque: onde a integração costuma quebrar
Estoque é o fluxo mais sensível porque o erro tem custo direto: ou você vende o que não tem, ou deixa de vender o que tem.
Não sincronize em lote longo. Uma carga de hora em hora significa que, no pior caso, a loja opera com 59 minutos de defasagem. Em item de giro rápido ou em campanha, isso é venda cancelada e cliente irritado.
O padrão que funciona:
- Baixa por evento, toda movimentação no ERP dispara notificação para a loja
- Reserva no momento do carrinho, não na confirmação do pagamento
- Expiração da reserva, carrinho abandonado devolve o item ao estoque depois de um prazo
- Reconciliação periódica, uma vez por dia, comparar totais e alertar divergência
- Reserva de segurança, em SKUs críticos, esconder algumas unidades da loja como colchão
O ponto 4 é o que salva. Mesmo com evento, mensagens se perdem. Uma rotina noturna que compara o estoque dos dois lados e reporta as diferenças transforma um erro invisível em um alerta.
E há o caso do estoque multicanal: loja própria, marketplace, PDV físico. Vender o mesmo item em quatro canais sem um controlador central de reserva é garantia de overselling. Quando existem mais de dois canais, vale um intermediário (hub) que centralize o saldo disponível.
Pedido: idempotência é obrigatória
Quando a loja envia o pedido para o ERP, a rede pode falhar depois da gravação e antes da resposta. A loja não sabe se gravou, tenta de novo, e o ERP cria um segundo pedido.
A solução é chave de idempotência: a loja gera um identificador único do pedido e o envia junto. O ERP guarda essa chave; se receber a mesma de novo, devolve o resultado original em vez de gravar outro registro. Isso não é refinamento, é requisito básico, e é a causa número um de pedidos em dobro em integrações mal feitas.
O fluxo completo do pedido precisa também de:
- Fila com retentativa, se o ERP está fora, o pedido não se perde, fica na fila
- Backoff progressivo, tentar de novo em intervalos crescentes, não em loop
- Fila de falha definitiva, depois de N tentativas, o caso vai para revisão humana com o motivo registrado
- Correspondência de códigos, SKU da loja, código do ERP, EAN e código de marketplace precisam de uma tabela de/para clara
Nota fiscal: quem emite e o que volta
Na grande maioria dos casos, quem emite é o ERP. Ele já tem cadastro fiscal, NCM, CFOP, regime tributário e histórico contábil. Duplicar essa lógica na loja é criar duas verdades fiscais.
O que a loja precisa receber de volta:
- Número e série da nota
- Chave de acesso
- Link do DANFE ou do XML
- Status de autorização
E precisa lidar com rejeição da SEFAZ. A nota nem sempre é autorizada de primeira: cadastro incompleto, NCM inválido, inscrição estadual irregular. Se a loja não trata isso, o pedido fica preso num estado indefinido e ninguém percebe até o cliente ligar. O tratamento correto é status explícito de "nota rejeitada", com motivo legível e alerta para o time fiscal.
Como escolher a forma de integrar
| Abordagem | Quando usar | Cuidado |
|---|---|---|
| API nativa do ERP | ERP moderno com documentação | Verificar limites de requisição |
| Webhook do e-commerce | Plataformas como Shopify, Nuvemshop, VTEX | Precisa de reentrega em caso de falha |
| Middleware próprio | Vários canais ou regras específicas | Vira sistema com manutenção própria |
| Hub de integração pronto | Cenário padrão, pressa | Menos flexível, custo recorrente |
| Arquivo (CSV/XML) agendado | ERP legado sem API | Só para dado que tolera defasagem |
| Acesso direto ao banco | Último recurso | Quebra em atualização do ERP |
Middleware próprio faz sentido quando existem regras que nenhum hub cobre, política de preço por canal, kits que consomem componentes diferentes, estoque por lote. Mas trate-o como um sistema: com log, monitoramento e alguém responsável.
O que monitorar depois de ligar
Integração é o tipo de coisa que funciona por meses e falha numa quinta-feira sem avisar. O painel mínimo:
- Pedidos pendentes de envio ao ERP, se o número cresce, algo travou
- Idade do item mais antigo na fila, mais reveladora que a contagem total
- Divergência de estoque na reconciliação diária
- Notas rejeitadas nas últimas 24 h
- Última sincronização bem-sucedida por fluxo
Esse último item é o que detecta a falha silenciosa: uma integração que parou de rodar não gera erro, gera ausência. Um alerta simples de "faz 3 horas que nenhum pedido entrou" pega problemas que nenhum log de exceção pegaria.
Perguntas frequentes
Com que frequência o estoque deve sincronizar com o ERP?
Idealmente por evento, no momento em que a quantidade muda, e não em lote de tempo em tempo. Se só houver lote, use intervalos curtos e uma reserva de segurança nos itens de giro rápido para reduzir o risco de venda sem estoque.
A nota fiscal deve ser emitida pela loja ou pelo ERP?
Pelo ERP, na maioria dos casos. Ele já tem cadastro fiscal, regras tributárias e o histórico contábil. A loja apenas dispara o evento de venda e recebe de volta a chave de acesso e o link do DANFE para mostrar ao cliente.
Como evitar pedido duplicado na integração?
Com chave de idempotência, cada pedido carrega um identificador único da loja, e o ERP recusa uma segunda gravação com a mesma chave. Sem isso, qualquer retentativa por timeout vira pedido em dobro.
Tem um processo que consome o time?
Me conta como funciona hoje. Se der para automatizar, eu te digo por onde começar — a conversa de diagnóstico não é cobrada.
Natiam Gabriel é AI Engineer & Full-Stack Developer e fundador da Retti Tech, estúdio de desenvolvimento de software que atende empresas em todo o Brasil. Constrói sistemas web sob medida, automações e integrações, com ou sem inteligência artificial, do levantamento de requisitos até a operação em produção. Mais de 20 empresas usam em produção os sistemas que desenvolveu.