Stock sync
Keep Square and WooCommerce inventory aligned when product SKUs match. Paid WooCommerce orders can still reduce Square stock via catalog-linked line items on Free. Location-linked push and Square → Woo webhooks are Premium (Plus / Pro).
Which plan?
| Direction | Plan | Flow |
|---|---|---|
| Catalog-linked line items on Hosted Checkout | Free | Matching SKU on the payment link → Square lowers stock when the buyer pays |
| Woo → Square (location stock push) | Plus+ | When WooCommerce stock changes, the plugin writes a physical count to your selected Square location |
| Square → Woo (inventory webhook) | Pro | POS / Square stock changes update matching Woo products for that location |
Two directions
WooCommerce → Square (on paid orders)
When a paid WooCommerce order is confirmed:
- WooCommerce reduces its own stock (normal behavior).
- If the product SKU matches an item in your Square catalog, the payment link includes the Square catalog item so Square inventory is reduced when payment completes.
WooCommerce → Square (location stock — Plus)
- Choose the Square location under Connect / stock settings.
- When Woo stock changes for a SKU-matched product, the plugin pushes inventory to that location.
- Use this when WooCommerce is the source of truth for online stock and Square POS should stay in sync at one location.
Square → WooCommerce (webhook — Pro)
When inventory changes in Square (POS sale, manual stock edit, transfer, etc.):
- Square sends an
inventory.count.updatedwebhook to your site. - The plugin looks up the catalog item SKU and finds the matching WooCommerce product.
- WooCommerce stock is updated for your selected Square location.
Enable Inventory sync (Square → WooCommerce) on Payments Square Connect → Connect (requires Pro).
Setup (Square → WooCommerce)
- Go to Payments Square Connect → Connect.
- Copy the Webhook URL.
- Open the Square Developer Dashboard → your application → Webhooks.
- Add the webhook URL and subscribe to:
payment.updated(refunds / payment IDs)inventory.count.updated(stock sync)- Reconnect Square on the Connect screen so the token includes
INVENTORY_READ.
Best practice
Use the same SKU on WooCommerce products (or variations) and Square catalog item variations.
No matching SKU?
Checkout still works — line items use product name and price. Only SKU-matched products sync inventory.
Not a full catalog sync
This plugin does not import your full Square catalog into WooCommerce. It only syncs stock for matching SKUs:
- Paid WooCommerce orders → Square inventory down (catalog-linked line items)
- Square inventory webhooks → WooCommerce stock updated
If you need full bidirectional catalog mirroring, consider whether hosted checkout or heavy sync fits your store better. See the comparison on the home page and WooCommerce guide.
Troubleshooting
| Symptom | Fix |
|---|---|
| WooCommerce stock not updating from Square | Enable inventory sync on Connect; add inventory.count.updated webhook; reconnect Square for INVENTORY_READ |
| Wrong quantity | Confirm SKUs match exactly; check the selected Square location |
| Square stock not updating on web orders | Confirm SKU exists in Square catalog and payment link used catalog item |
Enable Debug Log on Connect and check WooCommerce → Status → Logs (source shc4wc).
