LystoSync for eBay

Description

LystoSync for eBay connects WooCommerce to eBay. Publish products as listings, keep prices and stock in sync, and end listings when items sell out.

Core features (free):

  • Publish WooCommerce products as eBay fixed-price or auction listings
  • Edit listings: price, quantity, title, description
  • End (withdraw) listings at any time
  • Auto-relist expired listings
  • Manual Relist action from the listings table
  • Listing profiles: reusable templates with eBay category, shipping, payment, and return policies
  • Per-product shipping weight and dimensions sent to eBay
  • Description templates with placeholder support
  • GPSR compliance fields: manufacturer and responsible persons for EU product safety
  • Archive ended listings on a nightly schedule
  • Auto-sync on product save: changes push to eBay when you update a WooCommerce product
  • Stock control: auto-end or update quantity when WooCommerce stock hits zero
  • Background sync: queued listing updates pushed on a schedule
  • Multiple eBay accounts
  • OAuth account connection
  • Business policy sync: pulls fulfillment, payment, and return policies from eBay

Pro features (LystoSync Pro):

  • Import existing eBay listings into WooCommerce
  • Migrate from WP-Lister Pro for eBay: listings, category mappings, variations, and profiles
  • Orders admin page: view, search, and manage imported eBay orders
  • Automated order import on a schedule
  • Mark orders as shipped on eBay when a WooCommerce order completes
  • Shipment tracking: upload carrier and tracking number to eBay
  • Automated buyer feedback after shipment
  • WooCommerce to eBay category mapping
  • Background inventory check: pulls live eBay status and updates listing state
  • Faster sync intervals (5 and 15 minutes; free is fixed at 30)
  • Sales sync toggle: pause all eBay syncs without deleting listings
  • In-dashboard Pro updates with license key activation

How it works:

LystoSync handles eBay OAuth tokens server-side, so you never touch API credentials. You need a free LystoSync account and an eBay seller account.

External Services

This plugin transmits data to two external services:

LystoSync (ebay-api.lystosync.com)

All eBay API requests go through ebay-api.lystosync.com. On account connection, your site URL and license key are sent to authenticate. Subsequent requests include product data, pricing, inventory levels, order details, and shipment information, depending on which features you use. No data is sent until you connect an eBay account.

Separately, the plugin can check for service notices (eBay API outages, critical fixes, and eBay changes that need action on your account). This is optional and off by default. You are asked once, at the end of setup, and can change the answer at any time under Settings, Advanced. While it is off, no request is made. While it is on, the check sends your plugin, WordPress, WooCommerce and PHP versions and your site language, and nothing else: no site address, email, eBay account, or customer or order data.

  • Service: lystosync.com
  • Privacy policy: https://lystosync.com/privacy
  • Terms of service: https://lystosync.com/terms

eBay

Product listings, pricing, inventory, and shipment data are submitted to eBay via the LystoSync middleware. eBay’s own privacy policy and user agreement govern how eBay handles that data.

  • Service: ebay.com
  • Privacy policy: https://www.ebay.com/help/policies/member-behaviour-policies/user-privacy-notice-privacy-policy?id=4260
  • User agreement: https://www.ebay.com/help/policies/member-behaviour-policies/user-agreement?id=4259

Source Code

The human-readable source files for all compiled assets ship with the plugin, in
resources/js/ and resources/css/, alongside the build script (build.js) and
the build dependencies (package.json). Every generated file in dist/ also
carries a header comment naming the source file it was built from.

Build tools required: Node.js, npm

To regenerate the compiled files in dist/:

  1. Run npm install to install dependencies (esbuild, PostCSS, Autoprefixer).
  2. Run npm run build (or node build.js) to compile and minify all assets.

The build uses esbuild for JavaScript bundling and minification, and PostCSS with Autoprefixer for CSS.

