Publish products from WordPress, let the plugin keep stock and prices aligned automatically, and get every eBay order inside WooCommerce. Built on eBay's official REST Inventory API, not the legacy Trading API.
Selling on your own site and on eBay usually means keeping two dashboards up to date by hand. The plugin removes the second dashboard.
Take the products you already have, pick a profile (pricing, shipping, template) and publish them. eBay becomes one more channel without rebuilding the catalog from scratch.
Import your existing listings as WooCommerce products, with variations, categories and photos. Your order history for the last two years comes in with one click too.
Several eBay accounts and marketplaces from the same WordPress, each with its own profile. If you install the plugin for your own clients there's the Relay Hub: you provide the eBay connection, without each client opening a developer account.
From connecting the account to the first synced sale without leaving WordPress.
One click through eBay's official OAuth flow. With the managed connection you don't need a developer account; if you already have one you can use your own keys. Tokens are encrypted in the database.
Marketplace, payment, return and shipping policies, price adjustment, description template, default category and condition. One profile applies to thousands of products at once.
The plugin checks that each product has everything the eBay category requires (specifics, condition, images, SKU) and tells you before, not after a rejection. Then it publishes, in bulk too, with a progress bar.
Every sale, restock or price change is reflected on eBay by itself. eBay orders land in WooCommerce with the "ebay" badge, and when eBay marks them shipped they move to Completed.
Six areas, each with the plugin's real features. Items marked Pro need a license; everything else is included in the Free plan too, within its limits.
Three separate steps. "Prepare" builds the draft locally without touching eBay; "Verify" creates the inventory item and the offer and surfaces every error; "Publish" puts it live. A listing is born correct instead of being suspended later.
Map WooCommerce categories to the official eBay taxonomy of the marketplace, in bulk from the "Categories" page or per product. Required aspects (Brand, Model, Size…) are filled from WooCommerce attributes, the SKU, the condition or the product title.
Every eBay category accepts different conditions. The "eBay condition" field in the product editor only shows the ones valid for the chosen category, so you avoid the classic "invalid condition ID" error that blocks publishing with other tools.
eBay requires a SKU for every item; many used or older products don't have one. The plugin generates a stable one at prepare time instead of stopping to ask you.
WooCommerce variations become a single eBay listing with a size/colour selector (native variations) or separate listings, one per variation. You choose per product: native ones perform better in categories that support them, separate ones work everywhere.
WYSIWYG editor with live preview on a real product. Dynamic placeholders for title, price, description, image gallery, attributes, category, condition, brand, weight and dimensions, plus your own CSS, header and footer. A different template per profile.
eBay reads photos from your site's public URLs. The plugin checks they're reachable and blocks publishing if the site is in maintenance mode or on a staging domain, instead of letting the call fail silently. Exported size is configurable.
Prepare, verify, publish, update or close hundreds of listings at once from the Listings page, with a progress bar and the option to cancel. Processed in batches of 5: no PHP timeouts, no blind waiting.
The "Publish to eBay" and "Remove from eBay" bulk actions live in the standard WooCommerce product list. A "Live on eBay" icon marks products already online, without opening the plugin.
Enable Best Offer on a profile's listings and set auto-accept and auto-decline thresholds, fixed or as a percentage of the price. eBay handles the negotiation on its own within your limits.
Manufacturer and EU responsible person required by the General Product Safety Regulation, sent to eBay with the listing for European marketplaces.
Every sale on the site, restock or manual quantity edit updates the eBay listing in the background. eBay sales reduce WooCommerce stock. With variations, sync happens per variation.
Stock changed? Only the availability update goes out. Price changed? Only the price. No rewriting of the whole listing on every edit: faster, and no risk of accidentally sending a zero quantity along with other fields.
If stock changes five times in thirty seconds, eBay receives only the last value. Fewer API calls, less risk of hitting eBay's daily limit.
Fixed or percentage markup on the WooCommerce price, up or down, to cover eBay fees. Per-product override when a specific price is needed. The Listings page shows WC price and eBay price side by side.
A "Cost" field in the product editor, never sent to eBay, shown as a column on the Listings page next to the prices: you see at a glance how much you make on each listing.
A profile bundles marketplace, eBay payment, return and shipping policies, description template, default category and condition, and location postcode. Apply it to thousands of products at once, duplicate it for a second marketplace.
Handling time, domestic service and cost, free shipping, international option with destinations: fill in the fields and the plugin creates or updates the shipping policy on eBay. Or link a policy you already have.
The "Update" button turns orange if the product was edited after the last sync and green "Up to date" when it's fine. One glance at the table tells you what needs doing.
eBay notifies your site as soon as an order arrives (Platform Notifications, with the challenge-response verification eBay requires). On top, a check every 15 minutes recovers anything a notification might have missed, never duplicating: each order is recognised by its eBay ID.
Products matched by SKU, quantities, prices, shipping address, phone number if the buyer shared it, "eBay" payment method, the real eBay order date. WooCommerce stock goes down accordingly.
An order imported from eBay is flagged as such: the stock drop it causes is never sent back to eBay. It's the best-known bug of sync tools, ruled out here by design.
Import every eBay order from the last two years (the most eBay allows), per connected account. Old orders come in already "Completed" with their original date.
When eBay marks an order as shipped, WooCommerce moves it to "Completed"; if it's cancelled on eBay, it becomes "Cancelled". Only for orders still "Processing": a status you changed by hand is never overwritten.
In WooCommerce's Origin column, imported orders show the eBay badge instead of "Unknown". Filters and search work like for any other order, HPOS compatible.
Buyer's eBay username, masked @members.ebay.com email, links to the listing and the item on eBay for each line, a short sync history. Even for lines whose SKU no longer exists in the catalog, which are still saved with name, quantity and price.
A button that corrects date, email and address of already-imported orders without touching products, quantities, prices or status. Useful after a plugin update or a history import.
Title, description, price, quantity, condition, specifics and images of each eBay item create or update a WooCommerce product. The listing stays linked: from then on stock and price sync both ways.
SKUs that belong to the same variation group on eBay are merged into a single WooCommerce variable product with the right attributes, instead of producing many simple products.
The item's eBay category is matched to a WooCommerce category using the same mapping you use for export, so the imported catalog is already organised.
Listing images are copied into your WordPress library and assigned to the product as featured image and gallery. Can be turned off if you'd rather manage photos by hand.
Listings created directly on the eBay site or by tools based on the old Trading API are invisible to the modern APIs. The Import page lists them, says which are eligible and migrates them to the Inventory API model with one click, then imports them. An eBay limitation, handled inside the plugin rather than outside.
Import runs in the background through WooCommerce's Action Scheduler queue: an item that fails doesn't block the others and is retried automatically. You can close the page and come back later.
Connect your seller account through eBay's official OAuth flow and that's it. No Developer Program registration, no keys to create, no forms to fill: the technical part is already done.
If you already have a developer keyset you can use it: direct OAuth between your site and eBay, no intermediary, the call limit entirely yours. Both modes coexist, even on different accounts.
If you install the plugin for your clients, your site can act as the hub: configure an eBay keyset once and hand out one token per client. They connect their eBay account in one click, you run no external server.
Italy, Germany, United States, United Kingdom, France and Spain. Each profile is tied to a marketplace, because categories, conditions and policies change by country: the same category can accept different conditions on EBAY_GB and EBAY_DE, and the plugin knows.
Each account can be sandbox or production, detected automatically. A .local, .test or staging domain switches off outbound stock sync and order import by itself: a test copy of the site never touches real listings.
OAuth tokens are stored AES-encrypted in the database and refreshed hourly with a safety margin. A connection diagnostics panel tells you right away if something is off.
Getting-started checklist, eBay connection status, products published, queued and failed, next order import, recent orders, activity and quick actions (sync taxonomy, verify prepared, publish verified, import orders now).
Every eBay call, every sync and every error in a filterable Log page, with the verbosity level you choose and automatic cleanup of logs older than 30 days. Each row on the Listings page has its own link to the log.
Every heavy job (publishing, sync, import) goes through the Action Scheduler already included in WooCommerce: retries with backoff, managed concurrency, no custom queue table to maintain. Inspect it from WooCommerce → Status → Scheduled Actions.
If a scheduled task (orders, taxonomy, token refresh) disappears from WP-Cron for any hosting-side reason, it's rescheduled on the next admin page load. No "not scheduled" sitting there for weeks.
eBay demands that every app implement the Marketplace Account Deletion notification, or the keys get suspended. It's included, with challenge-response verification and anonymisation of the linked buyer data: you stay compliant with no extra setup.
Permanently delete a product and the plugin closes the linked eBay listing, so no ghost listings remain. It also removes its photos from the media library, but only if no other product uses them; this second part can be turned off.
The license panel receives only domain, version numbers and, with a Pro license, listing counts and order amounts. Never your customers' names, emails or addresses. The Free plan's daily check-in can be turned off with a checkbox.
From the plugin, open a request form already filled with domain, plugin, WordPress and WooCommerce versions and license status. We reply by email, no separate ticket system to learn.
Many sync tools were born on the Trading API, the XML interface eBay is replacing. This plugin uses the REST Inventory, Fulfillment, Account and Taxonomy APIs from day one, and rules out by design the recurring problems anyone migrating from those tools knows well.
Conditions and item specifics are validated against the official taxonomy of the category and marketplace before publishing. Caches refresh themselves weekly.
An order that came from eBay never sends its own stock drop back to eBay. Updates send only the changed field, never a full "revise" that can zero a quantity.
A test copy of the site never touches real listings and orders: the plugin detects it from the domain and the WordPress environment, without you having to remember to switch anything off.
| Aspect | eBay Sync for WooCommerce | Tools based on the Trading API |
|---|---|---|
| eBay interface | REST Inventory API, the model eBay develops today | XML Trading API, the legacy interface |
| Stock and price updates | Only the changed field, with debounce | Often a full revise of the listing |
| Condition per category | Only valid conditions, read from eBay per marketplace | Often a fixed list: the "invalid condition ID" error is common |
| Work queue | WooCommerce's Action Scheduler, inspectable | Custom queues with their own tables to maintain |
| eBay developer account | Not needed (managed connection), optional if you have one | Varies: often required, or a centralised third-party relay |
| Listings created outside the plugin | Migration to the Inventory API model included (Pro) | Visible, but they stay on the legacy model |
| Your customers' data | Stays on your WordPress, never sent to the license panel | Depends on the vendor |
The Free plan never expires and includes every core feature within its limits. Move to Pro when you outgrow them.
Secure payment with Stripe, automatic invoice, subscription managed from your account. One license covers one site: activate it from the plugin with the key and move it to another domain whenever you want.
| What changes between Free and Pro | Free | Pro |
|---|---|---|
| Products published on eBay | 50 | Unlimited |
| Connected eBay accounts | 1 | Unlimited |
| eBay marketplaces | 1 | Unlimited |
| Profiles (pricing and policies) | 1 | Unlimited |
| Shipping profiles | 1 | Unlimited |
| Description templates | 1 | Unlimited |
| Listings importable from eBay | 10 | Unlimited |
| Best Offer with auto-accept and auto-decline | — | |
| GPSR compliance fields | — | |
| Legacy listing migration and import (Trading API) | — | |
| Stock, prices, orders, templates, variations, log, GDPReverything else in the plugin |
Going over a Free-plan limit only blocks new things beyond that limit: what you've already created is never deleted, hidden or stops syncing.
Current version 1.17.4, released 9 September 2026. Every work session ships a release; below is an extract from the last few weeks.
Faster item specifics. The required fields that appear after picking a category now show a loading indicator and use one eBay call less thanks to the category tree cache.
Order status from eBay. Shipped on eBay becomes "Completed", cancelled becomes "Cancelled", only for orders still processing. Order lines with a SKU not in the catalog are no longer lost, and every line links to the item on eBay.
eBay box on the order screen. Buyer's username and masked email, listing link, sync history. New "Sync orders" button and the real eBay order date preserved.
Publish from the product list. "Publish to eBay" and "Remove from eBay" bulk actions in the WordPress product list, "Live on eBay" icon for imported products too.
Yes. It's a WooCommerce extension and does nothing on its own. It needs WooCommerce 7.0 or later on WordPress 6.0 or later, with PHP 8.0 or later.
No. With the managed connection you link your seller account through eBay's normal authorisation flow and that's it. If you already have a developer keyset you can still use it, in direct mode, with no intermediary.
Install it like any WordPress plugin (Plugins → Add New → Upload Plugin), then from eBay Sync → Settings connect an eBay account and create a profile. The Free plan works right away, no key needed. For Pro, after purchase you'll find in your account on this panel ("My licenses") a key in the format WCES-PRO-XXXX-XXXX-XXXX to paste into Settings → License.
Only creating something new beyond the limit is blocked (a second profile, the 51st product, the 11th imported listing). Nothing you already have is deleted, hidden or stops syncing.
Yes. Items created through the Inventory API (by this plugin or other modern tools) are always importable. Those created directly on the eBay site or by tools based on the old Trading API must first be migrated to the Inventory API model: the Import page does it for you with one click (Pro feature), when eBay considers them eligible. It's an eBay API constraint, not the plugin's.
Yes, in both directions. Outbound, you choose per product between a single listing with a selector (native eBay variations) and separate listings per variation. Inbound, SKUs that belong to the same group on eBay become one WooCommerce variable product.
Yes. Each connected account can be sandbox or production, detected automatically. A .local, .test or staging domain switches off outbound stock sync and order import by itself, so a test copy of the site never touches your real listings.
To eBay, naturally, listing and policy data. To the license panel: on the Free plan only domain and plugin, WordPress and WooCommerce version numbers, once a day, switchable off in Settings. With a Pro license, additionally, listing counts by status, number of connected accounts, date of the last sync and, for orders, only ID, date, amount and currency. Never your customers' names, emails or addresses, on any plan.
One license covers one site at a time. Deactivating it from the plugin frees the slot and you can activate it on another domain, for instance when you change hosting. From your account on this panel you always see which domain it's active on.
Deactivating the plugin doesn't touch listings on eBay: they stay online as they are. Permanently deleting a product (not trashing it) closes the linked listing, so you don't sell something you no longer have. Deleting the linked photos, on the other hand, can be turned off in Settings.
The plugin goes back to the Free-plan limits. What you've already created stays and keeps syncing; only creating new things beyond the limits is blocked, and the Pro features (Best Offer, GPSR, legacy import) switch off. If the license panel is temporarily unreachable, the license is never downgraded because of a timeout.
From the plugin, in Settings → License panel, there's "Request support": it opens a form already filled with domain, versions and license status. Describe what's happening and we reply by email. You can also use the support page directly.
Register, connect your eBay account and publish your first 50 products free. Move to Pro only when you need more.