{"id":351587,"date":"2026-08-26T15:00:49","date_gmt":"2026-08-26T15:00:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/a1-ebay-integration-for-woocommerce\/"},"modified":"2026-08-26T15:00:18","modified_gmt":"2026-08-26T15:00:18","slug":"a1-marketplace-sync-with-ebay-for-woocommerce","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/a1-marketplace-sync-with-ebay-for-woocommerce\/","author":23539502,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"1.2.9","stable_tag":"1.2.9","tested":"7.0.4","requires":"6.0","requires_php":"8.2","requires_plugins":null,"header_name":"A1 Marketplace Sync with eBay for WooCommerce","header_author":"Richard Rives","header_description":"Connects WooCommerce to eBay via eBay REST APIs.","assets_banners_color":"","last_updated":"2026-08-26 15:00:18","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/a1plugins.com\/a1-ebay-integration-for-woocommerce\/","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":40,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","changelog"],"tags":{"1.2.9":{"tag":"1.2.9","author":"a1plugins","date":"2026-08-26 15:00:18"}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3667310,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3667310,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256},"icon.svg":{"filename":"icon.svg","revision":3667310,"resolution":false,"location":"assets","locale":false}},"assets_banners":[],"assets_blueprints":{},"all_blocks":[],"tagged_versions":["1.2.9"],"block_files":[],"assets_screenshots":[],"screenshots":[]},"plugin_section":[],"plugin_tags":[1706,1446,8379,1558,286],"plugin_category":[45],"plugin_contributors":[274392,78154],"plugin_business_model":[],"class_list":["post-351587","plugin","type-plugin","status-publish","hentry","plugin_tags-ebay","plugin_tags-listing","plugin_tags-marketplace","plugin_tags-sync","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-a1plugins","plugin_contributors-freemius","plugin_committers-a1plugins"],"banners":[],"icons":{"svg":"https:\/\/ps.w.org\/a1-marketplace-sync-with-ebay-for-woocommerce\/assets\/icon.svg?rev=3667310","icon":"https:\/\/ps.w.org\/a1-marketplace-sync-with-ebay-for-woocommerce\/assets\/icon.svg?rev=3667310","icon_2x":false,"generated":false},"screenshots":[],"raw_content":"<!--section=description-->\n<p>A1 Marketplace Sync with eBay for WooCommerce connects your WooCommerce store to eBay, allowing you to manage eBay listings, sync inventory, and import orders directly from the WordPress admin.<\/p>\n\n<h4>Third-party services<\/h4>\n\n<p>This plugin connects to eBay's REST APIs (developer.ebay.com) to publish and revise listings, pull inventory\/price updates, and (on the Pro plan) import orders and push shipment tracking - your store and product data is sent to eBay to perform these actions. See <a href=\"https:\/\/www.ebay.com\/help\/policies\/member-behaviour-policies\/user-privacy-notice-privacy-policy?id=4260\">eBay's User Privacy Notice<\/a>.<\/p>\n\n<p>This plugin also uses the <a href=\"https:\/\/freemius.com\">Freemius<\/a> SDK for license management and plan gating, which may collect some usage data to enable licensing, in-dashboard updates, and payment processing. See <a href=\"https:\/\/freemius.com\/privacy\/\">Freemius's Privacy Policy<\/a> and <a href=\"https:\/\/freemius.com\/terms\/\">Terms of Service<\/a>.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Upload the plugin files to <code>\/wp-content\/plugins\/a1-marketplace-sync-with-ebay-for-woocommerce<\/code>, or install through the WordPress admin's Plugins screen.<\/li>\n<li>Activate the plugin.<\/li>\n<li>Go to WooCommerce \u2192 A1 Marketplace Sync with eBay for WooCommerce \u2192 Connections, and connect your eBay account (authorizes via eBay's own login, not a password you enter here).<\/li>\n<li>Map your WooCommerce product categories to eBay categories, then publish or import listings.<\/li>\n<\/ol>\n\n<p>Full setup walkthrough with screenshots: <a href=\"https:\/\/a1plugins.com\/a1-ebay-integration-for-woocommerce-docs\">a1plugins.com\/a1-ebay-integration-for-woocommerce-docs<\/a><\/p>\n\n<!--section=changelog-->\n<h4>1.2.9<\/h4>\n\n<ul>\n<li>wp.org Round 2 review fixes:<\/li>\n<li>Fix: Renamed 3 elements that used an inconsistent <code>a1wb<\/code> prefix (<code>a1wbAdmin<\/code>, <code>wp_ajax_a1wb_push_tracking<\/code>, <code>a1wbTrial<\/code>) to match the plugin's standard <code>a1woobay<\/code> prefix used everywhere else.<\/li>\n<li>Change: Removed the Pro gate on scheduled\/automatic eBay -&gt; WooCommerce sync - it shared its implementation with the free plan's manual \"Sync Now\" button, so blocking only the schedule was a runtime-only restriction rather than a genuinely separate feature. Automatic sync is now available on both plans.<\/li>\n<li>Change: Description Templates (reusable, token-driven eBay listing descriptions) moved to Pro, physically absent from the free build. Listings without a template still publish fine using the product's own WooCommerce description.<\/li>\n<\/ul>\n\n<h4>1.2.8<\/h4>\n\n<ul>\n<li>wp.org Round 1 review fixes:<\/li>\n<li>Change: Removed the free plan's 25-listing and 1-profile caps - listing and profile creation is now unlimited on the free plan. Free vs. Pro is now differentiated only by genuinely separate features (image sync, scheduled\/automatic sync, order import), which are physically absent from the free build rather than merely blocked.<\/li>\n<li>Fix: eBay Marketplace Account Deletion webhook endpoint (<code>class-a1woobay-compliance.php<\/code>) now requires a per-site secret in the endpoint path on both the GET challenge and POST deletion-notification requests, instead of accepting unauthenticated POSTs to a fixed URL. <strong>Existing installs: the account-deletion webhook URL has changed<\/strong> - after updating, re-copy the new URL from Settings and re-register it in your eBay Developer Portal, or deletion notifications will 404.<\/li>\n<li>Fix: Missing direct file access guard in <code>admin\/views\/settings-page.php<\/code> (was present but positioned after ~90 lines of executable code; now first statement in the file).<\/li>\n<li>Plugin renamed to \"A1 Marketplace Sync with eBay for WooCommerce\" per wp.org's naming guidelines (trademark placement).<\/li>\n<\/ul>\n\n<h4>1.2.7<\/h4>\n\n<ul>\n<li>Pre-submission cleanup, before this plugin's first wp.org review:<\/li>\n<li>Fix: Plugin URI pointed at a page that doesn't exist (<code>\/woobay<\/code>) - updated to the live page (<code>\/a1-marketplace-sync-with-ebay-for-woocommerce\/<\/code>).<\/li>\n<li>Add: <code>Requires Plugins: woocommerce<\/code> header.<\/li>\n<li>Fix: moved nine inline <code>&lt;script&gt;<\/code>\/<code>&lt;style&gt;<\/code> blocks (admin pages, the tracking meta box, and the product-edit metabox) to properly enqueued assets via <code>wp_enqueue_script()<\/code>\/<code>wp_enqueue_style()<\/code>, with <code>wp_localize_script()<\/code> for nonces\/AJAX URLs\/translated strings that used to be echoed directly into the page. One <code>&lt;style&gt;<\/code> block in the eBay listing-description template was deliberately left as-is - it's part of the HTML sent to eBay's API, not something WordPress renders, so the enqueue system doesn't apply there.<\/li>\n<\/ul>\n\n<h4>1.2.6<\/h4>\n\n<ul>\n<li>Freemius: added <code>premium_slug<\/code> (<code>a1-marketplace-sync-with-ebay-for-woocommerce-premium<\/code>) and <code>wp_org_gatekeeper<\/code> to the SDK init, matching the updated integration snippet Freemius's dashboard generated after the product rename there. <code>slug<\/code> (<code>a1-woobay<\/code>), the <code>is_premium<\/code> build-identity conditional, and the real <code>menu<\/code> config (with the <code>account<\/code> menu fix) were left exactly as-is - Freemius's generic template snippet shows different defaults for those three, but the existing values are the correct ones for this plugin.<\/li>\n<\/ul>\n\n<h4>1.2.5<\/h4>\n\n<ul>\n<li>Rename: renamed from \"A1-WooBay\" to \"A1 Marketplace Sync with eBay for WooCommerce\" (preemptive wp.org trademark compliance) - \"WooBay\" fused WooCommerce's \"Woo\" and eBay's \"Bay\" trademarks into one blended word, the same issue flagged on A1-WooCOG's own submission review. Text domain changed to <code>a1-marketplace-sync-with-ebay-for-woocommerce<\/code> to match. Internal constants, function\/class prefixes (AW_*, aw_*, A1WooBay_*), database meta keys, and the Freemius product slug (<code>a1-woobay<\/code>, tied to existing license records) are unchanged.<\/li>\n<\/ul>\n\n<h4>1.2.4<\/h4>\n\n<ul>\n<li>Fix (WordPress.org Guideline 5): the Pro-only <code>is__premium_only()<\/code> conditions for image sync, order import, tracking push, and scheduled sync were combined with <code>&amp;&amp;<\/code>\/<code>||<\/code> in the same condition (e.g. <code>is__premium_only() &amp;&amp; allow_x()<\/code>). Verified directly against an actual Freemius-generated free build that this compound form is NOT recognized by Freemius's code-stripping build step - only an isolated <code>is__premium_only()<\/code> condition is, matching the SDK's documented example. Restructured all four call sites so the Pro logic sits inside an isolated <code>is__premium_only()<\/code> block, with the license-tier check and free-plan fallback nested\/following separately. This also removes a dead reference to the stripped <code>A1WooBay_Orders<\/code> class that was otherwise sitting unreachable-but-present in the free build's <code>import_orders()<\/code>\/<code>push_tracking()<\/code> AJAX handlers.<\/li>\n<\/ul>\n\n<h4>1.2.3<\/h4>\n\n<ul>\n<li>Fix: added the missing <code>account<\/code> menu config to the Freemius SDK init - without it, there was no Account page for Freemius to render \"Activate License\" on after installing the premium zip (same fix already applied to A1-WooCOG).<\/li>\n<li>Packaging: added bin\/build-release.sh to produce the release zip directly (no longer relying on .gitattributes' export-ignore), and removed .gitattributes since it's no longer needed and was itself flagged as a disallowed hidden file when scanning the plugin folder directly.<\/li>\n<\/ul>\n\n<h4>1.2.2<\/h4>\n\n<ul>\n<li>Second Plugin Check pass, verified directly against the bundled scanner's own bundled PHPCS ruleset rather than assumed: replaced bare (int)\/(float)\/(array) casts with absint()\/sanitize_text_field()\/map_deep() on request data (type casts alone aren't recognized as sanitization by the scanner), added sanitize_text_field() to nonce values passed to wp_verify_nonce(), and added isset() checks before $_SERVER['REQUEST_METHOD'] comparisons. Remaining nonce-verification warnings on read-only redirect-flag notices and the OAuth callback (which uses a state-token check instead of a WP nonce, since eBay's server generates that redirect) are left as reviewed, expected warnings.<\/li>\n<\/ul>\n\n<h4>1.2.1<\/h4>\n\n<ul>\n<li>WordPress.org Plugin Check compliance: added missing translators comments, escaped remaining unescaped output, replaced strip_tags() with wp_strip_all_tags(), gated debug error_log() calls behind WP_DEBUG, guarded set_time_limit() for hosts that disable it, added wp_unslash() before sanitizing\/casting request data, and excluded dev-only dotfiles from the release package.<\/li>\n<\/ul>\n\n<h4>1.2.0<\/h4>\n\n<ul>\n<li>WordPress.org submission compliance (Guideline 5, no trialware): order import, scheduled\/automatic sync, and image sync are now removed entirely from the free build via Freemius's code-stripping (<code>__premium_only<\/code>), not just gated behind a license check. Existing customers who unlocked Pro in-place under the old model now need to download and install the separate premium zip from their Freemius account instead.<\/li>\n<\/ul>\n\n<h4>1.1.1<\/h4>\n\n<ul>\n<li>Fix: Freemius account\/license menu now appears correctly in WP admin sidebar<\/li>\n<li>Fix: Deletion log now filters out bot\/scanner requests; only real eBay notifications are logged<\/li>\n<li>Add: Clear Log button for eBay compliance deletion request log<\/li>\n<li>Fix: Verification token UI text clarified \u2014 you create the token, eBay does not provide it<\/li>\n<\/ul>\n\n<h4>1.1.0<\/h4>\n\n<ul>\n<li>Add: Freemius SDK integration for license management and distribution<\/li>\n<li>Add: Free\/Pro plan feature gating (25 listing cap, 1 profile, no image sync, no auto-sync, no order import on free)<\/li>\n<li>Add: 14-day Pro trial, no credit card required<\/li>\n<\/ul>\n\n<h4>1.0.6<\/h4>\n\n<ul>\n<li>Add: eBay Marketplace Account Deletion compliance webhook (required by eBay for all API apps)<\/li>\n<li>Add: Buyer username stored on order import for GDPR anonymization on deletion request<\/li>\n<\/ul>\n\n<h4>1.0.4<\/h4>\n\n<ul>\n<li>Fix: Removed duplicate stock update hook<\/li>\n<li>Add: Optional price pull from eBay (off by default to prevent feedback loops)<\/li>\n<\/ul>\n\n<h4>1.0.2<\/h4>\n\n<ul>\n<li>Add: Stock = 0 in WooCommerce automatically ends the eBay listing<\/li>\n<\/ul>\n\n<h4>1.0.0<\/h4>\n\n<ul>\n<li>Add: eBay listing status panel in WP product publish sidebar<\/li>\n<li>General stability improvements<\/li>\n<\/ul>","raw_excerpt":"Connects WooCommerce to eBay via eBay REST APIs.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/351587","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin"}],"about":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/types\/plugin"}],"replies":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/comments?post=351587"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/a1plugins"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=351587"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=351587"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=351587"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=351587"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=351587"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=351587"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}