The core distinction
| Aspect | Variant pricing | Cart Transform pricing |
|---|---|---|
| What changes the price | Different variant SKU | Runtime fee added to cart line |
| Where price lives | Product → Variants table | Cart Transform function code |
| SKU count impact | Multiplies (Size × Color × Material × Fee = variants) | None (one SKU regardless of options) |
| Cart display | Selected variant's price | Base price + separate fee line |
| Google Shopping feed | Each variant as separate item | Base variant price only |
| Admin overhead | Manage per-variant prices (bulk edit helps) | Single Cart Transform rule for entire catalog |
| Discount code interaction | Applies to variant price | Applies to base + fee (or excluded via flag) |
| Available on | All Shopify plans natively | Native Plus; app-equivalent on non-Plus |
When variant pricing wins
Use variant pricing when the price change comes from a SKU-level dimension that also affects other attributes:
- Size: Small $25, Medium $27, Large $29, XL $30. Also affects weight, inventory, POD partner SKU.
- Material: Cotton $30, Linen $45, Silk $80. Different fabric, different weight, different POD blank.
- Metal: Sterling Silver $60, 14k Gold $220, Platinum $380. Different material cost, different weight.
- Storage: 256GB $1,299, 512GB $1,499, 1TB $1,799. SKU-level tracking + inventory + supplier.
- Bundle vs single: 3-pack $65, 6-pack $120. Different SKU, different pack size, different shipping weight.
Common pattern: if price change also implies a different physical product (weight, inventory, SKU), use variant pricing.
When Cart Transform pricing wins
Use Cart Transform when the price change is an add-on that doesn't change the physical product's SKU:
- Gift wrap: +$5 add-on. Same product SKU, different total.
- Engraving text: Per-character fee. Infinite text possibilities can't be variants.
- Photo upload: +$5 add-on. Same product SKU.
- Rush production: +20% of base. Same product SKU, different fulfillment SLA.
- Font upgrade: +$2 for premium font. Same base variant.
- Bundle discount: Automatic combo pricing when 2+ options selected. Doesn't map to variants.
Common pattern: if it's an add-on that doesn't need its own inventory or SKU, use Cart Transform.
The variant explosion problem
Trying to price every option variation via variants creates SKU explosion.
Example: T-shirt with 5 sizes × 8 colors = 40 variants. Add "Print on front only $0" vs "Print on front + back +$5" as variant → 80 variants. Add "Standard $0" vs "Rush $10" as variant → 160 variants. Add "Gift wrap yes +$5" as variant → 320 variants. Suddenly you're maintaining 320 SKUs, all with the same product but different fee combinations.
Cart Transform keeps you at 40 variants + Cart Transform rule that adds fees based on line-item properties. Admin overhead reduced from 320-variant matrix to 40 variants + 1 rule.
The hidden fee product problem
Older Shopify apps used a workaround: create a hidden "Engraving Fee $5" product. When customer selects engraving, the app adds this hidden product to the cart alongside the main product.
Cart shows: "1 × Cotton T-Shirt $25, 1 × Engraving Fee $5". Two products for one purchase. Problems:
- Analytics reports treat Engraving Fee as separate product → distorts AOV + product performance
- Discount codes apply to Engraving Fee too — "20% off everything" makes engraving $4
- POD partner sync may include Engraving Fee → error at POD end
- Cluttered product catalog with 5-10 fee products
Cart Transform replaces this pattern cleanly. Modern apps like Print It My Way, Bold, Zepto all use Cart Transform (or its non-Plus equivalent).
Admin overhead comparison
Time to set up "Add gift wrap $5" on 20 products:
| Method | Setup time | Ongoing maintenance |
|---|---|---|
| Variant per fee (add "Gift Wrap Yes/No" as variant to each product) | 2-3 hours (double variants across 20 products) | High — every price change requires editing all "Yes" variants |
| Hidden fee product | 30 min (one hidden product, added to cart via app) | Medium — hidden product must be maintained, watched for POD errors |
| Cart Transform via personalizer app | 5 min (add Checkbox field + set fee) | Low — one rule covers all 20 products; fee change is one edit |
Discount code interaction
Discount codes behave differently between the two.
Variant pricing + discount code
"20% off everything" applies to variant price. Cotton T-Shirt Small Red at $25 becomes $20. Straightforward.
Cart Transform pricing + discount code
By default, discount applies to both base + Cart Transform fee. "20% off everything" on Cotton T-Shirt ($25) + Gift Wrap ($5) = $24 total (both discounted 20%).
Sometimes you want to exclude fees from discounts (rush production is a real cost you can't discount). Fix:
- Personalizer app field settings → "Exclude from discount codes"
- Adds hidden attribute
_discount_excluded - Paired Discount Function skips fees flagged with attribute
- Result: Cotton T-Shirt $25 × 20% off = $20 + Rush $5 (undiscounted) = $25 total
Requires personalizer app that supports discount coordination (Print It My Way, Bold both do).
Google Shopping feed handling
Variant pricing
Each variant becomes a separate item in Google Merchant Center feed. Customer clicks Google ad → lands on product page with that specific variant preselected. Native Shopify Google & YouTube channel handles this.
Cart Transform pricing
Feed shows base variant price only. Cart Transform fees don't appear (they're runtime). Customer sees "$25" in Google Shopping ad, adds gift wrap on your product page, pays $30. This is expected Google behavior; feeds are point-in-time base prices.
Migration between the two
From variant-per-fee to Cart Transform
- Install personalizer app with Cart Transform
- Create Checkbox / dropdown field for the option (e.g. "Add gift wrap")
- Set Cart Transform fee ($5)
- Attach personalizer to products
- Delete the redundant "Yes" fee variants (keep "No" as canonical)
- Verify: adding gift wrap via Checkbox shows same $5 as before, but now cleanly as fee line
Historical orders keep old variant references. Only new orders use Cart Transform.
From hidden fee product to Cart Transform
- Install / update to modern personalizer app
- Configure Cart Transform on relevant fields
- Delete or hide the fee products (Products → Delete or set visibility off)
- Verify POD partner sync no longer flags fee products
Availability across Shopify plans
| Shopify plan | Variant pricing | Cart Transform native | Cart Transform via app |
|---|---|---|---|
| Starter | Yes | No | Limited (theme constraints) |
| Basic ($29/mo) | Yes | No | Yes (personalizer app) |
| Shopify ($79/mo) | Yes | No | Yes |
| Advanced ($299/mo) | Yes | No | Yes |
| Plus ($2,300+/mo) | Yes | Native (Shopify Function API) | Yes (redundant) |
Practical: use variant pricing for SKU-level differences, Cart Transform (native on Plus, via personalizer app on all other plans) for add-ons.
Common issues + fixes
| Issue | Cause | Fix |
|---|---|---|
| Chose variant, needed Cart Transform | Variant explosion out of control | Migrate as above; delete fee variants after Cart Transform live |
| Chose Cart Transform, need variant SKU tracking | Fee should be inventory-tracked | Move to variant pricing OR add hidden inventory item that Cart Transform decrements |
| Google Shopping shows wrong price | Cart Transform fee expected in feed | Feed shows base only by design; add explanation in product description |
| Discount code discounting fees unexpectedly | No discount exclusion flag set | Enable "Exclude from discount codes" in personalizer field |
| Cart Transform not applying | Field name mismatch or rule inactive | Personalizer dashboard → Cart Transform logs → verify recent runs |
Frequently asked questions
Should Size be variant or Cart Transform?
Variant. Size affects inventory, weight, POS, POD SKU. All SKU-level attributes.
Should engraving fee be variant or Cart Transform?
Cart Transform. Engraving is add-on that doesn't need its own SKU. Variant per fee causes variant explosion.
Do variant prices show in Google Shopping?
Yes — each variant as separate feed item. Cart Transform fees do not appear in feed (runtime cart additions).
Do Cart Transform fees show in Google Shopping?
No. Feed shows base variant price only. Customer sees fees at checkout on your site.
How do discount codes interact with each?
Variant: discount applies to variant price. Cart Transform: applies to base + fee by default; exclude fees via flag if fee is a real cost you can't discount.
Cart Transform on non-Plus?
Native Cart Transform Plus-only. Personalizer apps (Print It My Way, Bold) provide equivalent on all plans. Customer experience identical.
Migration variant → Cart Transform?
Set up Cart Transform via personalizer app; delete redundant fee variants; verify historical orders preserved.
Which is faster to set up?
Cart Transform — one rule for entire catalog vs per-variant setup. 5 min vs 2-3 hours across 20 products.
Which is cleaner for reporting?
Cart Transform. Variant pricing keeps 1 SKU per option combination; fees appear as line items on orders, not separate SKUs.
Can I use both on same product?
Yes and this is common. Size + Color as variants ($25 for M/Red base). Gift wrap + engraving as Cart Transform fees on top. Cart shows breakdown.
Related setup guides
- Shopify Charge Extra Per Option
- Cart Transform Functions Developer Guide
- Cart Transform vs Variant Pricing (Extended)
- Per-Character Pricing Setup
Cart Transform on any Shopify plan
Print It My Way Basic ($7.99/mo) provides Cart Transform-equivalent pricing on all Shopify plans. Free plan supports 1 personalizer.
Install Print It My Way