Conferir e diagnosticar
“O item não aparece na loja”
Siga na ordem — cada passo elimina uma causa e a maioria dos casos morre no passo 3 ou 4.
O produto existe?
curl $GROCERS_API/v1/batch/Products/PROD-114970 \
-H "Authorization: Basic $BASIC" -H "x-contractAccountId: $TENANT"Se voltar vazio, o lote falhou no processamento assíncrono. Confira o webhook de
ProductWithSKUs_CreationFailed ou reenvie o lote.
O produto está ativo e visível?
active: true e displayInSite: true. Um item inativo responde na consulta acima
normalmente — ele existe, só não é exibido.
Tem estoque publicado?
curl "$GROCERS_API/v1/batch/Warehouses/stock?warehouseExternalReference=CD-CENTRO" \
-H "x-contractAccountId: $TENANT" | grep MAC-ESP-500Essa rota não exige Authorization — só o x-contractAccountId. E a resposta traz
skuReference (o reference do SKU), não o externalReference: filtre pelo campo
certo. Veja Publicar estoque.
Sem retorno aqui, o problema é estoque, não catálogo.
O warehouse está ligado a uma política de entrega?
Warehouse sem shippingPolicyIds tem estoque que ninguém alcança. Essa é a causa mais
frequente de “está tudo certo no ERP e a loja diz esgotado”.
Tem preço vigente?
Item sem preço vigente não é vendável, mesmo com estoque. Confira também as datas: um
preço com startDateTime no futuro ainda não vale, e um com endDateTime no passado
já saiu. Veja Tipos de preço.
Não perca tempo investigando “a política comercial certa”: a resolução do preço filtra por SKU e vigência, não por política. Se existe preço vigente para o SKU em qualquer política, ele vale.
“O estoque da loja está diferente do ERP”
Lembre que quantityAvailable é substituído a cada publicação. Divergência quase
sempre significa que uma publicação não chegou ou chegou fora de ordem.
Verifique nesta ordem:
- A última publicação retornou 200? Um
operationIdna resposta confirma só que o lote foi aceito. O processamento em si pode ter falhado depois. - Chegou webhook de falha?
WarehouseSKU_CreationFailedindica que a chamada inteira foi recusada. Mas o inverso não vale:WarehouseSKU_Createdconfirma que o lote foi aceito, não que cada item entrou — o core aceita o lote com200mesmo com SKU inexistente ou warehouse errado no meio, e a lista de erros não é repassada. Só a consulta destockprova o que foi aplicado. - O SKU do payload existe mesmo? Publicar estoque para um
skuExternalReferenceque não está no catálogo falha silenciosamente do ponto de vista do ERP — o lote é aceito e o item nunca aparece. - Há mais de um processo publicando? Job agendado e evento em tempo real competindo pelo mesmo SKU produzem exatamente esse sintoma, de forma intermitente.
Reserva versus disponível
Um mal-entendido comum: quantityReserved não é descontado de
quantityAvailable pela plataforma. Os dois números vêm do seu ERP e são exibidos como
você os enviou.
Se o seu ERP já desconta a reserva do disponível, mande a reserva como 0 para não
contar duas vezes. Se ele mantém os dois separados, envie quantityAvailable já
líquido — o valor que pode ser vendido agora.
Enviar quantityAvailable bruto (incluindo o que está reservado) é a receita para
vender o que não existe e cancelar pedido na separação.
Carga total de reconciliação
Recomendado uma vez por dia, em horário de baixo movimento:
Publicar só os divergentes reduz o volume e deixa o log de reconciliação com o valor real: a lista de itens que estavam errados.