Compiled file => source file:

  • dist/admin.js => resources/js/app.js
  • dist/accounts.js => resources/js/accounts.js
  • dist/listings.js => resources/js/listings.js
  • dist/templates.js => resources/js/templates.js
  • dist/template-editor.js => resources/js/template-editor.js
  • dist/profiles.js => resources/js/profiles.js
  • dist/settings.js => resources/js/settings.js
  • dist/setup.js => resources/js/setup.js
  • dist/setup-license.js => resources/js/setup-license.js
  • dist/import.js => resources/js/import.js
  • dist/wple-migration.js => resources/js/wple-migration.js
  • dist/product-overrides.js => resources/js/product-overrides.js
  • dist/product-metabox.js => resources/js/product-metabox.js
  • dist/products-bulk-list.js => resources/js/products-bulk-list.js
  • dist/order-metabox.js => resources/js/order-metabox.js
  • dist/admin.css => resources/css/design-system.css + resources/css/admin.css + resources/css/category-picker.css
  • dist/product-overrides.css => resources/css/product-overrides.css
  • dist/product-metabox.css => resources/css/product-metabox.css
  • dist/order-metabox.css => resources/css/order-metabox.css

Each JavaScript entry point also pulls in shared modules from resources/js/lib/,
which are bundled into the output rather than shipped as separate files.

The SortableJS library (node_modules/sortablejs, bundled into dist/profiles.js and dist/settings.js) is available at https://github.com/SortableJS/Sortable under the MIT license.

Bundled fonts. The admin interface uses two self-hosted webfonts, copied from
resources/fonts/ to dist/fonts/ by the build. Nothing is loaded from a font
CDN or any other third-party host.

  • DM Sans, Copyright 2014 The DM Sans Project Authors, https://github.com/googlefonts/dm-fonts
  • Syne, Copyright 2017 The Syne Project Authors, https://gitlab.com/bonjour-monde/fonderie/syne-typeface

Both are licensed under the SIL Open Font License 1.1. The full license texts
ship as resources/fonts/OFL-DM-Sans.txt and resources/fonts/OFL-Syne.txt.

Installation

  1. Upload the plugin to your /wp-content/plugins/ directory or install via the WordPress plugin screen.
  2. Activate the plugin through the Plugins screen.
  3. Go to LystoSync Accounts and connect your eBay seller account via OAuth.
  4. Create a listing profile under LystoSync Profiles with your preferred eBay category, shipping policy, and return policy.
  5. Assign the profile to a product and publish it to eBay from the product edit screen or the Listings table.

Requires WooCommerce 8.0 or later.

FAQ

Do I need an eBay developer account or API keys?

No. LystoSync handles all eBay API authentication through its service at ebay-api.lystosync.com. You connect your eBay seller account via the standard eBay OAuth flow. No API keys to manage.

Is a LystoSync account required?

Yes. Create a free account at lystosync.com. The plugin uses it to authenticate with ebay-api.lystosync.com, which handles eBay API calls on your behalf.

Which eBay sites are supported?

Supported marketplaces include eBay.com, eBay.co.uk, eBay.de, eBay.fr, eBay.it, eBay.es, eBay.com.au, and others.

Can I connect more than one eBay account?

Yes. Each account can have its own profiles and listings.

Does this work with variable products?

Yes. Each variation publishes as a separate eBay listing.

What happens to my eBay listings if I deactivate the plugin?

Deactivating stops all syncing. Your live eBay listings stay active on eBay — none are ended.

Where can I get support?

Open a support thread in the WordPress.org support forum or visit lystosync.com for Pro support.

Reviews

There are no reviews for this plugin.

Contributors & Developers

“LystoSync for eBay” is open source software. The following people have contributed to this plugin.

Contributors

Translate “LystoSync for eBay” into your language.

Interested in development?

Browse the code, check out the SVN repository, or subscribe to the development log by RSS.

Changelog

1.3.0

Added:
* Item specifics now map local (non-taxonomy) WooCommerce attributes, not just global taxonomy ones, with a local attribute taking priority over a same-named global one.
* A one-time dialog asks existing installs whether to check for eBay service notices before the check runs.
* German, French, Italian and Spanish translations, bundled so the admin UI is localized out of the box.

Changed:
* Every REST call the plugin’s admin screens make now goes through wp.apiFetch instead of hand-built fetch requests.

