=== PushSync - Multi-Site Product Sync for WooCommerce ===
Tags: WooCommerce, Product, Price, Sync, multiple
Requires at least: 3.3
Tested up to: 6.8
Requires PHP: 7.4
Stable tag: 0.0.2.29
License: GPL v2 or later

Update prices for matching products across multiple WooCommerce sites with one click!

== Description ==

Do you need to update pricing for the same product listed on multiple WooCommerce sites and wish there was a one-click solution to automate that process? 

Multi-Site Product Sync for WooCommerce enables you to update pricing on identical products listed on different WooCommerce sites you control. Our plugin accomplishes this time-consuming task in one-click. All you need to do is set up this plugin on your main WooCommerce shop site and connect it to multiple child sites that share the same products, then run the one-click price sync. 

This plugin not only lets you syndicate pricing instantly across multiple sites, but you can also see if child sites are missing products from the parent site, or have products not on the parent site, using our one-click product sync process.  

This is a powerful plugin that allows you to keep product pricing and listings in sync across dozens, even hundreds, of e-commerce websites based on your parent site product listings. This is all done remotely, and securely, from one central dashboard on your parent site. 

= Use this plugin to save yourself time and money! =

* Save **time** by only updating prices once on your parent website and deploying those changes to a child website with a single click! No more wasted hours making the exact same updates on multiple websites tediously by hand. (By our estimates over the course of 1 year you **could save up to $1,040 AND 50+ hours of labor, if not more!**)

* Save **money** by seeing all differences between your websites to ensure you didn’t forget to add a product to a child site. This can be a great tool to do quality control checks on your content teams if they’re adding large amounts of new products to child sites. 

If you manage multiple sub-sites that depend on keeping product pricing and listings in sync with a central master site, this plugin is your solution. 

Let’s say you work for a car dealership with a central website for the main dealership, but you also have to manage the same car listings on 3-4 other franchise dealership websites under your parent company. It can become complicated pretty quickly trying to syndicate pricing. It can get time consuming making sure franchises aren’t listing old car models that your parent company removed from their website months ago. 

It can be especially frustrating not knowing if child sites are missing new car models listed on the parent site. We solve all of those problems with one-click solutions in this plugin, and at the same time allow you to connect numerous child sites to your parent site under the same plugin license. The functionality in this plugin can save you dozens - if not hundreds - of hours of time otherwise spent tediously updating listings. If you outsource that work, this plugin can save you money on reduced work hours too.

== FREE FEATURE - Save Time ==

Here is a table of estimated price savings over the course of 1 year based on time spent updating products on child websites. 

`
Hours / Week	1			2 			3			4
$15/hr			$780		$1,560		$2,340		$3,120
$20/hr			$1,040		$2,080		$3,120		$4,160
$25/hr			$1,300		$2,600		$3,900		$5,200
$30/hr			$1,560		$3,120		$4,680		$6,240

TOTAL			52 hours	104 hours	156 hours	208 hours
`

As you can see, this plugin not only saves significant amounts of money but time as well. At the end of the year you could have spent a 40-hour work week (or more) doing something more productive than updating prices.

== FREE FEATURE - Save Money by Eliminating Liabilities ==

The liability of accidentally forgetting to update the price of a single product is a hidden cost that cannot be tracked but can cost you money. Here’s an example using a car dealership:

If prices are supposed to go up by $800 on all trucks for every dealership and you either forget the truck on one website or the website doesn’t properly save your update then you run the risk of losing out on $800. If a customer finds that one vehicle (and you know they will) then you will either have to take the loss or infuriate a customer; and neither option is pleasant. 

Instead, you can use our plugin to quickly see if any prices are out of sync. Not only will you know if there are any discrepancies but you will have the peace of mind that you didn’t accidentally make a mistake.

== PREMIUM FEATURE - Connect Multiple Sites Securely and Easily ==

*(NOTE: Free version allows 1 child site. Premium version allows UNLIMITED child sites.)*

Setting up a secure connection between a parent site and a child site sounds complicated but it doesn’t have to be. We’re proud of how simple we have made the process for you! We have turned it into a 2 step process.

1. Add the URL of your Child Website.
1. Follow the redirects to authenticate the plugin with your child website.

That's it! You are ready to begin syncing prices!

== FREE FEATURE - Product Sync Features ==
While the primary purpose of this plugin is to update products across multiple websites we also know that it is best to avoid blindly updating prices when you don’t know what will be affected. That is why we provide options to see a list of products that will be updated **BEFORE** you synchronize prices and then provide the results **AFTER** synchronization for verification. 

Being able to quickly see the big picture of which products are out of sync is almost as helpful as being able to update the prices with the click of a button.

We also provide the ability to quickly convert products published only on a child site to a DRAFT status in order to maintain uniformity with the parent website. Here is a list of features we provide.

- **View Differing Products**
-- View products on the child website with prices differing from products on the parent website.

- **Synchronize Prices**
-- Synchronize prices so that the prices on the child website match the prices on the parent website.

- **View Parent-Only Products**
-- View products published only on the parent website and not published on the child website.

- **Export Parent-Only Products**
-- Export the products published only on the parent website and not published on the child website as a CSV file. This CSV export file is compatible with WooCommerce import options, which means your team can easily add new missing products in bulk to child sites. 

