Skip to content
FuncionalidadesPreçosAfiliadosBlogAjudaSobre nósContato
ComeçarEntrar
Voltar ao Blog
guides2026-07-276 min de leitura

Sincronização Bidirecional Square POS com thMenu: Webhooks + Polling REST

Estudo de caso de café em Brooklyn: webhook catalog.version.updated do Square com fallback de polling a cada 30 minutos e mapeamento fiscal US/PT.

th

thMenu Team

thmenu.com

Se você opera um café de especialidade de 32 lugares em Brooklyn com Square Terminal e cardápio QR thMenu, manter preços sincronizados pode virar pesadelo operacional. O barista muda o latte de 5,50 para 5,75 USD, mas o QR ainda exibe o preço antigo. Este artigo descreve uma arquitetura híbrida: webhook em primeiro lugar, polling como rede de segurança.

Webhook como canal primário

O evento catalog.version.updated do Square dispara a cada mudança de item, variation ou modifier. Direcione-o para o Worker thMenu em /api/integrations/square/webhook: valide a assinatura HMAC-SHA256, leia object_id, depois consulte /v2/catalog/object/{id}.

O Worker mapeia a resposta para D1_MENU: variations[0].price_money.amount em centavos (575) vira products.price = 5,75 USD. A coluna square_object_id permite upsert. SLA Square entrega 99,2% dos webhooks em 15 minutos.

Polling e limite de taxa

Para quedas de rede ou atrasos raros do Square (5+ minutos), um cron de 30 minutos consulta /v2/catalog/search filtrado pelos últimos 35 minutos.

O limite Square é 10 requisições/segundo. Para 500 itens, 100 por batch_retrieve e 1 segundo de pausa evita todos os 429.

Mapeamento fiscal: US vs PT

Brooklyn cobra 8,875% de NY sales tax; uma loja em Lisboa cobra 23% de IVA restauração (ou 13% reduzido). Adicione tax_us_pct e tax_pt_pct em products; restaurant.country decide.

FAQ

Se os webhooks falharem? O polling resolve em 30 minutos.

Sincroniza estoque? Não, só catálogo.

Qual plano? Pro e Platinum.

Achou útil? Compartilhe.