{"id":362373,"date":"2026-09-02T18:33:49","date_gmt":"2026-09-02T18:33:49","guid":{"rendered":"https:\/\/wordpress.org\/plugins\/supplier-price-guard\/"},"modified":"2026-09-02T18:33:32","modified_gmt":"2026-09-02T18:33:32","slug":"costharbor-supplier-updates","status":"publish","type":"plugin","link":"https:\/\/wordpress.org\/plugins\/costharbor-supplier-updates\/","author":23558765,"comment_status":"closed","ping_status":"closed","template":"","meta":{"version":"0.1.2","stable_tag":"0.1.2","tested":"7.1","requires":"6.5","requires_php":"7.4","requires_plugins":null,"header_name":"CostHarbor Supplier Updates for WooCommerce","header_author":"CostHarbor Supplier Updates for WooCommerce Contributors","header_description":"Safely preview and apply supplier cost CSV updates to WooCommerce products.","assets_banners_color":"f5f8fa","last_updated":"2026-09-02 18:33:32","external_support_url":"","external_repository_url":"","donate_link":"","header_plugin_uri":"","header_author_uri":"","rating":0,"author_block_rating":0,"active_installs":0,"downloads":43,"num_ratings":0,"support_threads":0,"support_threads_resolved":0,"author_block_count":0,"sections":["description","installation","faq","changelog"],"tags":{"0.1.2":{"tag":"0.1.2","author":"spguard","date":"2026-09-02 18:33:32","revision":3678534}},"upgrade_notice":[],"ratings":[],"assets_icons":{"icon-128x128.png":{"filename":"icon-128x128.png","revision":3678534,"resolution":"128x128","location":"assets","locale":"","width":128,"height":128},"icon-256x256.png":{"filename":"icon-256x256.png","revision":3678534,"resolution":"256x256","location":"assets","locale":"","width":256,"height":256}},"assets_banners":{"banner-1544x500.png":{"filename":"banner-1544x500.png","revision":3678534,"resolution":"1544x500","location":"assets","locale":"","width":1544,"height":500},"banner-772x250.png":{"filename":"banner-772x250.png","revision":3678534,"resolution":"772x250","location":"assets","locale":"","width":772,"height":250}},"assets_blueprints":{},"all_blocks":[],"tagged_versions":["0.1.2"],"block_files":[],"assets_screenshots":{"screenshot-1.png":{"filename":"screenshot-1.png","revision":3678534,"resolution":"1","location":"assets","locale":"","width":1265,"height":938},"screenshot-2.png":{"filename":"screenshot-2.png","revision":3678534,"resolution":"2","location":"assets","locale":"","width":1265,"height":1250},"screenshot-3.png":{"filename":"screenshot-3.png","revision":3678534,"resolution":"3","location":"assets","locale":"","width":1265,"height":1250},"screenshot-4.png":{"filename":"screenshot-4.png","revision":3678534,"resolution":"4","location":"assets","locale":"","width":1265,"height":938},"screenshot-5.png":{"filename":"screenshot-5.png","revision":3678534,"resolution":"5","location":"assets","locale":"","width":1265,"height":938}},"screenshots":{"1":"Upload a supplier CSV to begin a review-first pricing workflow.","2":"Map the required SKU and Supplier Cost columns without changing products yet.","3":"Choose markup or target margin and set the price-change warning threshold.","4":"Review old and proposed costs and prices; dangerous changes stand out before apply.","5":"See exactly what changed and roll back the supplier cost and regular price when needed."}},"plugin_section":[],"plugin_tags":[132181,567,6601,4394,286],"plugin_category":[45],"plugin_contributors":[278921],"plugin_business_model":[],"class_list":["post-362373","plugin","type-plugin","status-publish","hentry","plugin_tags-cost-of-goods","plugin_tags-csv","plugin_tags-inventory","plugin_tags-pricing","plugin_tags-woocommerce","plugin_category-ecommerce","plugin_contributors-spguard","plugin_committers-spguard"],"banners":{"banner":"https:\/\/ps.w.org\/costharbor-supplier-updates\/assets\/banner-772x250.png?rev=3678534","banner_2x":"https:\/\/ps.w.org\/costharbor-supplier-updates\/assets\/banner-1544x500.png?rev=3678534","banner_rtl":false,"banner_2x_rtl":false},"icons":{"svg":false,"icon":"https:\/\/ps.w.org\/costharbor-supplier-updates\/assets\/icon-128x128.png?rev=3678534","icon_2x":"https:\/\/ps.w.org\/costharbor-supplier-updates\/assets\/icon-256x256.png?rev=3678534","generated":false},"screenshots":[{"src":"https:\/\/ps.w.org\/costharbor-supplier-updates\/assets\/screenshot-1.png?rev=3678534","caption":"Upload a supplier CSV to begin a review-first pricing workflow."},{"src":"https:\/\/ps.w.org\/costharbor-supplier-updates\/assets\/screenshot-2.png?rev=3678534","caption":"Map the required SKU and Supplier Cost columns without changing products yet."},{"src":"https:\/\/ps.w.org\/costharbor-supplier-updates\/assets\/screenshot-3.png?rev=3678534","caption":"Choose markup or target margin and set the price-change warning threshold."},{"src":"https:\/\/ps.w.org\/costharbor-supplier-updates\/assets\/screenshot-4.png?rev=3678534","caption":"Review old and proposed costs and prices; dangerous changes stand out before apply."},{"src":"https:\/\/ps.w.org\/costharbor-supplier-updates\/assets\/screenshot-5.png?rev=3678534","caption":"See exactly what changed and roll back the supplier cost and regular price when needed."}],"raw_content":"<!--section=description-->\n<p>CostHarbor Supplier Updates for WooCommerce imports supplier CSV price lists through a safety-first workflow: upload, map, configure, preview, apply, and review results.<\/p>\n\n<p>It matches both product and variation SKUs. It never creates products. Invalid, duplicate, and unmatched rows are blocked. Large proposed price changes are highlighted using a configurable threshold. Every apply stores the prior supplier cost and regular price for rollback.<\/p>\n\n<p>All processing and data storage stays in WordPress and WooCommerce. The plugin sends no telemetry, analytics, CSV content, or store data to external services.<\/p>\n\n<h3>Privacy<\/h3>\n\n<p>CostHarbor Supplier Updates for WooCommerce processes CSV content locally and stores import summaries, rollback snapshots, and supplier cost metadata in the site's WordPress database. It does not transmit data externally. Import history is retained for the 20 most recent imports. By default, uninstalling preserves supplier costs and import history as business data while removing temporary data. Administrators can explicitly opt into permanent data deletion before uninstalling.<\/p>\n\n<!--section=installation-->\n<ol>\n<li>Install and activate WooCommerce.<\/li>\n<li>Upload the <code>costharbor-supplier-updates<\/code> folder or ZIP through Plugins &gt; Add New &gt; Upload Plugin.<\/li>\n<li>Activate CostHarbor Supplier Updates for WooCommerce.<\/li>\n<li>Open WooCommerce &gt; CostHarbor Supplier Updates for WooCommerce.<\/li>\n<li>Upload a CSV and map its SKU and Supplier Cost columns.<\/li>\n<\/ol>\n\n<!--section=faq-->\n<dl>\n<dt id=\"does%20it%20change%20products%20immediately%20after%20upload%3F\"><h3>Does it change products immediately after upload?<\/h3><\/dt>\n<dd><p>No. There is no direct apply path. You must create and review a preview, then explicitly apply safe rows.<\/p><\/dd>\n<dt id=\"does%20it%20create%20products%20for%20unknown%20skus%3F\"><h3>Does it create products for unknown SKUs?<\/h3><\/dt>\n<dd><p>No. Unknown SKUs are blocked and skipped.<\/p><\/dd>\n<dt id=\"are%20variation%20skus%20supported%3F\"><h3>Are variation SKUs supported?<\/h3><\/dt>\n<dd><p>Yes. Matching uses WooCommerce's public SKU lookup, which includes variations.<\/p><\/dd>\n<dt id=\"where%20is%20supplier%20cost%20stored%3F\"><h3>Where is supplier cost stored?<\/h3><\/dt>\n<dd><p>The plugin keeps its own product metadata as the durable source of truth. If the installed WooCommerce exposes its public Cost of Goods methods, the value is also synchronized through those methods. No private WooCommerce metadata is accessed.<\/p><\/dd>\n<dt id=\"what%20does%20rollback%20change%3F\"><h3>What does rollback change?<\/h3><\/dt>\n<dd><p>Only the CostHarbor Supplier Updates for WooCommerce cost and the regular price that the selected import changed. It does not restore titles, stock, sale prices, or unrelated metadata.<\/p><\/dd>\n<dt id=\"what%20csv%20formats%20are%20supported%3F\"><h3>What CSV formats are supported?<\/h3><\/dt>\n<dd><p>Comma, semicolon, tab, and pipe delimiters are detected. UTF-8 is preferred; common legacy encodings are converted when PHP's multibyte extension is available. Files are limited to 10 MB and 10,000 data rows.<\/p><\/dd>\n<dt id=\"does%20the%20plugin%20contact%20external%20servers%3F\"><h3>Does the plugin contact external servers?<\/h3><\/dt>\n<dd><p>No. Version 0.1.2 has no external requests, telemetry, analytics, or remote imports.<\/p><\/dd>\n\n<\/dl>\n\n<!--section=changelog-->\n<h4>0.1.2<\/h4>\n\n<ul>\n<li>Rename the plugin and adopt the <code>costharbor-supplier-updates<\/code> slug and plugin-specific prefixes.<\/li>\n<li>Remove unnecessary manual text-domain loading.<\/li>\n<\/ul>\n\n<h4>0.1.1<\/h4>\n\n<ul>\n<li>Preserve business data on uninstall by default and add an explicit permanent-deletion setting.<\/li>\n<li>Strengthen CSV validation, monetary input validation, and price threshold tests.<\/li>\n<\/ul>\n\n<h4>0.1.0<\/h4>\n\n<ul>\n<li>Initial release with guarded CSV import, preview, apply, history, and rollback.<\/li>\n<\/ul>","raw_excerpt":"Preview supplier cost CSV changes and guarded WooCommerce price updates before applying them.","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin\/362373","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=362373"}],"author":[{"embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wporg\/v1\/users\/spguard"}],"wp:attachment":[{"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/media?parent=362373"}],"wp:term":[{"taxonomy":"plugin_section","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_section?post=362373"},{"taxonomy":"plugin_tags","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_tags?post=362373"},{"taxonomy":"plugin_category","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_category?post=362373"},{"taxonomy":"plugin_contributors","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_contributors?post=362373"},{"taxonomy":"plugin_business_model","embeddable":true,"href":"https:\/\/wordpress.org\/plugins\/wp-json\/wp\/v2\/plugin_business_model?post=362373"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}