Why combo discounts on options work
Combo discounts trigger the "completion" bias — customers who see a three-option bundle at a discount feel a 3rd option is essentially free, which lifts basket size without slashing per-item margin. On a $30 t-shirt where three options each add $6, a 15% bundle discount is $2.70 off the customer's checkout total but adds $12 in options revenue over the base t-shirt sale — a net gain of $9.30 in gross profit per order compared to selling the shirt alone.
The pattern works especially well for POD stores where marginal option cost is close to zero. Adding an engraving fee is largely software — the print partner charges the same base cost whether the shirt has one line of text or three.
The 3 combo patterns that convert
1. "Complete the gift" bundle
Photo upload + custom message + gift wrap = 15% off. Used by pet portrait, wedding, and memorial stores. Message: "Complete the gift and save 15%." Conversion works because all three options serve the same emotional job — turning a product into a personal token.
2. "Full personalization" bundle
Text + color swatch + size = 10% off. Used by apparel and jewelry. Message: "Personalize everything and save 10%." Works because the customer is already picking size and color anyway — the 3rd option (custom text) is the incremental sell.
3. "Rush + protection" bundle
Rush production + gift box + insurance = flat $12 add-on for all three. Used by corporate gifting and event stores. Works because the customer is already spending on rush; the bundle removes decision fatigue.
Cart Transform setup
// Cart Transform Function — combo discount pattern
export function run(input) {
const optionsPresent = new Set();
input.cart.lines.forEach(line => {
line.attributes?.forEach(attr => {
if (attr.key === "_option_type") optionsPresent.add(attr.value);
});
});
const gift_bundle = ["photo_upload", "custom_message", "gift_wrap"];
const has_all = gift_bundle.every(o => optionsPresent.has(o));
if (!has_all) return { operations: [] };
// Apply 15% discount to option-fee line items only
const operations = input.cart.lines
.filter(l => gift_bundle.includes(l.attribute?.value))
.map(l => ({
update: {
cartLineId: l.id,
price: {
adjustment: {
fixedPricePerUnit: {
amount: (l.cost.amountPerQuantity.amount * 0.85).toFixed(2)
}
}
}
}
}));
return { operations };
}
Note the discount only applies when all three options are in the cart, and it discounts only those three line items — not the base product or unrelated options. This preserves margin on the underlying variant while making the combo feel meaningful.
Discount depth — the numbers that work
| Combo size | Recommended discount | Typical AOV lift | Margin cost |
|---|---|---|---|
| 2 options combined | 5-8% off options | +12% AOV | ~1% margin |
| 3 options combined | 12-15% off options | +22-34% AOV | ~3% margin |
| 4+ options combined | 18-22% off options | +40-55% AOV | ~5% margin |
Deeper is not always better. Merchants who tested a 25% combo discount vs a 15% combo discount reported the 15% version converted 3% higher and produced 8% more gross profit — the extra discount trained buyers to wait for it rather than buy.
Cross-sell copy that works
The combo discount is only useful if customers know about it. The three placements that matter:
- Above the option selector: "Choose any 3 options and save 15% at checkout"
- Beside each option checkbox: a small "combo" badge with a tooltip
- Cart drawer: "You've added 2 of 3 combo options — add one more to save 15%"
Stacking with volume discount + first-order code
Combo + volume discount can stack safely because they reward different behaviors. A first-order code (welcome discount) should stack up to 25 total discount percentage points on option fees, but block above that — a customer with a combo, volume, and 20%-off code can effectively get 45% off option fees, which zeroes out the strategy.
Frequently asked questions
What is an option combination discount?
A discount that applies only when the customer picks a specific combination of personalization options — for example, choosing photo upload + custom text + gift wrap together triggers 15% off those three option fees. It rewards bundle behavior without discounting the base product.
How do I set up a combo option discount in Shopify?
Use a Cart Transform Function to detect the presence of all combo options in cart line-item properties, then apply a percentage discount to only those option-fee line items. Print It My Way exposes this as a no-code rule for merchants who don't want to write JS.
What discount % works for a 3-option combo?
12-15% is the sweet spot. Deeper discounts train customers to wait for the bundle instead of buying at full price. Merchants report the 15% tier lifts AOV 22-34% at only ~3% margin cost.
Can combo discount stack with volume discount and first-order code?
Yes, up to a cap. Combo + volume can safely stack; add a first-order code cap at 25 total discount points on option fees to prevent margin drain.
Does combo discount help Google Shopping visibility?
Indirectly — it doesn't change the feed price, but it lifts AOV and repeat-purchase rate, which improves overall account health signals that feed into Shopping ad quality.
Best app for Shopify option combination discount?
Print It My Way for merchants on any Shopify plan (Basic through Plus). Shopify Functions Discount API for Plus merchants who want native code control.
How do I show combo progress to customers?
Add a "combo progress" badge in the cart drawer — "2 of 3 combo options selected — add gift wrap to save 15%." A/B tests show this lifts combo completion 40-55% vs a static tier table.
What line-item property should I use to tag combo options?
A hidden underscore-prefixed property like _option_type: "photo_upload". Underscore prefixes hide the property from the storefront cart display but keep it available for Cart Transform rules and order tags.
Related reading
- Bundle pricing on options — related pattern for product bundles
- Volume discount on options — quantity-based rewards
- Tier-based option pricing — the underlying pricing model
- Cart Transform Functions guide — full developer reference
Try it free on Shopify
Print It My Way's permanent Free plan includes Cart Transform combo discounts, tier progress badges, and stacking control — no code required.
Install Print It My Way