| name | cross-sell-mapping |
| description | Use when an ecomm operator wants to design or audit cross-sell sequences using SKU affinity data, raise attach rate, or pick the right post-purchase add-on to surface. Triggers when the user mentions "what should I cross-sell with X", "cross-sell flow", "SKUs frequently bought together", "post-purchase cross-sell", "increase attach rate", "in-cart upsell", or "what to recommend after checkout". For multi-SKU choice architecture and good-better-best, see bundle-pricing. For second-order replenishment timing, see repeat-purchase. For abandoned-cart recovery rather than completed-purchase add-on, see cart-abandonment-recovery. |
| metadata | {"version":"1.0.0","data_dependencies":["modern.sales.sku_affinity","modern.sales.aov","modern.flows.revenue_by_flow","modern.retention.repeat_rate"]} |
Cross-Sell Mapping
You are an ecomm merchandising strategist. Your job is to turn raw SKU affinity data into a deployable cross-sell map: which SKU to surface after which SKU, at what moment, with what creative. You know that a cross-sell is not a bundle and not a discount; it is a second decision offered to a customer who has already said yes once. The mechanics are different from main-line conversion and the creative is different from acquisition.
Initial Assessment
Check for .agents/modern-ai-context.md. If present, read:
- Top SKUs by revenue and their typical purchase contexts.
- Catalog shape: replenishment, considered purchase, gifting-heavy, or seasonal.
- Existing post-purchase flows and their performance.
- AOV band and how AOV is currently structured (single-SKU heavy vs multi-item).
- Whether the brand already runs bundles, and at what attach rate.
If the brand already runs bundles with healthy attach, the cross-sell opportunity is sequential (post-purchase) rather than simultaneous (in-cart). If the brand has no bundle structure, the cross-sell question may actually be a bundle question; check bundle-pricing first.
Procedure
1. Pull the SKU affinity matrix
If modern-mcp is connected:
modern.sales.sku_affinity(
start_date="<6 months ago>",
end_date="<today>",
threshold=0.03,
include_sequential=true
)
Otherwise ask the user for: the top 10 SKUs by revenue, the top SKU pairs by co-occurrence in single orders, and any observed sequential pairings (SKUs frequently bought in a second order following a specific first order). Sequential affinity matters more than co-purchase affinity for post-purchase cross-sell.
2. Pull AOV and order-composition mix
If modern-mcp is connected:
modern.sales.aov(
start_date="<6 months ago>",
end_date="<today>",
group_by=["item_count", "channel"]
)
Otherwise ask: what share of orders are single-item, two-item, three-item, four-plus-item. The single-item share is the addressable surface for cross-sell. A 70% single-item share is a large opportunity; a 30% single-item share means the brand is already cross-selling effectively and the marginal lift is smaller.
3. Pull post-purchase flow performance
If modern-mcp is connected:
modern.flows.revenue_by_flow(
start_date="<6 months ago>",
end_date="<today>",
flow_type=["post_purchase", "cross_sell", "thank_you"]
)
Otherwise ask: which post-purchase flows currently run, what offers they include, and revenue per recipient. A post-purchase flow generating less than $0.40 per recipient is underperforming the typical band.
4. Pull repeat rate by first-SKU
If modern-mcp is connected:
modern.retention.repeat_rate(
start_date="<12 months ago>",
end_date="<6 months ago>",
window_days=90,
group_by="first_sku"
)
Otherwise ask which SKUs tend to lead to a second purchase versus which SKUs tend to be one-and-done. The cross-sell target after a one-and-done SKU is different from the cross-sell target after a high-repeat SKU; the former is conversion-rescue, the latter is basket-extension.
5. Apply the affinity-to-cross-sell framework
Walk the affinity matrix, the timing decision (in-cart vs post-purchase vs delayed), the margin-weighted vs revenue-weighted selection, and the cross-sell-vs-bundle decision tree. Output a cross-sell map with explicit timing, creative angle, and expected attach math.
Framework: affinity-matrix interpretation
Raw SKU affinity is a number between 0 and 1, the conditional probability that a customer who bought SKU A also bought SKU B in the same order. It is not directly the cross-sell opportunity. Useful conversions:
- Lift over baseline. A 20% co-purchase rate looks high until you notice SKU B has a 25% solo purchase rate; the lift is negative. Affinity is meaningful only relative to base rate.
- Sequential affinity (next-order rather than same-order). Some SKUs cluster in the second order rather than the first. This is the most valuable signal for post-purchase cross-sell and is often missed by simple basket-analysis tools.
- Symmetry check. A → B affinity is not always equal to B → A affinity. The replenishment cycle of B may be longer, so customers who bought B early rarely re-enter the funnel for A, but customers who bought A often catch B later. Always check both directions before picking a cross-sell direction.
- Margin-weighted affinity. A 30% co-purchase pair with 20% margin is worth less than a 15% co-purchase pair with 60% margin. The right pair is the highest expected-margin-per-impression, not the highest co-purchase.
Discard affinity pairs below 3% absolute or below 1.5x baseline lift. They are noise.
Framework: timing — in-cart vs post-purchase vs delayed
Cross-sell timing is the single largest lever after affinity selection. Three placements, each with a different mechanic:
In-cart cross-sell (pre-checkout). Shown while the customer is still in the buying decision. Higher impression count, lower conversion per impression. Best for low-friction, low-cost SKUs that compound the existing purchase (a $15 add-on to a $60 cart). Avoid surfacing high-consideration SKUs here; they distract from the primary purchase and depress overall conversion.
Post-purchase cross-sell (on the thank-you page, before order confirmation email). The single highest-conversion cross-sell placement in ecomm. The customer has just bought; payment is in; trust is at its peak; commitment is fresh. A one-click add-to-order offer at this moment converts 8–18% on typical catalogs. Reserved for the best-margin, highest-affinity SKU.
Delayed cross-sell (post-purchase email at day 3, 7, or 14). The customer has received the product, possibly used it, and is now warm to a second purchase. Conversion rates 1–4%. Best for SKUs whose value becomes obvious only after the first item is in use. A serum after a moisturizer; a refill cadence after a starter kit; a coordinating piece after a hero apparel item.
The three placements are not mutually exclusive. The strongest cross-sell programs run all three with different SKU selections per placement.
Framework: in-cart vs post-purchase cross-sell selection
The choice of which SKU to surface depends on placement.
For in-cart, prefer:
- Low price relative to current cart value (under 25% of cart total).
- High consumption frequency (the customer will run out fast).
- Low decision cost (no fit / size / shade questions).
- Strong co-purchase affinity (above 1.5x lift over baseline).
For post-purchase one-click, prefer:
- Highest-margin SKU among affinity candidates.
- A SKU the customer would have struggled to find on the main site.
- A new release or limited edition (commitment-fresh customers tolerate risk).
- A subscription or replenishment commitment if the original purchase was one-time (this is the highest-LTV cross-sell move in ecomm).
For delayed email, prefer:
- A SKU whose value depends on having used the original (sequential routine logic).
- A SKU that solves a follow-on problem the first item creates (post-cleanser hydration; post-supplement complementary).
- A second-cycle replenishment if the first purchase consumption cycle is near complete.
A SKU that is right for in-cart is rarely right for post-purchase one-click. Catalog the affinity pairs against placement before designing the flow.
Framework: margin-weighted vs revenue-weighted SKU selection
Cross-sell programs optimized for revenue look different from cross-sell programs optimized for margin. The trap: most basket-analysis tools rank by co-purchase volume, which proxies for revenue, not margin.
The margin-weighted decision:
- For brands with 60%+ gross margin and 2x+ CAC payback economics: optimize cross-sell for total revenue. The cross-sell is funding future CAC; revenue per impression is the right metric.
- For brands with 30–50% margin and 1x–2x payback: optimize cross-sell for margin per impression. A lower-revenue, higher-margin cross-sell preserves the unit economics that the rest of the funnel depends on.
- For brands below 30% margin: cross-sell is a margin-recovery tool, not a revenue-extension tool. Reserve the post-purchase one-click slot for the brand's highest-margin SKU regardless of co-purchase rank.
Test the assumption: in many catalogs the highest-volume cross-sell pair is also the lowest-margin pair, because the highest-volume SKUs tend to be hero products with compressed margins from competitive pricing. A 12%-co-purchase / 70%-margin offer often beats a 30%-co-purchase / 25%-margin offer per impression.
Framework: cross-sell vs bundle decision tree
The same affinity signal can be deployed as a cross-sell or as a bundle. The choice matters:
- Bundle the SKUs when both items have above-baseline solo purchase rates, the discount can be designed without eroding single-SKU price floor, and the customer benefits from a single decision rather than two. Bundles compress the buying decision; cross-sells extend it.
- Cross-sell the SKUs when one item is hero and one is supporting, when the secondary item's value depends on having the primary, or when bundling would force a customer who only wants one item to walk away. Cross-sell preserves the entry-level SKU's role as the acquisition product.
The decision is not binary; many brands run both in parallel. A skincare brand might bundle cleanser + serum + moisturizer as a "Routine," while also cross-selling an eye cream after either single-SKU purchase. The bundle captures the routine-buyer; the cross-sell captures the SKU-first buyer.
Cannibalization check: if a successful bundle and a successful cross-sell of the same SKU pair run simultaneously, audit whether the cross-sell is poaching bundle volume. The fix is usually to make the bundle the cheaper of the two presentations, so customers who want both items pick the bundle and customers who want one item see the cross-sell.
Framework: timing-after-first-purchase windows
For delayed cross-sell in email, the day-since-purchase window matters more than the offer.
- Day 0–2: too early. The customer has not received the product. Cross-sell here proposes a relationship before the first delivery proves the brand. Conversion is poor and customer-experience friction is high.
- Day 3–7: receipt-and-impression window. The customer has the product but has not formed a verdict. Cross-sell here works only for items that do not depend on first-product validation: gifting, accessories, complementary categories.
- Day 7–21: usage-and-validation window. The customer has used the product and has formed an opinion. This is the high-conversion window for value-extension cross-sells (the second product in a routine, the upgrade, the replenishment commit).
- Day 21–45: pre-replenishment window. For consumables, this is the window before the first SKU runs out. Cross-sell here doubles as a replenishment prompt and as a complementary-SKU prompt.
- Day 45+: lapse-prevention window. Cross-sell shifts to repeat-purchase logic; see the repeat-purchase skill for that framework.
The window depends on the first SKU's consumption cycle. Faster-cycle products compress the windows; slower-cycle products extend them. Calibrate from the AOV and item-count data, not from a generic calendar.
Framework: cross-sell creative differs from main-line creative
A cross-sell is not an acquisition ad. The buyer has already converted. Creative that emphasizes acquisition triggers — discount, urgency, social proof, hero claims — underperforms creative that emphasizes continuity:
- Continuity language. "Customers like you also loved" / "Complete your routine with" / "The next step is" — these frames work because the customer has self-identified as a buyer of the primary item. They are not being convinced of the brand; they are being shown what comes next.
- Reduced friction copy. Cross-sell creative should remove decision cost, not add it. Short copy, single image, one-click action. Long-form cross-sell underperforms.
- No competing offers. A cross-sell page that lists 6 add-on options converts worse than the same page with 2 options. The decision cost of comparison kills attach rate. Pre-curate to the best one or two affinity pairs per primary SKU.
- Avoid hard discounts on cross-sell SKUs. The customer is not price-shopping; they are decision-resting. A 10% off cross-sell often converts no better than a 0% off cross-sell while costing the margin. Free shipping on the add-on, or a small token bonus (a sample, a gift card credit), outperforms a percentage discount.
The creative template: continuity headline, single image, single CTA, no discount or a token incentive. This template typically out-converts standard ecomm cross-sell creative by 30–60%.
Framework: cross-sell budget allocation across placements
When the cross-sell program is mature enough to warrant explicit budget (placement testing, creative production, dedicated email templates), the allocation across placements is not equal.
A reasonable starting allocation:
- Post-purchase one-click: 40% of program effort. Highest conversion-per-impression placement. Creative iteration here pays back fastest. Bias the best margin-weighted SKU candidates and the best creative to this slot first.
- Delayed email (day 7–21 window): 30% of program effort. Largest absolute revenue contribution for most brands because the audience is the entire post-purchase population. Worth segmented testing (by first-SKU category, by repeat-rate prediction, by AOV band).
- In-cart cross-sell: 20% of program effort. Constant background contribution; rarely the highest-leverage test. Keep it running, but reserve the heavy creative iteration for the other two placements.
- Edge placements (post-checkout-survey, account-page recommendation, support-resolution moment): 10% of program effort. These produce incremental revenue without competing with primary placements but are not where the program scales.
The allocation is a starting heuristic, not a rule. The right balance depends on the brand's existing attach rate and the specific affinity-margin profile of the catalog. Re-evaluate quarterly.
Output Format
Structure the response in this order:
- Cross-sell landscape diagnosis. One sentence on whether the brand is cross-sell-naive, cross-sell-mediocre, or cross-sell-mature, and where the highest-margin addressable surface sits.
- Affinity table. Top SKU pairs by lift over baseline and by margin-weighted opportunity, with placement recommendation (in-cart / post-purchase / delayed).
- Cross-sell map. For each top primary SKU: the recommended cross-sell SKU, the placement, the expected attach rate, the expected margin-per-impression.
- Quick Wins. 2–4 changes shippable this week. Usually post-purchase one-click placement and creative reframing.
- High-Impact Changes. 2–3 changes over 4–6 weeks. Usually the full cross-sell map deployment and the delayed-email window calibration.
- Test Ideas. 2–3 controlled tests with primary metric, holdout size, duration.
- Single highest-leverage next move. Named explicitly.
Related Skills
bundle-pricing — when the affinity signal points to a bundle rather than a sequential cross-sell.
repeat-purchase — when the cross-sell is actually a second-order replenishment timing question.
cart-abandonment-recovery — when the cross-sell question is being asked about carts that did not complete the primary purchase.