Duplicate products (clones) for price tests
Duplicate products (clones) is the strategy Personizely uses for price tests on Shopify plans other than Plus. For each variation, Personizely creates a hidden copy of every product in the test with the variation's prices. Visitors browse your original product pages, and when they add to cart, the copy at their variation price goes into the cart instead. Your original products stay unchanged.
Available on: all Shopify plans. It's used for every price campaign on non-Plus stores, and on Plus stores for campaigns with Products with subscriptions or bundles turned on. See Price testing.
How it works
- Personizely duplicates each product per variation. When you save a variation, each of its products is copied in Shopify with the same title, variants, images, SKUs and tags, and the variation's prices and compare-at prices. Each duplicate also gets three Personizely tags:
- ply_campaign_<campaignId>
- ply_campaign_variation_<variationId>
- ply_source_product_<productId>
- Duplicates are hidden from your storefront. They're Unlisted while the campaign runs, so they don't appear in collections, search or recommendations, and Archived while it doesn't.
- Visitors stay on the original product pages. Prices are repainted to the variation price using your price selectors.
- The duplicate is what's bought. When a visitor in a variation adds a campaign product to the cart, the snippet swaps the variant for the matching variant of their variation's duplicate. This works with standard theme product forms, AJAX carts and headless storefronts. Control visitors buy the original product.
- Duplicate URLs lead back to the original. Links to a duplicate are rewritten to the original product, and a direct visit to a duplicate's URL redirects to the original.
- Orders are attributed to the original product. Personizely maps purchases of duplicates back to the original product and variant in its reports.
Products with subscriptions or bundles (redirect mode)
Subscription and bundle apps usually work on the product page itself, so they need the visitor to be on the duplicate. With Products with subscriptions or bundles turned on in the campaign, visitors in a variation who open an original product page are redirected to their variation's duplicate (the selected variant is carried over). Prices on collection pages, recommendations and elsewhere are repainted as usual.
Selling plans and bundle settings aren't copied to duplicates. Configure the bundles or selling plans on each duplicate product in your bundle or subscription app.
Duplicate lifecycle
Event | What happens to the duplicates |
|---|---|
Product added to a variation | A duplicate is created: Unlisted if the campaign is running, Archived if not |
Campaign started or resumed | Duplicates become Unlisted, any missing duplicate is recreated, and prices from Increase/Decrease rules are recalculated from the original's current price |
Campaign paused or stopped | Duplicates become Archived (kept, so the campaign can resume) |
Variation prices edited | The duplicates' prices are updated |
Product removed from a variation, or variation deleted | Its duplicates are deleted |
Campaign deleted | All its duplicates are deleted from Shopify |
Original product price changed in Shopify | While the campaign runs, duplicates are re-priced for Increase and Decrease rules. Set prices stay as entered. |
Original product deleted in Shopify | The campaign is stopped, its duplicate is deleted, and the account owner gets an email: "Campaign stopped: Product was deleted" |
Duplicate deleted in Shopify | The campaign is stopped and the owner is emailed. The duplicate is recreated when you start the campaign again. |
Set up your store before launch
Duplicates are separate products in Shopify, so anything configured per product doesn't apply to them automatically. Go through each item below that applies to your store, then complete the QA checklist.
Inventory
If Shopify tracks inventory: sales of a duplicate don't reduce the original's stock.
- Set the duplicates' inventory to zero, using the bulk editor or each duplicate's page.
- Turn on Continue selling when out of stock for every duplicate variant.
When the original product sells out, switch its duplicates back to Stop selling when out of stock, or visitors in the variation can keep ordering it. For fast-selling products, consider an inventory or SKU sync app that keeps the original and its duplicates aligned.
If a third-party app manages inventory: apps that track stock by SKU usually need no change, because duplicates keep the original's SKUs. Apps that track by product or variant ID may need to be configured to include the duplicates. Contact support if you need help.
Shipping profiles
If the original products are in a custom shipping profile, add their duplicates to the same profile, or checkout may show the wrong rates. In Shopify, go to Settings → Shipping and delivery, open the profile, click Manage products and add the duplicates. Skip this if you only use the default General profile.
Discounts
Discounts limited to specific products or collections need the duplicates added, or visitors in the variation won't get the discount. Store-wide discounts and discounts on the order total need no change.
Duplicates keep all of the original product's tags, plus Personizely's three ply_ tags, so discounts and app rules based on product tags match the duplicates as they match the original.
Search apps
Exclude products with tags starting with ply_campaign_ in your search app (for example Searchanise or Boost Commerce), or duplicates can appear in search results.
Ratings and reviews apps
Group each duplicate with its original so it shows the same reviews. Without grouping, duplicates show no reviews, which can skew your results. Look for the grouping feature in your app:
App | Feature |
|---|---|
Stamped | Product groups |
Loox | Group product reviews |
Okendo | Groups |
Judge.me | Share reviews across product groups |
Junip | Product groups (bundle family) |
Subscription apps
For subscription apps such as Skio or Recharge, turn on Products with subscriptions or bundles in the campaign, then set up the selling plans on each duplicate in the subscription app.
Bundle and volume discount apps
Apply the same bundle or tier rules to the duplicates, so visitors in a variation get consistent pricing. If the app works on the product page, turn on Products with subscriptions or bundles.
Behavior details and limitations
- Shopify's reports show the duplicate. In Shopify's Orders and Analytics, purchases of a duplicate appear under the duplicate product. Personizely's reports map them back to the original.
- Compare-at prices are written to the duplicate, so they show in the cart and checkout as well as on the storefront.
- The strategy is set when you create the campaign. Upgrading to Shopify Plus doesn't move existing campaigns to cart transform; clone the campaign to do that.
- Duplicates count as products in Shopify. One duplicate is created per product per variation. A test of 20 products with 2 variations creates 40 products.
- Third-party cart and quick-buy flows. If an app adds to cart in a way the snippet doesn't intercept, the original product is added and the visitor pays the original price. Check every add-to-cart path with the QA checklist.
- Deploying writes to the originals. Deploying a winning variation writes its prices to your original products. It's permanent and the campaign can't be restarted.
Troubleshooting
- The cart shows the original price → the add-to-cart wasn't intercepted, usually because of a custom cart drawer or quick-buy app. Contact support with the product URL.
- Duplicates appear in search → exclude tags starting with ply_campaign_ in your search app.
- A discount code doesn't apply for some visitors → the discount is limited to products or collections that don't include the duplicates.
- The campaign stopped by itself → an original product or a duplicate was deleted in Shopify. Check your email for "Campaign stopped: Product was deleted".