skills/marketing-growth/cross-sell-upsell-engine/SKILL.md
Recommend complementary and premium products at checkout, in cart, and post-purchase using purchase patterns, browsing history, and margin optimization
npx skillsauth add finsilabs/awesome-ecommerce-skills cross-sell-upsell-engineInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Cross-sells and upsells generate 10–30% incremental revenue with minimal customer acquisition cost. Every major e-commerce platform has apps that handle the recommendation logic without custom code. The key decisions are: which placement to start with (PDP, cart, or post-purchase), what recommendation logic to use (manual bundles vs. algorithm-based), and how to avoid checkout friction. Start with one placement and measure before expanding.
| Platform | Recommended Tool | Why | |----------|-----------------|-----| | Shopify | Rebuy (most powerful) or Frequently Bought Together | Rebuy uses AI-based recommendations with multiple placement types; FBT is simpler and cheaper for basic "people also bought" | | Shopify (Plus) | Rebuy + Shopify Functions | Shopify Functions allows custom cart transforms for bundle discounts | | WooCommerce | WooCommerce built-in cross-sell/upsell + YITH WooCommerce Frequently Bought Together | WooCommerce has native upsell and cross-sell fields on every product; YITH adds the "FBT" widget | | BigCommerce | Also Bought or Boost Commerce (App Marketplace) | Both integrate natively with BigCommerce product catalog | | Custom / Headless | Rebuy API or Recombee | Both offer recommendation APIs; Rebuy integrates directly with Shopify/BigCommerce backends |
| Placement | Expected AOV Lift | Conversion Risk | Start Here? | |-----------|------------------|-----------------|-------------| | Product page (below Add to Cart) | Moderate | Low | Yes — best starting point | | Cart page (sidebar or bottom) | High | Low | Yes — high intent, low friction | | Post-purchase page | High | None (order already placed) | Yes — zero risk to conversion | | Checkout page | High | Medium-High | No — test this last; can hurt CVR |
Recommendation: start with product page + cart page. Add post-purchase after measuring results. Only add checkout recommendations if you have data showing they lift revenue without hurting CVR.
Using Rebuy (recommended for full-featured setup):
Using Frequently Bought Together (simpler, cheaper):
For post-purchase upsells on Shopify:
Using WooCommerce native cross-sells and upsells:
Using YITH WooCommerce Frequently Bought Together (free version available):
For post-purchase upsells on WooCommerce:
Use Rebuy's API or Recombee for headless storefronts:
Rebuy API (if your backend is Shopify/BigCommerce):
// Fetch recommendations from Rebuy for a given product
const response = await fetch(
`https://rebuyengine.com/api/v1/products/recommended?key=${REBUY_API_KEY}&shopify_product_ids=${productId}&limit=4`
);
const { data } = await response.json();
Build co-purchase recommendations from order data (only if no third-party tool):
// Compute product affinity from co-purchase frequency
// Run nightly — minimum 1,000 orders for meaningful signal
async function computeProductAffinity() {
const orders = await db.orders.findAll({ where: { status: 'completed' }, include: ['lineItems'] });
const coMatrix: Record<string, Record<string, number>> = {};
for (const order of orders) {
const productIds = [...new Set(order.lineItems.map((li: any) => li.productId))];
for (let i = 0; i < productIds.length; i++) {
for (let j = i + 1; j < productIds.length; j++) {
const [a, b] = [productIds[i], productIds[j]].sort();
coMatrix[a] = coMatrix[a] ?? {};
coMatrix[a][b] = (coMatrix[a][b] ?? 0) + 1;
}
}
}
// Store results and filter to pairs with at least 3 co-purchases
// Serve from a cached API endpoint with 1-hour TTL
}
Track these metrics weekly in your recommendation app's analytics:
| Metric | Target | Where to Find | |--------|--------|---------------| | Recommendation CTR | 8–15% (PDP), 15–25% (cart) | Rebuy → Analytics, FBT → Reports | | Orders with recommended item added | 5–15% of all orders | App dashboard → Attach rate | | AOV lift from recommendations | $5–$20 depending on catalog | Compare AOV of orders with/without recommendation clicks |
| Problem | Solution | |---------|----------| | Checkout recommendations increase cart abandonment | A/B test before enabling; limit to 1 low-cost item under $30; remove if test shows negative impact | | Recommendations show the same product being viewed | Exclude the current product from recommendations (most apps do this automatically; verify in settings) | | Cold start — no recommendations for new products | Add manual recommendations in your app's admin panel; pair new products with bestsellers | | Recommendations irrelevant (e.g., suggest a phone case with a t-shirt) | Review auto-generated recommendations and block irrelevant pairs using the "block" feature in your app | | Bundle discount codes being shared publicly | Use your app's built-in auto-apply discount (no code to share) rather than coupon codes |
tools
Let shoppers save products to a wishlist, share it with friends, and get notified when saved items come back in stock or drop in price
development
Build a themeable storefront with design tokens and CSS custom properties that supports white-labeling, multi-brand variants, and dark mode
development
Speed up product discovery with instant search suggestions, fuzzy typo matching, and category-aware results powered by Algolia or Elasticsearch
development
Build a mobile-first storefront with thumb-friendly navigation, sticky add-to-cart buttons, and touch-optimized components for high mobile conversion