Product Mirroring Wizard Live on the Shopify App Store

Change the parent, the children follow.

When mirroring runs

A sync always does the same work. What differs is what starts it.

On save

Shopify notifies the app whenever a product in your store is updated. If the updated product is a parent in one of your rules, the app syncs it to its children, normally within a few seconds of your save.

If the updated product is not a parent, or is a parent with no children attached, nothing happens. That includes edits to child products, which is why mirroring never travels back up.

This is also why the app’s own writes do not cause a cascade. Writing a child triggers another notification, the app sees a product that is not a parent, and stops there.

The notification comes from Shopify, not from the app watching your store, so a change made through the admin, a bulk editor, an import or another app all reach the app the same way.

On demand

Sync Now at the top of a rule page reads the parent as it stands and writes every enabled field to every child, whether or not anything has changed. A banner reports how many child syncs succeeded and how many failed.

Use it after changing a config, after attaching a new child, or to retry a failure.

In bulk

On the dashboard, tick the parents you want and choose Sync now from the bulk actions. The parents are processed one after another, and a banner reports the total number of child syncs that succeeded, the number that failed, and how many of the selected parents had no children to sync to.

Bulk syncs are run in sequence on purpose: each one paces itself against Shopify’s rate limits, and running them together would only make Shopify throttle the lot.

What one sync does

For each child in the rule, in this order:

  1. Write the enabled Content and SEO fields in a single update.
  2. Write the enabled Pricing & Inventory fields to the matching variants.
  3. If images are enabled, remove the child’s images and upload the parent’s.
  4. If metafields are enabled, write the parent’s metafields, filtered by namespace if you have set a list.

Each child is independent. One child failing does not stop the others, and every child gets its own row in the sync history with its own result.

Steps are skipped entirely when nothing in that group is enabled, so a config with only the description ticked does one small write per child.

Timing

A rule with a handful of children and a short field list finishes in seconds. A rule with many children, or children with many images and metafields, takes longer: the app writes in batches, watches Shopify’s rate limit budget, and waits rather than failing when it is throttled.

Syncs started by a save run in the background after Shopify’s notification has been acknowledged, so the app never holds up your admin.