Skip to content
FunctiesPrijzenPartnersBlogHelpOver onsContact
Aan de slagInloggen
Terug naar Blog
guides2026-07-276 min. leestijd

Tweeweg Square POS Synchronisatie met thMenu: Webhooks + REST Polling

Casestudy Brooklyn-café: Square catalog.version.updated webhook met 30-minuten polling fallback en US/NL belastingmapping.

th

thMenu Team

thmenu.com

Run je een 32-zits specialty café in Brooklyn met zowel Square Terminal als een thMenu QR-menu, dan kan prijssynchronisatie een operationele nachtmerrie worden. De barista verandert de latte van 5,50 naar 5,75 USD, maar het QR-menu toont nog de oude prijs. Dit artikel beschrijft een hybride architectuur: webhook eerst, polling als vangnet.

Webhook als hoofdkanaal

Square's catalog.version.updated event vuurt bij elke wijziging van item, variation of modifier. Stuur het naar het thMenu Worker endpoint /api/integrations/square/webhook: verifieer de HMAC-SHA256 handtekening, lees object_id en haal details op via /v2/catalog/object/{id}.

De Worker mapt het antwoord naar D1_MENU: variations[0].price_money.amount in centen (575) wordt products.price = 5,75 USD. De square_object_id kolom maakt upsert mogelijk. Square's SLA levert 99,2% van webhooks binnen 15 minuten.

Polling en rate limit

Bij netwerkstoringen of zeldzame Square-vertragingen van 5+ minuten dekt een 30-minuten cron alles af door /v2/catalog/search te bevragen op de laatste 35 minuten.

De Square rate limit is 10 verzoeken/sec. Voor 500 items: 100 per batch_retrieve en 1 seconde pauze — 429-fouten verdwijnen.

Belastingmapping: US vs NL

Brooklyn rekent 8,875% NY sales tax; een Amsterdamse locatie rekent 9% btw op horeca. Voeg tax_us_pct en tax_nl_pct toe aan products.

FAQ

Wat als webhooks falen?De polling lost het binnen 30 minuten op.

Synchroniseert het ook voorraad?Nee, alleen catalogus.

Welk plan?Pro en Platinum.

Was dit nuttig? Deel het.