Choose WooCommerce under Store Config → Ecommerce Platform, enter your store URL and approve the connection in your WordPress admin — the API keys copy over automatically and realtime webhooks switch on. Then set the SKU field, sync location, price tier and order-import options, and run your first sync.
If you sell online with WooCommerce, connecting it to PHP Point Of Sale gives your register and your web store one shared catalog and one stock count. Sell a shirt at the counter and the website's quantity drops; a web order lands in the POS as a sale ready to fulfill. WooCommerce is the fullest ecommerce integration in the POS — it can sync items, categories, tags, attributes, tax classes, shipping classes, orders and stock in both directions.
The whole connection lives in Store Config: open it from the left menu, search for ecommerce, and work in the Ecommerce Platform and Woocommerce Settings sections. You need the Store Config module permission to set this up (see permissions and templates). Before you start, read how ecommerce sync works — the operation order, linking rules and logs described there apply to everything below.
Before you connect
- You need a working WordPress site with the WooCommerce plugin installed. Keep both up to date — it matters for security and for the API the POS talks to.
- In Woocommerce Settings, the WooCommerce Version dropdown offers 3.0.0 or newer (the default, and what almost every store should use) and 2.6.0 to 2.6.14 for legacy stores.
- Your store should be served over HTTPS. Realtime webhooks are only registered on an HTTPS store.
Connect your store
- Go to Store Config, search for ecommerce, and under Ecommerce Platform set Select Platform to Woocommerce. Click Save — the Woocommerce Settings tab appears.
- In Woocommerce Settings, choose your WooCommerce Version and enter your store's address in Woocommerce API Url (for example
https://yourshop.com). - Click Connect To Woocommerce. A window opens on your own WordPress admin asking you to approve read/write API access for the POS.
- Approve the connection. WooCommerce generates its Consumer Key and Consumer Secret and hands them back to the POS automatically — you never copy keys by hand.
When the keys arrive, the POS turns on Realtime Syncing and registers webhooks in your WooCommerce store for product created, product updated, product deleted, order created, order updated and order deleted, each signed with a shared secret. From that moment, a checkout on your website creates the sale in the POS within moments, and an item edit in the POS pushes straight to the site.
If you prefer to create the REST API key yourself inside WooCommerce, the Woocommerce API Key and Woocommerce API Secret fields accept a manually generated Consumer Key and Consumer Secret instead.
Choose how items sync and match
Work through these settings before the first sync so both systems agree on what a "matching product" means:
- SKU field to sync with — the POS matches WooCommerce's SKU field against your choice of UPC/EAN/ISBN (the default), Product ID, or Item Id. For items with variations, each WooCommerce variation SKU is matched against the variation's item number.
- Only sync inventory quantities with WooCommerce — off by default. When enabled, the POS is the source of truth for stock: quantities push from the POS to WooCommerce, imports and syncs never apply Woo stock to POS locations, and the sync never creates, updates or deletes products in your Woo catalog. Export items to ecommerce still links items by SKU and then sends current POS quantities. Use this when your web catalog is managed entirely in WooCommerce and you only want accurate quantities online.
- New Items are E-Commerce By Default — on by default; every new item is created with Is Ecommerce Item checked. Uncheck the per-item box on anything that should stay in-store only.
- Do NOT upload images to E-Commerce — off by default; check it to keep item images out of WooCommerce. Images already uploaded stay online until you remove them there.
- Use the main image as the default image in e-commerce — off by default; sends only each item's main image.
- Enable HTML for descriptions — off by default; keeps formatted product descriptions intact instead of stripping the HTML.
- Do NOT treat service items as virtual products in woo commerce — off by default. Normally a service item becomes a virtual product in WooCommerce; check this to export services as normal products.
- Store Location — which location's stock counts as the online quantity (defaults to your first location).
- Online Price Tier — sell online at a price tier price instead of the item's regular selling price. The dropdown appears once at least one tier exists.
- E-Commerce Shipping Class — after shipping classes import, each item's form offers a shipping class dropdown so the right WooCommerce shipping class is set per product.
Choose how orders import
Web orders flow into the POS as sales with the E-Commerce sale type. Three settings shape that flow:
-
Only Sync Completed E-Commerce Orders — off by default. When on, an order imports only after WooCommerce marks it
completed; the sale's date is set to the completion date. - Import E-Commerce Orders Suspended — off by default. Each order imports as a suspended sale so a person reviews and completes it at the register. After the first import, later syncs do not overwrite the suspended sale, so register edits are safe.
- Import ALL past orders for WooCommerce — off by default, and it resets itself to off after one use. Check it once, run a sync, and your entire WooCommerce order history imports. Every other sync only looks back eight days past the last sync date (a deliberate overlap so slow-completing orders are never missed — importing the same order twice is harmless, it just updates the existing sale).
Two more order behaviors happen automatically: orders that are still open are re-checked on every sync until they complete, and orders cancelled in WooCommerce within the last month mark the matching POS sale deleted so your reports agree with the web store. Refunded orders are handled the same way.
What the full sync covers
The WooCommerce checklist in Ecommerce Sync Operations can run all of these, in this order: sync inventory changes; import tags, categories, attributes, tax classes, shipping classes, items and orders into the POS; export tags, categories, attributes, tax classes and items to WooCommerce. All are enabled by default; uncheck anything you do not want. You cannot enable Import items into PHP POS and Export items to ecommerce at the same time — pick which system owns the catalog. See how ecommerce sync works for what each operation does, the manual Sync button, the progress bar, and the sync logs.
Realtime and scheduled syncing
With Realtime Syncing on (it is enabled automatically when you connect), WooCommerce webhooks push product and order changes to the POS as they happen, and the POS pushes item saves and stock adjustments back the same way. The scheduled sync still runs (about every 15 minutes on cloud stores) to run the full checklist and catch anything webhooks missed — but it skips the inventory operation while realtime is on, since those changes already flowed. The first sync of a large catalog can take a long time; it runs in the background and you can watch the Sync Progress bar in Store Config.
Common questions
Do I have to copy API keys out of WooCommerce? No. Connect To Woocommerce sends you to your own WordPress admin to approve access, and the Consumer Key and Secret are delivered back automatically. Manual entry into Woocommerce API Key / Woocommerce API Secret exists as a fallback.
Why did the sync create duplicates of my products? The WooCommerce SKU did not match the POS field selected in SKU field to sync with (UPC/EAN/ISBN by default), so the import treated them as new products. Align the SKUs, remove the duplicates, and sync again.
Can I keep managing my catalog in WooCommerce and only sync stock? Yes — turn on Only sync inventory quantities with WooCommerce. The POS then pushes quantities only and never touches your Woo product data.
Why isn't a new item showing up on my website? Check that Is Ecommerce Item is checked on the item, that Export items to ecommerce is enabled in the sync operations, and read the item's Ecommerce Sync Log on the item form — it records the last five sync attempts with the exact error.
Why didn't an order appear in the POS? If Only Sync Completed E-Commerce Orders is on, the order must be marked completed in WooCommerce first. Also confirm Import orders into PHP POS is checked in the sync operations, and that realtime webhooks were registered (the store must be HTTPS).
How do I bring in old orders from before I connected? Check Import ALL past orders for WooCommerce, save, and run a sync. It imports the entire order history once and then switches itself back off.
A customer's web order shows as a suspended sale — why? Import E-Commerce Orders Suspended is on. That is the review workflow: the order waits in the suspended sales list under the E-Commerce type until someone completes it at the register.
What happens if I refund or cancel an order in WooCommerce? The next sync (or webhook) marks the matching POS sale deleted, so the sale drops out of your totals automatically.
Comments
0 comments
Article is closed for comments.