Shop and stock

WooCommerce is not the thing you connect. It is the thing everything else connects to

Every other page in this bank describes a tool and a connection into it. This page is different, because WooCommerce is rarely the destination — it is almost always the other end of the connection, the place where the order, the customer and the product actually live before anything else in this list gets a copy of them.

That makes WooCommerce less a product to evaluate and more the foundation everything else stands on. A shop with clean order data and a sane plugin list makes every connection on this site cheaper and more reliable. A shop that has accumulated forty plugins over six years, three of which do the same thing badly, makes every connection into a small archaeology project before it can even start — and that is what this page is actually about.

  • REST API, webhooks and the order-data tables (HPOS)
  • The hub for every connection on this site
  • From €1,700 plus service fees
The tool

What WooCommerce is, and why it behaves like the centre of the bank

WooCommerce is an open-source e-commerce plugin for WordPress: products, orders, customers, cart and checkout, running on top of a CMS rather than as a separate platform. That parentage is the whole story. Because it is WordPress underneath, a WooCommerce shop is also a website — the same one that has your blog, your landing pages and your careers page — and because it is open source, almost anything about it can be changed, which is both its biggest strength and the reason two WooCommerce shops can be almost unrecognisable to each other.

Data lives in two layers worth knowing about. Products, categories and content are ordinary WordPress posts. Orders, since WooCommerce moved to High-Performance Order Storage (HPOS), live in their own dedicated database tables rather than being squeezed into the generic posts table the way they used to be — a genuinely good change for performance and for anyone querying orders directly, but one that breaks any older plugin or custom code that assumed the old structure. If a shop has not been touched in a few years, this is one of the first things worth checking before building anything on top of it.

For connections, WooCommerce offers a documented REST API for reading and writing products, orders and customers, plus webhooks that fire on events like a new order or a status change. That is a solid foundation. What decides whether a connection is a week's work or a month's is not the API — it is the plugin list sitting on top of it. A clean install with WooCommerce, one payment plugin and one shipping plugin is a different project from a shop running forty plugins where three of them quietly rewrite the order total after checkout.

What goes wrong

Three things that go wrong on a WooCommerce shop that has grown for years

These are not about WooCommerce being bad software. They are what accumulates on top of good software when nobody has been responsible for the whole shop for a while.

Two plugins both think they own the price, and the checkout shows a third number

A dynamic-pricing plugin, a customer-group discount plugin and a coupon system get installed at different times by different people, each solving a real problem at the time. Run together, they apply in an order nobody designed, and a customer's final total occasionally does not match what any single plugin's settings would predict — a support ticket that takes an afternoon to trace and a discount taken directly out of your margin.

What you see instead

One clear pricing hierarchy, documented and built as one piece of logic rather than three plugins arguing, so the number at checkout is always explainable and always the one you intended.

An order looks fine in wp-admin and never reaches the connection at all

A plugin creates an order through a non-standard path — a subscription renewal, a point-of-sale sync, an import tool — that skips the normal WooCommerce hooks a connection listens on. The order exists, looks completely normal to a human in the admin, and simply never triggers the webhook that would have sent it to accounting or shipping.

What you see instead

Connections are built against the order-data layer itself, not just the one hook most plugins fire, and a periodic reconciliation catches anything that slipped through — quietly, before a customer notices their invoice never arrived.

A plugin update breaks a connection nobody remembers exists

A shop with forty plugins gets a routine update to one of them, which quietly changes a hook signature or a data format. The connection built against the old behaviour keeps running, but starts silently dropping a field or duplicating an order, and the person who built the connection left the company two years ago.

What you see instead

Plugin updates go through staging before production, and a connection's own monitoring catches a change in the shape of the data it receives — a missing field is a same-day alert, not a discovery three months later.

The bill for doing it by hand

What an overgrown WooCommerce shop costs before you even connect anything

A shop with a clean plugin list and a maintained WooCommerce core is close to free to build a connection against — most of the cost on this bank's other pages is the connection itself, not the shop. A shop that has not been maintained shifts a real chunk of that cost forward, into hours spent understanding what forty plugins actually do to an order before any of the fields in this bank's other pages can be trusted.

We have opened shops where the audit alone — reading through the plugin list, checking which ones touch pricing, stock or order totals, and testing what an order actually looks like by the time it hits the database — took two to three days before a single line of integration code was written. That is not wasted time; it is the difference between a connection that works in week one and one that quietly corrupts data in month three.

  • A clean shop: a connection is mostly configuration and testing.
  • A shop with a dozen plugins: expect a short audit before we quote a fixed price.
  • A shop with forty plugins and no documentation: the audit is its own small project, worth doing regardless of which connection comes after it.
What we build

We build the thing on the other end too

This is the one page in the bank where the note above the build steps has to say something bigger: when a shop's plugin stack has genuinely outgrown what it should be doing, the honest answer is not a connection at all, but rebuilding the shop on a clean WooCommerce foundation first — fewer plugins, current HPOS-compatible code, and connections built in from the start instead of bolted on afterwards.

A connection needs two ends. Plenty of agencies will build you the API call and hand you a JSON payload; that is the easy half. The harder half is what the data lands in — a website, a webshop, a portal your customers log into, an internal tool that replaces a spreadsheet. JKC builds both ends, which is why the connections we build tend to keep working: nothing about the receiving side is a black box to us.

API integrations

The connection itself: authentication, field mapping, rate limits, retries and a queue that survives the other system being down for an hour. Built against the documented API where there is one, and against whatever the vendor really offers where there is not.

Websites

WordPress sites that read from your systems instead of repeating them by hand: a careers page fed by your HR system, a team page that follows your payroll, prices and availability that are the real ones.

