If you sell the same stock on your WooCommerce site and on eBay, you have two shop windows and one shelf. The moment those two windows disagree about what's on the shelf, you're either overselling (and refunding an annoyed eBay buyer, with your seller metrics taking the hit) or undercutting yourself by showing sold-out on stock you actually have. I build stock sync for UK retailers for a living, so I'll be upfront about that, but the comparison below is the same one I'd give a friend: what actually goes wrong, what plugins genuinely handle, and where the honest line is for spending on a bespoke build.
Run the free stock checker →In short: Every sale on either channel opens a window where the other channel shows wrong stock, and the length of that window is your risk. Manual updates fail at exactly the busy moments that matter. Interval-based plugins shrink the window to minutes or hours and suit simple catalogues at modest volume. Webhook and API-driven sync shrinks it to seconds and is what you want once oversells cost real money or your stock truth involves a supplier feed. Bespoke builds make sense above that line, not below it.
Saturday afternoon. You have one unit left of a £180 item, listed on the website and on eBay. At 2:14pm it sells on the website. WooCommerce decrements its own stock to zero, hides or marks the product, and everything on the site looks right. eBay knows nothing about any of this. At 4:30pm the eBay listing, still showing one available, sells too. Now you have two paid orders and one item. Someone gets a cancellation, and if it's the eBay buyer, that cancellation lands as a defect on your seller account: "out of stock" cancellations are one of the metrics eBay uses to demote and eventually restrict sellers. Do it a handful of times a quarter and you're not just refunding £180, you're degrading the account your eBay revenue depends on.
The mirror image costs quietly instead of loudly. A return gets restocked on the website, eBay never hears, and the eBay listing sits at zero on stock you could be selling. No angry email for that one, just revenue that never happens.
The zero-cost answer is discipline: every time something sells anywhere, someone updates the other channel. At two or three orders a day this sort of works, and plenty of sellers run this way for years, which is exactly why I don't dismiss it. But look at when it fails: sales cluster on evenings, weekends, and promotion days, precisely the hours nobody is standing at the laptop reconciling. The failure mode isn't "you forget sometimes", it's "you forget at the busiest, highest-stakes moments, systematically". And the workload scales with order volume, so the better your business does, the worse the manual approach performs. It's a race you have to win every single day and only need to lose once per oversell. When I audit a store's back office, "update eBay when things sell" written on a sticky note is one of the most reliable predictors of a defect-rate problem.
I'm deliberately not reviewing brands, because the products churn and the categories don't. There are three.
Interval-based sync plugins. A WordPress plugin (or its hosted service) polls both sides on a schedule, commonly every 5 to 60 minutes, and pushes stock changes across. This is most of the market. Honest assessment: for a simple catalogue, single SKUs, one warehouse, modest velocity, this shrinks your oversell window from "until a human notices" to minutes, which for many stores is genuinely good enough. The weaknesses are consistent across the category: the window still exists (a 15-minute interval on a fast-selling drop is plenty of time for a double sale); variation and multi-SKU mapping is where they get fragile, especially if your WooCommerce SKUs and eBay custom labels weren't set up to match; and the failure mode is silence. When an eBay auth token expires or an API call starts erroring, most of these keep running and simply stop syncing, and you find out via an oversell weeks later. If you run one, check its logs monthly and test one deliberate stock change end to end.
Multi-channel management platforms. Hosted systems that become your master inventory, with WooCommerce and eBay both hanging off them as sales channels, usually alongside Amazon and others. Stock logic is stronger, sync is faster, and they handle orders, listings, and couriers too. The honest costs: monthly fees that scale with SKUs or orders, a real migration project to adopt one, and a structural change, your stock truth now lives in a third party's system rather than your own site. Right answer for genuinely multi-channel operations at volume; heavy for "a website plus an eBay account".
The listing plugin that also syncs. Some plugins whose main job is pushing WooCommerce products onto eBay include stock sync as a feature. Fine as far as it goes, but sync bolted onto a lister tends to be the least robust of the three categories, so judge it as a sync tool, not on the quality of its listing features.
Whatever category you pick, the evaluation is the same: don't test the demo path, test the failures. What happens on a simultaneous sale? What happens when the eBay token expires? Is there a log you can actually read? A plugin that answers those three well is worth ten that have prettier dashboards. (The same category logic applies on other platforms; I've written up the Shopify side in the Shopify eBay inventory sync guide.)
The structural upgrade over polling is event-driven sync. WooCommerce can fire a webhook the moment an order is created; eBay's Platform Notifications can push the moment a listing sells. A small service sits in the middle, receives the event, and writes the new stock level to the other channel via its API within seconds. No interval, no window worth speaking of, and because the middle layer sees every event, it can also do the things polling can't: keep a log of every stock movement with its cause, refuse to apply an obviously wrong update (a feed suddenly zeroing 500 products), and alert a human when either side stops responding rather than failing silently. That last property, loud failure instead of quiet failure, is in my experience worth more than the speed.
This is what I build at GlideOps, so here's the shape of a real one rather than a sales diagram. For a UK workwear retailer I built a sync that keeps a live site matched to supplier stock feeds across 91,000 products: event-driven where the source supports it, scheduled where it doesn't, shipped with 121 automated tests, guarded so a malformed feed can't silently corrupt the catalogue, logging every change it makes, and alerting a human only when something genuinely needs one. A WooCommerce-and-eBay build is the same pattern with two channels instead of a feed: webhooks in, API writes out, one place that holds the truth, and a paper trail for every unit that moves.
The honest line: below roughly a few hundred orders a month with a straightforward catalogue, a decent interval plugin plus a monthly log check is the right answer, and I'll tell you so on a call. A bespoke build earns its cost when at least one of these is true: oversell cancellations are showing up in your eBay service metrics; your stock truth involves a third party (supplier feeds, a warehouse system) so no off-the-shelf pairing covers the whole chain; your catalogue or velocity makes polling intervals materially risky; or a plugin has already failed silently and cost you. Stale stock also leaks value outside eBay entirely, dead listings sitting in Google, which I've quantified in what dead listings cost, and the wider single-store plumbing is covered in the WooCommerce stock sync guide.
If you're at or past that line, the GlideOps stock sync service is exactly this: a built-for-your-stack sync with tests, guards, and alerting, priced as a project rather than a forever subscription. And whether you buy anything or not, start by measuring the damage: the free stock checker scans your live store and shows you every product currently showing wrong or dead stock, in minutes, before you spend a pound on fixing it.
Both channels sell from the same physical stock but each holds its own copy of the count. When the last unit sells on one channel, the other still shows it available until something updates it. Any order landing in that window is an oversell, and the window is however long your sync gap is.
You can at very low volume, but it fails predictably: evenings, weekends, holidays, and busy days are exactly when sales cluster and exactly when nobody is updating. Manual reconciliation is a race you run every day and only need to lose once per angry customer.
For a simple catalogue and modest volume, often yes. The honest weaknesses across the category are sync frequency (many are interval-based, leaving oversell windows), SKU matching fragility, variation handling, and silent failure when eBay tokens expire. Test the failure modes, not the demo.
When oversells are costing you eBay defect rate or account health, when your stock truth involves a third source like a supplier feed, when catalogue size makes interval polling too slow, or when a plugin has already failed silently. Below that, use a plugin and spend the money elsewhere.
Jordan Bee builds automation for UK online retailers at GlideOps. In June 2026 he manually audited 135 UK online shops, finding 4 in 10 showing sold-out products still live and ranking on Google, research that underpins these guides and the free dead-listing checker. He has built stock-sync systems covering 91,000+ products for UK retailers.
The free checker scans your live store and shows every product with wrong or dead stock right now, the raw material for deciding whether a plugin or a proper sync is your answer, in minutes, no changes made.
Run the free stock checker →