{"id":396321,"date":"2026-11-08T22:14:01","date_gmt":"2026-11-08T22:14:01","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/smartstorelabs-supplier-sync\/"},"modified":"2026-11-08T22:13:28","modified_gmt":"2026-11-08T22:13:28","slug":"smartstorelabs-supplier-sync","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/smartstorelabs-supplier-sync\/","author":23592931,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.5.4","stable_tag":"0.5.4","tested":"7.1.4","requires":"6.0","requires_php":"7.4","requires_plugins":null,"header_name":"SmartStoreLabs Supplier Sync","header_author":"SmartStoreLabs","header_description":"Keeps WooCommerce prices and stock in step with supplier websites, even when the supplier has no product feed. Preview first, safe by design.","assets_banners_color":"5c97e4","last_updated":"2026-11-08 22:13:28","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"https:\/\/www.smartstorelabs.com\/plugins\/","header_author_uri":"https:\/\/www.smartstorelabs.com","rating":0,"author_block_rating":0,"active_installs":0,"downloads":39,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","faq","changelog"],"tags":{"0.5.4":{"tag":"0.5.4","author":"smartstorelabs","date":"2026-11-08 22:13:28","revision":3791570}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3791570,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3791570,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3791570,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3791570,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.5.4"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3791570,"resolution":"1","location":"assets","locale":"","width":1512,"height":811},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3791570,"resolution":"2","location":"assets","locale":"","width":1512,"height":811}},"screenshots":{"1":"Setup: load a supplier page, click the price and the other fields, and the plugin writes the selectors for you.","2":"The preview table: every price and stock change with the reason, before anything is written. Big price jumps wait for your confirmation."}},"plugin_section":[],"plugin_tags":[39071,233142,171167,62668,286],"plugin_category":[45],"plugin_contributors":[78154,289081],"plugin_business_model":[],"class_list":["post-396321","plugin","type-plugin","status-publish","hentry","plugin_tags-dropshipping","plugin_tags-price-sync","plugin_tags-stock-sync","plugin_tags-supplier","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-freemius","plugin_contributors-smartstorelabs","plugin_committers-smartstorelabs"],"banners":{"banner":"https:\/\/ps.w.org\/smartstorelabs-supplier-sync\/assets\/banner-772x250.png?rev=3791570","banner_2x":"https:\/\/ps.w.org\/smartstorelabs-supplier-sync\/assets\/banner-1544x500.png?rev=3791570","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/smartstorelabs-supplier-sync\/assets\/icon-128x128.png?rev=3791570","icon_2x":"https:\/\/ps.w.org\/smartstorelabs-supplier-sync\/assets\/icon-256x256.png?rev=3791570","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/smartstorelabs-supplier-sync\/assets\/screenshot-1.png?rev=3791570","caption":"Setup: load a supplier page, click the price and the other fields, and the plugin writes the selectors for you."},{"src":"https:\/\/ps.w.org\/smartstorelabs-supplier-sync\/assets\/screenshot-2.png?rev=3791570","caption":"The preview table: every price and stock change with the reason, before anything is written. Big price jumps wait for your confirmation."}],"raw_content":"<!--section=description-->\n<p>SmartStoreLabs Supplier Sync reads the price and availability from your supplier's product pages and updates the matching WooCommerce products.<\/p>\n\n<p><strong>How it works<\/strong><\/p>\n\n<ol>\n<li>Add the supplier page address to each product (or each variation).<\/li>\n<li>Open WooCommerce &gt; Supplier Sync. Load a supplier product page and click the price, the availability button and the other fields on it; the plugin writes the selectors for you. No CSS knowledge needed. Test the page.<\/li>\n<li>Press \"Check now\". You see a table of what would change and why. Nothing is written yet.<\/li>\n<li>Apply the reviewed changes. Every run is saved and can be undone.<\/li>\n<\/ol>\n\n<p>The free version has no limit on products or checks.<\/p>\n\n<p><strong>Built to protect your catalog<\/strong><\/p>\n\n<ul>\n<li>A page that fails to load never makes a product \"out of stock\".<\/li>\n<li>A page the plugin cannot read is skipped and reported, not guessed.<\/li>\n<li>A suspicious price jump waits for your confirmation.<\/li>\n<li>If many sources fail or suddenly look sold out, the whole run stops.<\/li>\n<li>Supplier addresses are checked so the plugin can never be pointed at your own server or private network.<\/li>\n<\/ul>\n\n<p><strong>Reads data automatically when it can<\/strong><\/p>\n\n<p>Prices and availability published as schema.org data (JSON-LD, microdata) or Open Graph tags are detected without any setup. For other pages you paste a CSS selector.<\/p>\n\n<p><strong>Supplier feed instead of pages<\/strong><\/p>\n\n<p>If your supplier gives partners a product feed (YML, Prom\/Horoshop export, or Google Merchant XML), paste its address in Setup. Prices and stock then come from the feed: no supplier page is opened, so shops that block automatic page requests are no problem. Products are matched by their supplier page address or by SKU. A product missing from the feed is skipped and reported, never marked out of stock. The feed is read as plain XML only (no external files, no scripts).<\/p>\n\n<p><strong>Shops that draw the price with JavaScript<\/strong><\/p>\n\n<p>Many such shops still send the data inside the page (Next.js, Nuxt and similar). The plugin finds the product's price there when the page's own product name identifies it, and refuses to guess when it cannot. You can also type the path to the value (for example <code>props.pageProps.product.price<\/code>). Nothing is executed; the data is only read.<\/p>\n\n<p><strong>Pro: import new products<\/strong><\/p>\n\n<p>Point the plugin at a category page of your supplier (and the \"next page\" link), paste product addresses, or take the products from the supplier feed (optionally only one feed category). It reads every product with the fields you picked, and shows a table of what would be created: name, price with your markup, photos, category. Tick the products you want. They are created as drafts, linked to the supplier page so price sync works at once. Existing products (same SKU or same supplier page) are never touched, and every import can be undone (the products go to the trash). You are responsible for having the right to use the supplier's texts and photos.<\/p>\n\n<p><strong>Pro: scheduled checks<\/strong><\/p>\n\n<p>The Pro version checks your supplier pages by itself every hour, twice a day or daily, emails you a report, and can apply the changes automatically. Automatic runs keep every safety rule: big price jumps are held back, a run that looks wrong is stopped and never applied, and each run can be undone.<\/p>\n\n<h3>External services<\/h3>\n\n<p>The plugin requests the supplier product pages you add, from your own server. It sends no data to SmartStoreLabs.<\/p>\n\n<!--section=faq-->\n<dl>\n<dt id=\"a%20product%20page%20shows%20%22page%20could%20not%20be%20read%22.%20why%3F\"><h3>A product page shows \"Page could not be read\". Why?<\/h3><\/dt>\n<dd><p>The site may block automated requests, load its prices with JavaScript, or sit behind a bot check. A plugin running on your server cannot open such pages. Nothing is changed for those products. Ask the supplier for a product feed (best), or to allow your server; the plugin does not try to get around a site's protection.<\/p><\/dd>\n<dt id=\"can%20it%20make%20my%20products%20%22out%20of%20stock%22%20by%20mistake%3F\"><h3>Can it make my products \"out of stock\" by mistake?<\/h3><\/dt>\n<dd><p>A page that fails to load never does. A product is marked out of stock only when its page was read successfully, the price was found, and the buy button you chose is missing. If many products would sell out at once, the whole run stops.<\/p><\/dd>\n<dt id=\"does%20it%20work%20with%20variable%20products%3F\"><h3>Does it work with variable products?<\/h3><\/dt>\n<dd><p>Yes. Set the supplier page on each variation.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.5.4<\/h4>\n\n<ul>\n<li>Inline scripts moved to wp_add_inline_script, translation files left to translate.wordpress.org, WordPress functions for URL parsing and tag stripping, input handling notes.<\/li>\n<\/ul>\n\n<h4>0.5.2<\/h4>\n\n<ul>\n<li>The Freemius opt-in no longer blocks the plugin screen. A quiet \"Share\" link lets you opt in whenever you like.<\/li>\n<\/ul>\n\n<h4>0.5.1<\/h4>\n\n<ul>\n<li>Connected to the Freemius store for licences and updates; screenshots and plugin icons added.<\/li>\n<\/ul>\n\n<h4>0.5.0<\/h4>\n\n<ul>\n<li>Supplier feed (YML, Google Merchant XML) as a source for price and stock sync, with a \"Check the feed\" button.<\/li>\n<li>Pro: import new products from the supplier feed, optionally one feed category.<\/li>\n<li>Reads prices from data embedded in the page (Next.js, Nuxt, window state), automatically when the product is identified by name, or by a typed path.<\/li>\n<li>Product feed and page requests: larger size cap for feeds, XML read without external entities.<\/li>\n<\/ul>\n\n<h4>0.4.0<\/h4>\n\n<ul>\n<li>Pro: import new products from a supplier category (list pages, next page, pasted addresses), preview table, markup and rounding, photos, categories, drafts, undo.<\/li>\n<li>The picker can also pick the product links and the next page link on a list page.<\/li>\n<\/ul>\n\n<h4>0.3.0<\/h4>\n\n<ul>\n<li>New screen: Setup \/ Check products \/ Schedule \/ History tabs, getting-started steps, field chips next to the page copy, summary and price-change percentages in the preview, clear empty states.<\/li>\n<li>Click-to-pick: choose fields by clicking on a safe copy of the supplier page (price, availability, SKU, name, description, photos, category, brand).<\/li>\n<li>Page test also reads name, brand, category, description and photos.<\/li>\n<li>Option for shops that show a short \"checking your browser\" page that sets a cookie.<\/li>\n<\/ul>\n\n<h4>0.2.0<\/h4>\n\n<ul>\n<li>Admin screen: supplier profile, page test, preview table, apply, history with undo.<\/li>\n<li>Supplier page field on products and variations.<\/li>\n<li>Pro: scheduled checks with email reports and optional automatic apply.<\/li>\n<li>Ukrainian translation.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Core engine: price parsing, address guard, CSS selector reader, schema.org detection, decision rules, safe HTTP client.<\/li>\n<\/ul>","raw_excerpt":"Keep WooCommerce prices and stock in step with supplier websites, even without a product feed. Preview first, safe by design.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/396321","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=396321"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/smartstorelabs"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=396321"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=396321"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=396321"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=396321"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=396321"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=396321"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}