Docs
Product Sync Settings

Product Sync Settings

Real-time syncing, the scheduled safety-net pass, stock buffers, import behaviour, and product matching — everything under Settings → Products.

SWS Pro → Settings → Products controls how products stay in step between Square and WooCommerce. It's organised into three tabs: Sync Behavior (real-time sync and the scheduler), Import Settings (how products are created and stock is counted), and Product Matching (automation and matching rules).

The healthy default for most stores: real-time sync ON with stock in both directions and product details flowing from wherever you edit them, plus a daily scheduled pass as a safety net.

Sync Behavior

Real-time sync

The Real-time sync card: stock toggle, product-details direction, field selection, and the What will happen summary

With the master toggle on, changes sync within seconds — Square webhooks push Square changes to WooCommerce, and WooCommerce edits push back the other way. Two things sync, controlled separately:

  • Keep stock in sync — sales, refunds, and stock edits on either platform update the other, in both directions. This is the toggle that keeps POS and web sales from overselling each other. (An Advanced link lets you limit which stock changes sync if you need finer control.)
  • Product details — title, SKU, price, description, images, category, metafields, modifiers, tax status, and status. Details flow one way: pick Edit in Square or Edit in WooCommerce to declare where you edit products, and tick exactly the fields you want synced. Edits made on the receiving platform can be overwritten on the next sync — that's the point of declaring a direction. Pick Don't sync to keep details manual while stock still syncs.

The What will happen summary at the bottom of the card restates your configuration in plain language — worth a glance after any change.

Order flow (website sales appearing in Square, POS sales appearing in WooCommerce) is configured separately under Settings → Orders — product sync handles catalog and stock, not orders.

Stock syncing locations

Running multiple Square locations? By default WooCommerce tracks your default location's stock. Enable Combine stock from all Square locations to make WooCommerce show the total across every location instead. (With Order Splitting active this is forced on — split orders need inventory from all locations.)

Refresh Square stock when a product is added to the cart (since 10.2.0, off by default) — when a shopper adds a Square-linked product to their cart, the plugin pulls that item's current Square stock in the background. This closes the short window where an in-store POS sale hasn't reached WooCommerce yet (webhook latency, or a missed webhook) and the shopper could oversell. The refresh reuses the normal inbound stock path, so combine-locations mode, stock buffers, per-product locks, and loop guards all apply exactly as they do for a real webhook. Requires real-time Square → WooCommerce stock sync to be enabled; refreshes are throttled to once per minute per item.

Export locations

(since 10.2.0) By default, products exported from WooCommerce are made available at every Square location. If you only sell online inventory at some locations, tick the locations exports should be scoped to — new exports (and newly created variations on linked products) are then only available at those Square locations.

With specific export locations selected, an extra toggle appears: Trashing a product removes it from these locations. When a linked product is moved to the WooCommerce trash, the Square item is marked unavailable at the selected locations (rather than deleted or left purchasable); restoring the product from the trash makes it available again. This is a softer alternative to Automatically delete products in Square, which takes precedence when enabled.

Automatic update scheduler

The Automatic update scheduler card: source of truth, frequency, incremental sync, auto-create options, and data selection

The scheduler is a recurring reconciliation pass — it re-reads the catalog on a schedule and fixes anything real-time sync missed (a webhook dropped during a server outage, changes made while sync was off). Most stores run it daily as a safety net alongside real-time sync.

SettingWhat it does
Source of truthSquare updates WooCommerce from Square's data; WooCommerce pushes the other way
FrequencyHourly, twice daily, daily (from midnight), or weekly (Monday midnight)
Incremental syncOnly process products changed since the last run — much lighter on large catalogs. Can't be combined with automatic creation/deletion (incremental can't detect created or deleted products)
Automatically create productsWith Square as source of truth: Square items that aren't linked yet are created in WooCommerce, using your Product import status. Optional filters: only from your configured location, only from selected categories, and hide products whose category is removed in Square
Data to updateTick exactly what the pass may touch: stock, title, SKU, price, description, categories, images, metafields, modifiers, tax status, status
BatchesProducts per batch — raise for speed, lower if your server struggles

Import Settings

