Como Sincronizar Estoque entre ERP e WooCommerce em Tempo Real sem Prejudicar a Performance

Vender produtos sem estoque disponível é um dos problemas operacionais mais dispendiosos no e-commerce. Quando uma loja WooCommerce cresce e passa a ser gerida por um ERP (como Bling, Tiny, SAP ou Senior), a atualização manual do catálogo torna-se inviável. No entanto, integrações mal estruturadas que atualizam estoques de forma síncrona diretamente na API nativa podem causar lentidão severa na loja, estouro de memória no PHP e o temido overselling (venda duplicada de itens esgotados).

O Desafio Técnico das Atualizações Síncronas

Por padrão, o WooCommerce fornece rotas na REST API (/wp-json/wc/v3/products) para atualização de dados. O problema ocorre quando o ERP envia centenas de requisições simultâneas durante horários de pico. Cada requisição síncrona força o WordPress a carregar a aplicação inteira, validar permissões, executar queries pesadas na tabela wp_postmeta (e nas tabelas de lookup do WooCommerce, como wp_wc_product_meta_lookup) e limpar caches de página.

Se dois clientes estiverem finalizando a compra do mesmo produto enquanto o ERP tenta atualizar a quantidade no banco de dados, ocorrem travamentos por concorrência (lock de tabelas) e indisponibilidade temporária do checkout.

Arquitetura Eficiente: Processamento Assíncrono com Action Scheduler

Para resolver este gargalo no ecossistema WordPress, a abordagem correta é desacoplar o recebimento da informação da execução do processamento. Em vez de processar a alteração do estoque no momento exato em que a requisição HTTP do ERP chega, utilizamos o Action Scheduler — a biblioteca robusta de enfileiramento nativa do WooCommerce.

1. Criação de um Endpoint Customizado Leve

Através da função register_rest_route, criamos um endpoint customizado que apenas valida o token da requisição e recebe o SKU e a nova quantidade. Esse endpoint não executa a alteração no banco de dados imediatamente; ele apenas adiciona o evento a uma fila background e responde HTTP 200 ao ERP em poucos milissegundos.

2. Enfileiramento e Processamento em Background

Com o evento na fila via as_schedule_single_action(), o WordPress processa a atualização em segundo plano sem impactar a navegação do usuário final.

Quando a fila executa o job, utilizamos as funções otimizadas do WooCommerce para atualizar o dado diretamente:

  • wc_get_product_id_by_sku( $sku ): Localiza rapidamente o ID do produto ou variação pelo SKU.
  • wc_update_product_stock( $product, $quantity ): Função nativa que lida adequadamente com o controle de estoque, dispara o hook woocommerce_product_set_stock e gerencia o status de ‘em estoque’ ou ‘fora de estoque’.

Em implementações que realizo para e-commerces de alto volume, esse padrão de processamento assíncrono reduz a carga do servidor em mais de 70% durante sincronizações massivas de inventário, garantindo que o checkout continue rápido e responsivo.

Fluxo de Trabalho Recomendado para Integrações

  1. Webhook no ERP: Configurar o ERP para disparar notificações via Webhook apenas quando houver alteração real de saldo de estoque, evitando requisições desnecessárias.
  2. Recepção e Validação: Endpoint no WordPress valida a assinatura da requisição para garantir a segurança da API.
  3. Fila Assíncrona: A requisição é registrada no Action Scheduler.
  4. Execução Interna: O worker do Action Scheduler processa os itens em lotes (batches), ajusta o estoque no WooCommerce e invalida o cache apenas das páginas dos produtos afetados.

Esta estrutura previne falhas de concorrência, elimina a lentidão durante a sincronização e garante que o estoque exibido na loja corresponda à realidade do depósito físico.

Se a sua loja WooCommerce apresenta gargalos na integração com ERP, falhas na sincronização de estoque ou problemas de performance no checkout, uma análise técnica especializada pode reestruturar sua arquitetura. Entre em contato para uma consultoria técnica em WooCommerce.

Preencha o formulário abaixo para que eu consiga entrar em contato com você.