Connect WooCommerce to Epsylon
One extension to install on your site, one API key to paste, and your references aligned: shop stock follows the workshop, and web orders land in Epsylon. Around fifteen minutes.
Version 1.0.2 · WordPress 5.8 · WooCommerce 6.0 · PHP 7.4
Before you start
- An Epsylon account with the e-commerce module (Shop plan)
- A WordPress 5.8 site or newer, with WooCommerce 6.0 or newer
- PHP 7.4 or above on the hosting
- Administrator access to the WordPress site
Step-by-step setup
1. Create the API key in Epsylon
In Epsylon: Settings → Integrations → API keys → Create a key. Give it a clear name (“WooCommerce shop”) and pick the store it belongs to.
- The key and secret are shown once, at creation time only — copy them straight away.
- A key belongs to one store: with several stores, create one key per shop.
- The permissions needed are read, write:stock and write:orders. Keys created from that screen get them automatically.
A key created straight through the API without specifying permissions only carries “read”. It answers reads correctly and silently refuses every write. The extension's connection test detects that case and tells you.2. Enable WooCommerce on the Epsylon side
Still under Settings → Integrations, open the WooCommerce panel and enable it. Three settings matter.
- The salesperson attached to web orders. Without one, Epsylon creates a system user named “WordPress Bot” to carry those documents.
- The document type created when an order comes in: draft, sales order or invoice.
- A notification email, optional: you get a message for every order synced.
3. Install the extension on WordPress
Download the ZIP at the top of this page, then in WordPress: Plugins → Add New → Upload Plugin → choose the file → Install → Activate.
- WooCommerce must be installed and active: the extension checks and refuses to start otherwise.
- The extension is compatible with High-Performance Order Storage (HPOS): nothing to turn off.
- To update, deactivate and delete the old version before uploading the new one. Your settings are preserved.
4. Enter the connection details
In WordPress: WooCommerce → Epsylon Sync. Enter your Epsylon instance address, the key and the secret, save, then click “Test connection”.
- The address is your instance, for example https://app-epsylon.fr — without a trailing /api.
- The test checks two things: that the key is recognised, and that it carries the write permissions.
- If one is missing, the message names it: fix the key in Epsylon, then run the test again.
5. Match your SKUs
This is what makes or breaks the setup: the two catalogues are matched by SKU only. The WooCommerce product reference must be strictly identical to the Epsylon one — case, dashes and spaces included.
- Matching SKU: stock and price sync, and the order creates a line linked to the product.
- Different or missing SKU: the order still arrives, but as a free-text line, at the shop price and with a 20% default VAT rate, with no stock movement.
- Before the first sync, export both catalogues and compare references. One hour of work that saves weeks of stock discrepancies.
6. Turn the sync on
On the same screen, enable stock sync, price sync if you want it, and pick the frequency. A button also triggers an immediate sync.
- The stock published online is the available stock: physical minus reserved. A part reserved for a repair in progress disappears from the shop.
- Price sync pushes the Epsylon gross price to the WooCommerce product. Leave it off if your web prices differ.
- Scheduling relies on wp-cron: on a low-traffic shop, trigger it from a server cron job so it runs on time.
What happens on every order
Nothing is validated on your behalf: a web order becomes a draft you review.
The order is placed on your site
The extension sends the order to Epsylon as soon as it is created, then on every status change (pending, processing, paid, completed).
Epsylon creates the document
A document of the type you chose is created as a draft, under the customer's name, with billing and shipping addresses and the payment method in the comments.
Lines are linked to your products
Each line is looked up by SKU. When found, it takes the net price and VAT rate from Epsylon — not from the website — and reserves the quantity on the store's stock.
You validate as usual
The document stays a draft until you review it. You validate it, turn it into an invoice, prepare pickup or shipping: the same path as your counter sales.
A web order reserves stock, it does not deduct it. The definitive movement happens when the document is validated, exactly like a counter sale — which is what keeps you in control if the order is cancelled or the payment never completes.
Troubleshooting
- “Connection established, but the API key lacks permissions”
- The key is read-only. In Epsylon, delete it and create a new one from Settings → Integrations → API keys: keys created there receive read, write:products, write:stock and write:orders.
- The test returns “Invalid API key”
- The key or secret has a stray space, or the key has been revoked. Copy both values again, or generate a new key — the secret is only displayed at creation and cannot be retrieved later.
- The test fails with no response from the server
- The instance address is wrong, or your WordPress host blocks outgoing requests. Check the address in a browser, then ask your host to allow outgoing HTTP calls (wp_remote_request).
- Online stock is lower than in Epsylon
- That is the expected behaviour: the shop publishes available stock, so quantities reserved by orders and repairs in progress are already deducted.
- An order arrives with no link to the product
- The SKU does not match. The line is created as free text, at the website price and 20% VAT. Fix the reference on both sides, then adjust the line in the document.
- Stock does not update on its own
- WordPress scheduling only runs when a page is visited. On a quiet shop, replace it with a server cron job calling wp-cron.php at a fixed interval.
Changelog
- The connection test now checks the key's write permissions and names the missing ones.
- Fixed a log message that lost the amount during a price sync.
- Debug logging removed: the extension no longer writes full API responses for every product synced.
- Declared compatibility with High-Performance Order Storage (HPOS).
- WooCommerce compatibility header updated to 9.4.
- Stock and price sync, order push, settings screen and scheduled synchronisation.
Running something other than WooCommerce?
An equivalent module exists for PrestaShop. And for everything else, the Epsylon public API is documented and open: any website can read stock from it and post its orders to it.