Estratégia A: push em cada mudança (recomendada)
Quando um produto é alterado no seu sistema, dispare imediatamente umPOST /items/upsert.
Exemplo: webhook do Shopify → Voop
O endpoint Voop é idempotente — se o Shopify reentregar o mesmo webhook
(timeout no seu lado), a 2ª chamada retorna
unchanged sem efeito colateral.Tratamento de erros
Estratégia B: re-sync diário com bulk-upsert
Se seu sistema não tem webhooks (ou se os webhooks são pouco confiáveis), rode um cron diário que re-envia o catálogo inteiro via bulk-upsert.contentHash, só os items que mudaram geram writes. O resto é
unchanged em milissegundos. Para 100k items que não mudaram, o re-sync inteiro
roda em ~5min e consome ~200 requests.
Tratamento de exclusões
Tanto na estratégia A quanto B, a Voop não sabe quando você deletou um produto — o produto simplesmente para de aparecer no seu catálogo. Solução: junto com o re-sync, mande explicitamente DELETE para os items removidos:products/delete webhook → DELETE direto na Voop.