Connect your WooCommerce
shop to GSE-Web
Your catalogue and available stock go to the shop. Paid orders arrive in GSE-Web as confirmed outbound orders, with stock reserved.
In brief
The WooCommerce connector links a WooCommerce shop to a GSE-Web warehouse. GSE-Web publishes the stock, the shop sends its orders. It is set up by an administrator of the organisation, in the ADMIN › “Integrations” menu.
- What goes to the shop: the pages of simple products (name, reference, price, barcode), if you ask for it, and the available stock of the published warehouse.
- What arrives in GSE-Web: each selected order becomes a confirmed outbound order, with stock reserved; the buyer becomes an “Individual” customer.
- When: an order arrives at once by webhook; a full pass runs every 5 minutes and catches up anything missed.
- What is never done: nothing is deleted in the shop, and GSE-Web never writes to the shop's orders.
- Switching off: pause, disconnect or close the module at any time, without losing anything; on resuming, orders placed in the meantime are caught up.
Requirements
Check these points before opening the connector screen: the connection test checks them and states plainly what does not fit.
WooCommerce 7.0 or later
The shop must be served over HTTPS. The product barcode (GTIN) is published from WooCommerce 9.2.
A read/write REST API key
In WooCommerce: Settings › Advanced › REST API › Add key, “Read/Write” permissions. Note the key and the secret: WooCommerce does not show the secret again.
The modules enabled for your organisation
“Integrations”, then “WooCommerce”. Ask KLS-Concept to enable them. Without “Integrations”, the menu entry does not appear; without “WooCommerce”, its card reads “Not available for your organisation”.
An ADMIN account with two-factor authentication
Entering the shop's credentials is refused until two-factor authentication is turned on for your account, in “My information”.
A real warehouse
Its available stock is published to the shop and orders become outbound orders there. An exercise warehouse is refused.
The same currency
The shop's currency must be your organisation's.
The same price mode
The “Published prices” choice (excluding or including tax) must match the shop's “Prices entered with tax” setting.
Step-by-step setup
Six steps, in the order of the screen.
Open the connector screen
ADMIN menu › “Integrations”. The WooCommerce card is in the “E-commerce” category. Click “Set up” (the button becomes “Manage” once the shop is saved).
“Shop” card
Fill in “Shop address” (full address, starting with https://), “Consumer key” and “Consumer secret”, then choose the “Published warehouse”.
The key and the secret are write-only: once saved, they are never shown again. The screen only shows a few characters of the key so you can recognise it. To keep it, leave both fields empty; to replace it, enter a new key and its secret.
“Settings” card
Each setting has a default value:
- “Published prices”: “Excluding tax” by default, or “Including tax”.
- “Create and update product pages in the shop”: unticked by default. Unticked, GSE-Web creates no page: it only links the products already in the shop with the same reference (SKU).
- “Publish available stock”: ticked by default.
- “Receive orders”: ticked by default.
- “Imported order statuses”: “Processing” by default. You can add “Pending payment”, “On hold” and “Completed”.
- “Maximum age of a caught-up order (days)”: 30 by default, from 1 to 90.
Save
Click “Save”. “Test the connection” and “Activate” use the saved configuration: as long as a change is not saved, the screen says so and these two buttons wait.
Test the connection
“Test the connection” queries the shop and checks four points: the WooCommerce version, the key's write permission, the currency and the price mode. A refusal is shown plainly, with what is wrong (see troubleshooting below).
Activate
“Activate” runs the test again, then creates four “GSE-Web” webhooks in WooCommerce. The status becomes “Active — synced every 5 minutes”. Orders received before activation are not imported.
What is synchronised, and which side is authoritative
Each field has a single owner. GSE-Web never writes a shop order: no loop is possible.
📦 GSE-Web is authoritative
- ✓Product name
- ✓Reference (SKU in the shop)
- ✓Sale price, excluding or including tax depending on the setting
- ✓Barcode (GTIN, WooCommerce 9.2 or later)
- ✓Published or draft
- ✓Stock
🛒 The shop is authoritative
- ✓Description
- ✓Images
- ✓Categories
- ✓Tax class
- ✓Orders
The rules
- Simple products only. Products with variants and kits are not published.
- A product withdrawn from sale in GSE-Web becomes a draft in the shop. It is never deleted there.
- A product page changed in the shop on a field GSE-Web is authoritative for is rewritten at the product's next change in GSE-Web.
- Published stock = available stock of the published warehouse (physical minus reserved), rounded down to the unit, never negative. It is read again at each pass and sent if it has changed.
- One order = one confirmed outbound order from the published warehouse, stock reserved, delivery address copied. Never a partial order: if a line is a problem (unknown product, variation, missing e-mail, other currency), no order is created and an item to handle explains why.
- One buyer = one “Individual” customer, found again by e-mail from one order to the next (code starting with WEB-). A business partner already in GSE-Web is not matched: an “Individual” customer is created.
- Order cancelled in the shop (cancelled, refunded, failed, moved to the bin or deleted): the outbound order is cancelled and its reservations released, unless someone is already handling it. In that case, an item to handle leaves the decision to the team.
- Order changed in the shop after import: the change is not carried over to the outbound order; an item to handle asks you to check it.
Day to day
The connector screen reads from top to bottom: status, shop, settings, buttons, then the items to handle and the log.
The “Status” card
It shows where the connection stands, the shop's WooCommerce version and currency, the date of the last sync, the last error and the number of items to handle. On the card of the “Integrations” page, the status fits in a chip.
- Not active yet “Set up, not activated yet”.
- Connected “Active — synced every 5 minutes”.
- Paused “Paused — nothing is sent or imported”.
- Stopped — check it “Stopped by the server — check the key and test”.
“Sync now”
Starts a pass without waiting for the 5 minutes: product pages, stock and order catch-up. The message says whether the pass finished, whether it raised items to handle, or why it did not start.
The “Log”
Each pass is listed with its type and its result. Types: “Product pages”, “Stock”, “Order catch-up”, “Order received”, “Webhook check”, “Connection test”. Results: “Succeeded”, “Partial”, “Failed”, “Running”, “Interrupted”.
The “Items to handle”
A line that does not go through never blocks the sync: it becomes an item to handle and the rest carries on. Items about product pages and stock clear themselves once their cause is fixed. Order items have two buttons.
- “Retry” reads the order from the shop again and retries the import, whatever its age.
- “Ignore” puts the item away: an ignored item does not come back to the list.
Product pages
- Cause
- Only simple products are published to the shop.
- What to do
- Nothing to do in GSE-Web. Manage this product directly in the shop.
- Cause
- The product has no sale price in GSE-Web.
- What to do
- Enter its sale price. The item clears at the next pass.
- Cause
- Prices are published including tax and the product has no VAT rate.
- What to do
- Enter the product's VAT rate.
- Cause
- The shop product carrying this reference is already linked to another GSE-Web product, or is not a simple product. A reference containing a comma cannot be searched in the shop either.
- What to do
- Make sure one reference designates a single product, on both sides.
- Cause
- WooCommerce rejected the product page; its rejection code is shown.
- What to do
- Check the product in the shop using this code.
- Cause
- The linked product no longer exists in the shop.
- What to do
- Recreate it in the shop with the same reference. If it should no longer be there, write to us.
Stock
- Cause
- The available stock has decimals; the shop only sells whole units.
- What to do
- Information only: the shop shows the lower unit.
- Cause
- WooCommerce rejected the quantity; its rejection code is shown.
- What to do
- Check the product page in the shop using this code.
Orders
- Cause
- A line of the order carries a reference that does not exist in GSE-Web.
- What to do
- Create the product with the same reference, then “Retry”.
- Cause
- The order contains a product variation, which the connector does not handle yet.
- What to do
- Handle this order manually.
- Cause
- Without an e-mail, the buyer can be neither found nor created as a customer.
- What to do
- Add the billing e-mail to the order in the shop, then “Retry”.
- Cause
- The customer matching this buyer has been archived.
- What to do
- No outbound order is created. Handle this order manually.
- Cause
- The order is in a currency other than your organisation's.
- What to do
- Handle this order manually.
- Cause
- During catch-up, the order exceeds the “Maximum age of a caught-up order”.
- What to do
- “Retry” imports it anyway.
- Cause
- The outbound order is already being prepared: GSE-Web does not cancel it on its own.
- What to do
- Decide with the team. If the outbound order must be cancelled, release it, then “Retry”.
- Cause
- The order changed in the shop after the outbound order was created; the change is not carried over.
- What to do
- Compare the order and the outbound order, and correct the outbound order if needed.
- Cause
- The import failed; the reason is shown in brackets.
- What to do
- Fix the stated cause, then “Retry”.
Webhooks
- Cause
- WooCommerce disables a webhook after several failed deliveries, or a “GSE-Web” webhook was deleted in the shop.
- What to do
- Nothing to do: the webhook check, every 6 hours, re-arms them and catches up the orders.
Pause, resume and changes
The connector can be switched off and on again at any time. Three changes follow a rule, which the screen reminds you of and the server enforces.
“Pause”
Nothing is sent or imported any more, and nothing is lost. The stock shown in the shop stays as last sent.
“Resume”
The shop is checked again (version, key, currency, price mode), then catch-up starts: orders placed during the pause are imported if they are less than N days old (“Maximum age of a caught-up order”, 30 by default, from 1 to 90). Older ones become items to handle.
Changing the key or the price mode
On an active connection, the address, the key, the secret and “Published prices” are locked. Follow this order: “Pause”, change, “Save”, “Test the connection”, “Resume”.
Changing shop
“Disconnect” first: the former shop's webhooks are removed. Then enter the new shop.
Reconnecting the same shop
Products, orders and customers already linked are found again: no second outbound order is created for an order already imported.
Changing a product page setting
After changing “Published prices” or “Create and update product pages in the shop”, the next pass reads the whole catalogue again.
“Disconnect”
The webhooks are removed from the shop and the credentials erased. Nothing is deleted in the shop or in GSE-Web: outbound orders and customers already imported remain. If the shop does not answer, the screen asks you to delete the “GSE-Web” webhooks yourself in WooCommerce.
Module closed
If KLS-Concept closes the module for your organisation, everything stops without anything being deleted. When it reopens, the next pass catches up the orders and publishes the stock again.
Security and data
What the connector keeps, and how.
Encrypted credentials
The shop's key and secret are encrypted on the server (AES-256-GCM). They are never shown again, nor written to the logs.
Two-factor authentication
It is required to enter or replace a shop's credentials.
HTTPS only
The shop address must use HTTPS and be reachable on the Internet; a private network address is refused.
Signed webhooks
Each webhook received is signed by the shop, and its signature is checked before any processing. Its content is not kept.
Buyer data
The buyer's details are copied to their customer record and the delivery address to the outbound order. The link with the shop keeps only a fingerprint of their e-mail.
Nothing in the export
The encrypted credentials are not included in the organisation's portability export.
Troubleshooting
The message shown by the screen, its cause and what to do. The code in square brackets helps support find the case.
“Stopped by the server — check the key and test”
After five authentication refusals in a row, the server stops the connection rather than keep trying. Check the key in WooCommerce, enter a new one if needed, “Save”, “Test the connection”, then “Activate”.
- What to do
- Enter the shop's full address, starting with https://, with nothing after the site name.
[WOOCOMMERCE_SHOP_URL_INVALID]
- What to do
- Use the shop's public address.
[WOOCOMMERCE_SHOP_URL_PRIVATE_HOST]
- What to do
- Check the key and the secret in WooCommerce (Settings › Advanced › REST API), or create a new one.
[WOOCOMMERCE_SHOP_AUTH_FAILED]
- What to do
- Create a key with “Read/Write” permissions and enter it.
[WOOCOMMERCE_SHOP_READ_ONLY_KEY]
- What to do
- Update WooCommerce (7.0 at least), then test again.
[WOOCOMMERCE_SHOP_VERSION_UNSUPPORTED]
- What to do
- The connector only links a shop in your organisation's currency.
[WOOCOMMERCE_SHOP_CURRENCY_MISMATCH]
- What to do
- Align “Published prices” with the shop's “Prices entered with tax” setting, save, test.
[WOOCOMMERCE_SHOP_PRICE_MODE_MISMATCH]
- What to do
- Check that the shop answers, then try again.
[WOOCOMMERCE_SHOP_UNREACHABLE]
- What to do
- Try again a little later.
[WOOCOMMERCE_SHOP_TIMEOUT]
- What to do
- Wait: the next pass resumes on its own.
[WOOCOMMERCE_SHOP_RATE_LIMITED]
- What to do
- Check that the address leads to the WooCommerce shop and that its REST API is enabled.
[WOOCOMMERCE_SHOP_RESPONSE_INVALID]
- What to do
- “Pause”, change, “Save”, “Test the connection”, “Resume”.
[WOOCOMMERCE_CONNECTION_ACTIVE_CHANGE_REFUSED]
- What to do
- “Disconnect”, then enter the new shop.
[WOOCOMMERCE_SHOP_CHANGE_REQUIRES_DISCONNECT]
- What to do
- Follow this order; the price mode is checked against the shop at the test and on resuming.
[WOOCOMMERCE_PRICE_MODE_CHANGE_REQUIRES_PAUSE]
- What to do
- Enter both, or leave both empty to keep the saved key.
[WOOCOMMERCE_CREDENTIALS_REQUIRED]
- What to do
- Turn it on in “My information” (the screen offers “Open “My information””), then save again.
[WOOCOMMERCE_CONNECTION_TWO_FACTOR_REQUIRED]
- What to do
- Choose a real warehouse as “Published warehouse”.
[WOOCOMMERCE_WAREHOUSE_EXERCISE_REFUSED]
- What to do
- Enter the key and the secret again, test, then activate.
[INTEGRATIONS_CREDENTIALS_UNREADABLE]
- What to do
- Wait for the current pass to finish.
[INTEGRATIONS_CONNECTION_BUSY]
Frequently asked questions
Are products with variants supported?
Not yet. Only simple products are published. An order containing a variation is not imported: it appears in the items to handle.
Can several shops or several warehouses be linked?
No. An organisation links one shop, and a shop is linked to a single warehouse, the “Published warehouse”.
Are shipments sent back to the shop?
No. GSE-Web never writes to the shop's orders. Sending shipments back is planned for a future version.
Are product images sent?
No. Images, like the description and the categories, remain managed in the shop.
What happens if I pause or if the module is closed?
Nothing is sent or imported, and nothing is deleted. The stock in the shop stays as last sent. On resuming, orders placed in the meantime are caught up if they are less than 30 days old (adjustable from 1 to 90).
How long before an order appears in GSE-Web?
At once, by webhook. If a webhook is lost, the next pass, every 5 minutes, catches up the order.
Can the shop sell a product that is no longer in stock?
The stock is read again at each pass, every 5 minutes, and sent if it has changed. Between two passes, the shop shows the last stock sent: an issue recorded in GSE-Web during that short interval only shows there at the next pass.
Is a buyer already in my business partners recognised?
No. The connector creates one “Individual” customer per buyer and finds them again by e-mail on later orders, but it does not match them with a business partner already entered in GSE-Web.
Are orders placed before activation imported?
No. Only orders received after activation are imported.
What about Shopify, Sage or Odoo?
They are listed on the “Integrations” page, as upcoming connectors. No date has been announced.
How do I get the connector?
The “Integrations” and “WooCommerce” modules are enabled organisation by organisation by KLS-Concept. Write to us from the contact page.
Link your WooCommerce shop
Ask for the connector to be enabled for your organisation, or send us your questions about your case.