- **View Child-Only Products**
-- View products published only on the child website and not published on the parent website.
-- Selectively convert child-only products to DRAFTs with a single click to hide them from public view so your content team can take care of them. 

- **Export Child-Only Products**
-- Export products published only on the child website and not published on the parent website as a CSV file. This CSV export file is compatible with WooCommerce import options. 

- **View Differing Attributes**
-- View products on the child website with differing attributes from products on the parent website.

== FREE FEATURE - Manual Product Sync Feature ==

This plugin also gives you the option to manually create a JSON array from the parent site, copy the array, and then paste it into the child site plugin to complete a manual price sync of all products. There are some situations where a manual price sync may be needed over a remote sync, and when that occurs, we give you the option to do it manually too.

== PREMIUM FEATURE - E-Mail Notifications and Alerts ==

If you want to further streamline your workflow, this plugin gives you the option to send weekly or monthly e-mail notifications alerting you when you have mismatched prices. You can send reports alerting you when a child site needs pricing updates, when a child site is missing products from the parent site, or when a child site has products not listed on a parent site. There is also an option to get a CSV file of all products listed on child websites by email, to monitor changes to the entire catalog.

== PREMIUM FEATURE - Automated Synchronization ==

Take price syncing one step further by automatically synchronizing prices and/or statuses on a daily schedule or only on detected updates. This feature will save even more time spent updating websites and help avoid accidentally forgetting to click the “Synchronize Prices” button. And time saved is money saved! The plugin gives you full control to decide which child sites receive the automatic updates of product price or status.

== PREMIUM FEATURE - Sync Log ==

We know that things don't always go according to plan. Sometimes that means a price was changed that needed to be left alone and you need to see who did it and when they changed it. Or maybe the prices aren't updating properly and you need to determine where the problem is occurring. Or just maybe you want to see how many products were updated to have peace of mind knowing that everything worked properly. For all those reasons we log every event that occurs in the plugin. This allows you to see a detailed history of what the plugin has done. To save space events older than 90 days will be removed.

The information logged includes:

1. Date and Time
1. WordPress User
1. IP Address of User (or system in the case of automated updates)
1. Whether the event was **manually** triggered or **automatically** triggered
1. Whether the logged event was an **INFO**, **SUCCESS**, or **ERROR** message
1. Which child site was updated
1. A brief message describing the event

== FREE FEATURE - Have an Issue? Want a Feature? Contact Us! ==

We always want to hear from you and have provided multiple ways for you to contact us.

1. Via the embedded “Contact Us” sub-menu link in the plugin.
1. Via the WordPress.org support forums.
1. Via our website [inboundhorizons.com](https://inboundhorizons.com/ "Inbound Horizons Inc").

Let us know if you have any questions about our plugin. And if you have any feature requests or suggested improvements we would love to hear them! Our goal is to provide the best solution for people managing pricing across multiple WooCommerce websites.


== Screenshots ==

1. Scalable Multi-Site Product Sync for WooCommerce
2. Add a child site to parent website
3. Manual Sync tab
4. Email Report tab (Premium)
5. Automated Sync tab (Premium)
6. Sync Log tab (Premium)
7. Settings tab
8. Sample "View Differing Products" results
9. Sample "View Missing Products" results
10. Sample "View Child-Only Products" results
11. Sample "View Differing Attributes" results (Premium)

== Changelog ==

= 0.0.2.29 - 9/16/2025 =
* FIX: Increased REST API request time before timeout from 5 seconds to 20 seconds. This should help prevent timeout errors.
* FIX: Improved error handling if REST request to fetch remote products failed.

= 0.0.2.28 - 8/29/2025 =
* FIX: Tweaked code to fix occassional error.

= 0.0.2.27 - 8/18/2025 =
* FIX: Determined file/directory location more accurately.
* FIX: Used wp_enqueue instead of echoing <style>

= 0.0.2.26 - 8/15/2025 =
* Updated plugin name again to adhere to WordPress requirements.

= 0.0.2.25 - 8/07/2025 =
* Updated plugin name to adhere to WordPress requirements.

= 0.0.2.23 - 7/28/2025 =
* Made updates suggested by WordPress first AI review results. 
* Removed legacy code calling child plugin used by Email Reports and Automated Sync.

= 0.0.2.22 - 7/16/2025 =
* Fixed error on auto-sync.

= 0.0.2.18 - 7/15/2025 =
* Updated banners and icons.

= 0.0.2.17 - 7/14/2025 =
* Updated screenshots.

= 0.0.2.16 - 7/10/2025 =
* Updated Freemius.
* Refactored some code.

= 0.0.2.14 - 6/17/2025 =
* Added a "[DRAFT]" label to parent-only products that do exist on the child website but are not published. 

= 0.0.2.13 - 5/26/2025 =
* Refactored code in some places to improve management.

= 0.0.2.11 - 2/27/2025 =
* Cleaned up code to comply with recent WordPress best practices. (Sanitizing, escaping, etc.)

= 0.0.2.7 - 5/15/2024 =
* Removed support link in header as it no longer pointed to the correct URL.