The Import Settings tab: decimal stock, stock buffer, product import status, image metadata, strip formatting, category filters, and category identifier
SettingWhat it does
Decimal stock quantitiesPreserve fractional stock like 10.5, for stores selling by length or weight. Requires a WooCommerce decimal-quantities plugin — WooCommerce itself stores whole numbers only, so without one the plugin keeps working in whole-number mode and shows a warning in wp-admin rather than pretending fractions were saved. Fractions are truncated, not rounded (2.9 becomes 2), so a sync never publishes stock you do not have; while the setting is unsupported, Stock Checker skips any item Square holds a fractional count for instead of rounding it away. Note that Square only accepts a fractional quantity on an order for items that are sold by a measurement unit in Square (yards, metres, kilograms) — set that on the item in the Square Dashboard, or fractional orders for it will be refused
Stock bufferA safety margin against overselling: WooCommerce shows Square's stock minus the buffer, and pushes back Square's real count with the buffer re-added — Square always keeps the true number. Individual products can opt out via the Ignore stock buffer checkbox on their edit screen
Product import statusPublished or Draft for every product the plugin creates — manual imports, scheduled sync, and auto-create alike. While set to Draft, the plugin never publishes a product on its own
Image naming & metadataSet imported images' alt text, title, and (optionally) filename to the product name — accessibility and SEO for large catalogs. Off by default; the Backfill Image Metadata tool under Tools applies it to already-imported products
Rich product descriptions(since 10.2.0, on by default) Import Square's formatted (HTML) description — bold text, lists, and paragraphs from the Square Dashboard are preserved instead of arriving as plain text. Turn off to import plain text only. When Strip formatting on import is enabled for the description, stripping still wins
Strip formatting on importImport chosen fields (title, description) as clean plain text — HTML tags, entities, and stray whitespace removed, with descriptions keeping their paragraph breaks. Applies wherever product data comes in from Square: manual imports, scheduled sync, and real-time sync. Also toggleable from the import dialog
Show products from specific categoriesLimit the Products browser (and scheduled imports using the category filter) to chosen Square categories — faster loads on big catalogs
Square category identifierWhich Square category type maps to WooCommerce categories, with an optional fallback to the other type when empty, and a Preserve WooCommerce category hierarchy option that assigns matching categories without restructuring your existing parent/child tree

Product Matching

The Product Matching tab: automatic creation and deletion, attribute creation, fallback attribute name, and SKU matching priority

Product automation — three switches, all off by default, all deliberately cautious:

  • Automatically create Square products — every new product you publish in WooCommerce is exported to Square and linked.
  • Automatically create WooCommerce products — every new Square item is imported and linked (requires Square → WooCommerce real-time sync; uses your Product import status).
  • Automatically delete Square & Woo products — per direction: deleting a product on one platform trashes it on the other, and archiving in Square sets the WooCommerce product to draft rather than deleting it.

Advanced matching:

  • Disable attribute creation — stop the plugin creating WooCommerce attributes from Square options; you manage attributes and variations yourself (link them by SKU with the auto matcher, or via square_product_id meta).
  • Fallback attribute name — Square variations without item options still need a WooCommerce attribute to hang variations on; this names it (default "Option"), with each variation's name as a value.
  • SKU matching priority — updates from Square match WooCommerce products by SKU first instead of Square catalog ID. Only for unusual setups (e.g. one Square item's variations split across separate WooCommerce products); currently applies to real-time stock updates (price updates ride along with stock). Not generally recommended.
BusinessReal-timeSchedulerDetails direction
Retail-first (POS is home base)On, stock both waysDaily, source SquareEdit in Square
Online-firstOn, stock both waysDaily, source WooCommerceEdit in WooCommerce
Very large catalogOn, stock both waysDaily + incremental syncWherever you edit

Troubleshooting

Changes in Square aren't reaching WooCommerce

  • Confirm Real-time sync is on and the field in question is ticked under Product details (with the direction set to Edit in Square).
  • Check SWS Pro → Webhooks — real-time Square → WooCommerce updates arrive by webhook, and delivery failures are logged there.
  • The scheduler catches anything missed on its next pass — check it's enabled.

Changes in WooCommerce aren't reaching Square

  • The details direction must be Edit in WooCommerce for detail fields to push; stock pushes whenever Keep stock in sync is on.
  • Only linked products sync — check the product has a Square link (Sync button on its edit screen).

My edits keep getting overwritten

That's the details direction doing its job — you edited on the receiving platform. Either switch the direction, untick that field, or make the edit on the source platform.

Stock is off by a fixed amount on every product

That's the stock buffer — WooCommerce deliberately shows Square's count minus the buffer. Set it to 0 to disable, or use the per-product Ignore stock buffer checkbox.

Scheduled sync is slow or times out

Lower the batch size, enable incremental sync (if you're not using auto create/delete), or reduce the data points the pass may touch — images are the heaviest.