Duplicate product tracking: the attribution method that survives ad-blockers and in-app browsers
An attribution method that does not rely on cookies, UTM parameters, or browser sessions — the product variant itself encodes the affiliate identity. Here is how it works, why it solves COD-specific problems, and the tradeoffs.
TL;DR. Duplicate product tracking assigns each affiliate a unique copy of a product (different URL, same inventory). When the buyer lands on the duplicate page and orders, attribution is structural — the product is the identity. The method has zero cookie dependency, survives ad-blockers, TikTok and Instagram in-app browsers, and incognito mode. It is the highest-fidelity attribution method available on Shopify, and the only one that does not lose data to privacy-mode browsing. It comes with three tradeoffs: SKU sprawl in the catalog, no SEO indexing of duplicates, and the buyer never sees the affiliate’s name. This post explains the mechanism, when to use it, when not to, and how it compares to referral links and discount codes.
The mechanism
When you onboard an affiliate, the system creates a hidden duplicate of the product the affiliate wants to promote:
- Original:
your-shop.com/products/red-sneaker→ product variant A - María’s link:
your-shop.com/products/red-sneaker-maria→ product variant B (same image, same price, same inventory pool) - Diego’s link:
your-shop.com/products/red-sneaker-diego→ product variant C
To the buyer, all three pages look identical. The product is the same. The price is the same. Inventory updates apply across all three variants because they share the same underlying SKU.
What is different: when an order is placed against variant B (María’s version), the commission attaches to María. When against variant C, Diego.
There is no cookie set. There is no UTM parameter to lose in transit. There is no referrer header to strip. The product variant itself is the affiliate identifier.
Why this matters for COD merchants
Most affiliate traffic in COD markets comes from mobile paid social: TikTok creators, Instagram reels, Meta ads. As we covered in In-app browser attribution loss, cookie-based attribution loses 60-80% of TikTok clicks because:
- TikTok’s in-app browser isolates cookies per session
- Closing the app drops the cookie
- Users frequently re-discover the product via search, not the original link
Discount codes solve some of this (the buyer types the code at checkout). But discount codes have their own issues: they get shared on coupon sites, they require the buyer to remember and enter them, and they cut into your margin if you give a real discount.
Duplicate product tracking does not have those issues. The buyer:
- Clicks the affiliate’s TikTok link
- Lands on
your-shop.com/products/red-sneaker-maria - Closes TikTok, goes about their day
- Reopens the link later (still saved in their browser history or DMs)
- Lands on the same URL
- Buys
María gets credit. No cookie. No code. No friction.
What survives in duplicate product tracking that fails elsewhere
| Failure mode | Referral link | Discount code | Duplicate product |
|---|---|---|---|
| Ad-blockers in in-app browser | Lost | Survives | Survives |
| Privacy mode / incognito | Lost (cookies expire fast) | Survives | Survives |
| User closes app, reopens later | Often lost | Survives if user remembers code | Survives if user saved the URL |
| User shares product with friend who buys | Lost | Survives if code is shared too | Survives if URL is shared |
| Search-for-product pattern (skips link) | Lost | Lost (no code prompt) | Lost (buyer hits main product, not duplicate) |
| Cross-device journey | Mostly lost | Survives | Lost (URL not transferred to new device) |
| Long delay between view and purchase | Lost (cookie expired) | Survives if code remembered | Survives if URL bookmarked |
No method is perfect. Duplicate product is best at surviving in-app browser issues and ad-blockers. Discount code is best at surviving cross-device and offline (voice) channels. The right setup uses both depending on the affiliate’s channel.
The three tradeoffs of duplicate product tracking
Tradeoff 1: SKU sprawl
Every affiliate × every promoted product = one duplicate. With 20 affiliates promoting 5 products, that is 100 hidden duplicates in your catalog.
Shopify can handle this technically (its catalog supports thousands of products), but it can clutter your admin if you do not have automated cleanup.
Mitigation: Use an app that creates and removes duplicates automatically when affiliates are added or removed. COD Affiliates handles this — duplicates are scoped, hidden from collections and search, and automatically pruned when an affiliate is paused or removed.
Tradeoff 2: No SEO indexing
You typically noindex the duplicate products so they don’t compete with your main product page for search rankings. This means the duplicate URL works fine when you push traffic to it directly (paid social, direct link), but it will not pick up organic search traffic on its own.
Mitigation: This is by design. If you want SEO traffic to attribute to an affiliate, that affiliate should be using a referral link instead. Use the right tool for the right channel.
Tradeoff 3: The buyer never sees the affiliate’s name
A coupon code (MARIA20) is visible to the buyer; a duplicate product URL is invisible. Some merchants like to have buyers consciously experience an affiliate’s role in the purchase — the duplicate product method does not provide that.
Mitigation: This is a creator-relationship choice, not a technical limitation. If you want creator-visibility, use a discount code in parallel with the duplicate product link. If you want maximum attribution fidelity, use only the duplicate product link.
Implementation in practice
When María signs up as your affiliate:
- María picks the products she wants to promote (or all products, depending on your program)
- The system creates a duplicate of each product with handle
your-product-maria - The duplicate is
noindexand excluded from collections / search - María gets a list of duplicate URLs in her dashboard
- María posts videos pointing to those URLs
- Buyers land on
your-product-maria, order, attribution attaches automatically
When María is paused or removed:
- Her duplicates are unpublished (existing orders preserve their attribution)
- New traffic to her URLs 301 redirects to the canonical product
- Her dashboard shows the pause status
The cleanup is critical. If you do this manually with no app, you accumulate dead duplicate products that bloat your catalog and (worse) sometimes get indexed by mistake.
When NOT to use duplicate product tracking
- Single-SKU stores promoting one product: discount code is simpler
- SEO-driven blog affiliates: their traffic is organic search, which won’t hit the duplicate URL
- Email newsletter affiliates: referral link with cookies is fine (desktop context)
- Podcast affiliates with verbal CTAs: discount code (buyer cannot type a URL)
- Affiliates promoting on Pinterest: works partially (Pinterest links open in default browser, less in-app friction)
When duplicate product is the right answer
- TikTok creators driving in-app traffic: highest leverage
- Meta ads with affiliate creative: URL parameters can drop through the ad redirect chain; duplicate product URLs survive
- Instagram Reels with link stickers: in-app browser friendly
- Affiliates running Google Ads: clean attribution, no UTM drops
- Influencers whose followers are technically savvy enough to bookmark the link
In COD markets specifically, where 60-80% of buyer traffic is paid social, duplicate product is the right default for high-volume creator affiliates.
How it works inside Shopify
The technical setup uses Shopify’s product duplication API. The duplicate product:
- Shares inventory with the original (via the same SKU or a linked SKU)
- Has its own product handle and URL
- Has its own title and description (typically identical to the original, but customizable per affiliate if you want)
- Is excluded from collections via tagging
- Is
noindexvia metafield
When the buyer orders, Shopify sends the order through the standard webhook. The affiliate app reads the product handle, looks up which affiliate owns it, and attaches the commission.
There is no client-side JavaScript, no pixel, no cookie. The whole attribution chain is server-side and survives any privacy mode the buyer’s browser implements.
Combining duplicate product with COD confirmation
The neat property: duplicate product tracking is orthogonal to COD commission timing.
In COD Affiliates, when a buyer orders María’s duplicate product:
- Commission attaches to María immediately at order creation (the URL identifies her)
- Commission state starts as Pending
- When Shopify marks the order as Paid (COD collected at delivery), commission flips to Confirmed
- María sees both events in her dashboard: “Attribution received” and “Commission confirmed”
The cookie-vs-no-cookie debate is about whether the attribution happens at all. The COD-vs-not debate is about when to pay out. They are separate axes. Duplicate product solves the attribution axis; COD confirmation solves the payout axis. Together they form the cleanest stack for COD merchants.
TL;DR
If you are a Shopify COD merchant whose affiliates promote on TikTok, Instagram, Meta ads, or any other channel where in-app browsers dominate, duplicate product tracking captures attribution that cookie-based methods quietly lose. It comes with SKU sprawl and no-SEO tradeoffs but solves the single biggest attribution problem in mobile-first markets.
COD Affiliates supports duplicate product tracking with automatic creation and cleanup → — free for the first 100 merchants.