Fixed:
* Product images no longer silently skip eBay Picture Service upload when the listing image size setting is set below Full.
* Sites with plain permalinks got a 404 on every REST call (categories, item specifics, conditions, GPSR labels, policies, store categories, account connect, import review) because a hand-built query string collided with the permalink fallback’s own.
* A listing that sells out on eBay no longer lands in the Error tab instead of Ended: the follow-up end/inventory call is expected to fail once eBay has already closed it out, and that’s now recognized rather than treated as a sync failure.
* A permanently rejected Trading API call is no longer retried four times with a generic timeout message; eBay’s actual rejection reason now reaches the seller.
* Saving a profile’s price settings no longer queues a sync per variation child in addition to the listing itself.
* The OAuth callback now validates the state parameter before using it to address a transient.
* The license key is no longer returned in cleartext from Settings or shown in the setup wizard.
* Text with HTML entities (e.g. “Black & White”) now decodes before reaching eBay, instead of appearing verbatim in the title, item specifics, and variation specifics.
* A failed eBay Picture Service upload now aborts the sync instead of silently mixing self-hosted and eBay-hosted image URLs, which eBay rejects outright.
* A variation dropped during import (usually a duplicate SKU) is now reported by name and reason instead of being silently counted as imported.
* The {{brand}} description placeholder now resolves through the same override chain as the listing payload, instead of reading the brand taxonomy directly.

1.2.0

Added:
* An Import Categories option that assigns imported products to a matching WooCommerce category based on the eBay category path.
* A locking mechanism that prevents a double-click on Import, or a scheduled run landing on top of one already in progress, from creating duplicate orders or double-reducing stock.
* A connected account now seeds its order-sync cursor at connect time, so a first sync can’t reach back and re-process orders already fulfilled.
* Keyboard accessibility for the category picker and modal dialogs, with accessible labels on row-selection checkboxes.
* A Clear EPS cache bulk action for forcing a re-upload of eBay-hosted images.
* An image transfer method setting for EPS uploads: upload the file directly, or hand eBay a link to fetch it.

Changed:
* Renamed “Sync interval” to “Order sync interval” and clarified that it governs order imports only, not listing/stock syncs.
* The description gallery now serves images from eBay instead of the store when eBay Picture Service uploads are on.
* The setup checklist can now be dismissed at any point, not only once every step is complete, via a clearer “Skip setup” link.

Fixed:
* Listings with an EAN, UPC, or ISBN no longer fail to publish outright.
* Two settings that rendered but silently failed to save (respecting WooCommerce’s out-of-stock threshold; forwarding shipment tracking to eBay orders) now save correctly.
* LystoSense suggestions no longer fatal the request on an upstream failure; the failure is now logged.
* LystoSense now adds a suggested value as a custom option when it isn’t already in the field’s list.
* A missing product query no longer fatals the eBay status column on the WooCommerce Products list.
* Plugin admin page headers now align with WordPress’s Screen Options tab.
* The API log table no longer stretches to fit long error messages; errors show on their own row.
* Saving settings no longer resets or interrupts the recurring order-import and inventory-check schedules.
* Decimal values like shipping weight now reach eBay and the API log as the number entered, not a floating-point expansion.
* Images referenced by templated descriptions are now converted from http to https before publish.

1.1.0

Added:
* A first-run setup wizard covering the account, business policies, ship-from location, category and template.
* An import review step: listings are gathered and filtered first, so you choose what to import before anything is created.
* Item specifics from imported listings are mirrored into WooCommerce product attributes.
* An auction’s end date in the listings Type column.
* A per-page screen option on Listings and Orders.

Changed:
* Listings imported from eBay are now managed over the Trading API, variations included.
* Images are uploaded through eBay’s Media API.
* The import lookback now defaults to 12 months.
* The admin no longer loads fonts, or any other asset, from a third-party host.
* Bulk listing actions and the status tabs run in far fewer database queries.

Fixed:
* An auction the seller ended by hand on eBay is no longer relisted automatically.
* An auction’s Buy It Now price is now correctly sent to eBay.
* Auction end dates no longer go stale after a re-sync restarts the auction on eBay.
* A listing’s format now follows its assigned profile.
* Trashed listings show as Trashed in the listings table.
* Ship-from locations update on eBay when the address changes.

1.0.1

Added:
* Listing descriptions are now imported from eBay along with existing listings.

Changed:
* Admin prices now display in the marketplace currency instead of always in dollars.

Fixed:
* Custom item specifics that eBay does not suggest are no longer dropped.
* Ship-from location failures after upgrading to the opt-in store address.
* Update checks no longer run when no license is connected.
* The inventory location probe no longer shows as a failed API call in the log.

1.0.0

  • Initial release.