Webshops

WooCommerce shops where the order is the last time anyone types it: it becomes an invoice in your accounting package, a label at your carrier, a stock mutation in your warehouse, and a line in your CRM, on its own.

Web applications

When the process does not fit any standard product: a customer portal, a quoting tool, a planning board, a dashboard that reads three systems at once. Built on your data, with your systems as the source instead of a copy of them.

What can be connected

What runs through WooCommerce toward every other connection in this bank

This is not one connection's field list — it is the traffic that flows out of WooCommerce toward accounting, shipping, CRM and payment tools, all originating from the same handful of objects.

  • Orders out to accounting (out of the tool)

    Every order becoming a sales invoice or order in Exact Online, Moneybird, Jortt or e-Boekhouden.nl, the moment it is placed rather than at month-end.

  • Orders out to shipping and fulfilment (out of the tool)

    Address, weight and chosen service to Sendcloud, MyParcel or a fulfilment partner like Monta, so a label or a pick request exists before anyone opens a second screen.

  • Stock and prices, back into WooCommerce (into the tool)

    Free stock and, for B2B shops, customer-specific pricing read from an ERP or a fulfilment partner and shown on the product page as the real number, not last week's.

  • Customers and orders into a CRM (out of the tool)

    New customers and their order history into HubSpot, Pipedrive or a similar CRM, so a sales conversation does not start from zero context.

  • Payment status from Mollie or a similar provider (into the tool)

    An order marked paid the moment the payment provider says so, through WooCommerce's own webhook — the connection most shops already have, and the one worth checking is actually reliable.

  • Newsletter consent into Mailchimp or a similar tool (out of the tool)

    An opted-in customer added to the right list at the moment of opting in, with the consent timestamp carried along — not synced in bulk later, when the record of when they agreed has gotten fuzzy.

In other words: almost every page in this bank has a WooCommerce-shaped hole in it, and this is the page that describes the shop side of all of them at once.

How it works

How a connection gets built at JKC

The same four steps every time, whichever tool it is. Nothing here is a workshop you pay for: step one exists because scoping a connection wrong is the single most expensive thing that can happen to it.

  1. 1. We look at what is actually being retyped

    Not "which fields exist" but "which fields does somebody currently move by hand, how often, and what breaks when they get it wrong". Most projects turn out to need two or three flows, not a full two-way sync of everything. That conversation is what keeps the quote where it is.

  2. 2. We pick the route, and say why

    A maintained connector from the vendor, a platform like Make or Zapier, or a custom integration against the API. Cheapest first, not custom first: if a supported plugin does exactly what you need, that is the answer and we will tell you so. Custom is for the cases where the off-the-shelf option would need so much configuring that it becomes the fragile option.

  3. 3. We build it to survive the other system

    Every connection ships with retries, a queue and an idempotency key, so an order that arrives while the other side is down is delivered later rather than lost, and a retry does not create a second invoice. On a test environment first where the vendor offers one, so the first thing your real administration sees is a working connection.

  4. 4. We hand it over with the failure modes written down

    Which alerts you will get, what each one means, what to do about it, and who to call. Plus the credentials in your own name, in your own vault — not in ours. A connection nobody but us can maintain is a connection you do not own.

After it goes live

A connection that fails silently is worse than no connection

This is the part most quotes leave out. A connection that stops working without telling anyone is worse than manual work, because with manual work at least somebody notices when it does not get done. Every connection JKC builds is monitored, and the monitoring is not an upsell — it is in the service fee.

An alert per failed message, not a monthly report

A message that does not get through raises an alert the same hour, with the record it was about. Not a dashboard you have to remember to look at.

Replay, not re-enter

Anything that failed sits in a queue and can be sent again once the cause is fixed, in order. Nobody goes back through yesterday to find the four orders that did not land.

We watch the vendor's changes, so you do not have to

APIs get versioned, deprecated and rate-limited. When a vendor announces a change that affects your connection, adjusting to it is part of the service fee, not a new project.

What it costs

From €1,700, and the biggest variable is who built the other end

There is no single price for WooCommerce, because the number depends entirely on which of the flows above you need and what state the shop is already in. What we can promise is the audit: before quoting a fixed price on any connection, we look at what is actually installed and say honestly whether this is a configuration job, an integration project, or a case for rebuilding first.

A connection starts from €1,700 plus a monthly service fee, which covers the monitoring, the queue and keeping up with the vendor's API changes. Work outside a fixed scope is €95 per hour.

What moves the number is not the tool — it is how well the system on the other end is known. If JKC built your website, your webshop or your web application, we already know its data model, its edge cases and where its stock numbers really come from, and a connection into it is mostly configuration and testing. If it is a system we have never opened, we start with a short technical check of both sides and quote after that, so you are not paying hourly for us to work out the basics.

Two more things that move it, in our experience more than anything else: whether the tool has a real API or only a CSV export, and whether the sync has to go both ways. One-way is roughly half the work of two-way, because two-way means deciding, per field, which system wins when they disagree — and that decision is the expensive part, not the code.

Questions

Frequently asked questions about connecting WooCommerce

Both, and which one you need is usually obvious within the first conversation. A shop that mostly works gets connections built onto it. A shop where the plugin list has become the problem gets rebuilt on a clean WooCommerce foundation, with the connections it needs designed in from day one instead of retrofitted.

We would rather tell you honestly which situation you are in than sell a connection project onto a shop that will keep breaking underneath it regardless.

Free, 10 minutes

Not sure where the manual hours actually go?

That is what the Growth Scan is for. Ten minutes, no sales call attached: you get back where the double work sits, which connection would pay for itself first, and which one honestly would not.