Here is the line that separates a helpful store from a pushy one: relevance. "You're buying a camera. Here's a compatible memory card" is a favour. "You're buying a camera. Here's an unrelated blender on sale" is noise the customer learns to ignore, and worse, it teaches them that your suggestions aren't worth reading. Done well, cross-selling and upselling lift the value of orders you were already going to get, more revenue from the same traffic, no extra ad spend. Done badly, they add clutter, slow the page, and erode trust. The difference is almost never the idea; it's the relevance and the restraint. This post is about getting that balance right on PrestaShop specifically. Which native tools the platform already gives you, where they fall short, and how to place suggestions so customers thank you instead of bouncing.
Last updated: June 2026.
This is the mechanics-and-judgement post: what to suggest, where, and how to keep it helpful. The broader question of every lever that raises basket size, bundles, free-shipping thresholds, gift wrap, loyalty, is its own subject; for the full menu see 8 ways to raise average order value. Here we stay on the two specific tactics in the title.
Cross-selling vs upselling, and why the distinction changes where you place them
They get lumped together, but they pull in opposite directions, and that decides where each one belongs.
Cross-selling adds alongside the purchase. The customer is buying running shoes; you suggest socks, insoles, a cleaning kit. The original choice stays, you're growing the basket.
Upselling swaps upward. The customer is looking at the entry-level model; you put the premium version next to it. The original choice gets replaced by a more expensive one, you're growing the line value.
| Cross-sell | Upsell | |
|---|---|---|
| Effect on order | Adds a second item | Upgrades the chosen item |
| Best moment | Cart & checkout (decision already made) | Product page (decision still open) |
| Why there | Adding €10 to an €80 cart feels painless | Once they've added to cart, you don't want to make them reconsider the product |
| Risk if misplaced | Distracts on the product page before they commit | Feels like upselling regret if pushed after add-to-cart |
So what does that mean for setup? Upsells want to be on the product page, where the customer hasn't locked in the model yet. Cross-sells want to be in the cart, where the model is decided and accessories are the obvious next thought. Putting them the other way round is the single most common reason these tactics underperform, a cross-sell on the product page competes for attention with the very thing you're trying to sell, and an upsell in the cart asks the customer to second-guess a decision they already made.
What PrestaShop gives you natively, and where it stops

Before you reach for a module, know what's already in the box, because two of the most important pieces ship with core PrestaShop and cost nothing.
Accessories. The native cross-sell you should already be using
Every PrestaShop product (1.7 through 9) has a related/accessories products field. To set it up, edit the product and use the related/accessories products field; on older 1.6 stores this lives under the Associations tab. You type a product name, it autocompletes, you link it. On the front end those linked products render through the theme's product page, in the default Classic theme they appear under an "Accessories" heading below the description, driven by the {$accessories} array the ProductController passes to the template.
This is a manual, hand-curated cross-sell, and that's its strength: you decide exactly what pairs with what. A phone gets a case, a screen protector, and a charging cable, not whatever an algorithm guessed. So what's the catch? It's manual all the way down. With 50 products it's an afternoon; with 5,000 SKUs, hand-linking accessories on every one is a job nobody finishes. There's also no automation: accessories don't update when buying patterns shift, and a phone case discontinued last month still shows as an accessory until you remove it by hand.
The native cross-selling module, the automatic "also bought" block
PrestaShop also ships a cross-selling module: on 1.7, 8 and 9 it's ps_crossselling (on 1.6 it was simply crossselling). It adds a "Customers who bought this product also bought…" block, primarily on the product page, with a cart-modal variant, built from real order history rather than manual links. It's the closest thing core gives you to the Amazon-style associative cross-sell.
It works, but it's blunt. It surfaces co-purchase data with little control over which associations show, no curation, and a layout that's whatever your theme makes of the default hook. For a small catalogue it's a reasonable free start. The moment you want to control placement, limit the count, exclude out-of-stock items, or show curated picks instead of raw co-purchase noise, you've outgrown it.
What PrestaShop has no native answer for: upselling and bundles
This is the honest gap. Core PrestaShop has no native upsell mechanism, nothing that says "you're viewing the 256 GB model, here's the 512 GB for €40 more" with a side-by-side comparison. The closest native lever is combinations (variants), which can carry price impacts, but that's a variant picker, not a persuasive upgrade prompt, see product combinations and variants for when that's the right tool. PrestaShop does have native Pack products, which cover simple fixed bundles, but promotional bundle pricing like "buy these three together and save 10%," along with dynamic frequently-bought-together deals, usually needs cart rules or a module. Bundle and upgrade prompts are where merchants reach for a module or build the logic themselves.
Cross-selling tactics that actually convert on PrestaShop
"Frequently bought together." The Amazon pattern, and it converts because it's data-backed rather than a guess. The native crossselling module is your free starting point, the Accessories field your curated upgrade. Keep it to 2–3 items. The fantasy of "complete the kit in one click" is real, but only when the items genuinely belong together.
Curated accessories and "complete the look." This is where the manual Accessories field earns its keep. A dress with matching jewellery and a clutch; a camera with the right card, a spare battery, and a bag. Curate it like a stylist, not a search engine. These are also your best candidates for the product-page slot because they enrich rather than distract. They answer "what else do I need to actually use this?"
Consumables and refills. If your product eats consumables, printer cartridges, coffee pods, filters, refills, link them as accessories. The customer needs them eventually; offering them at purchase is a genuine convenience, not a push. This is the rare cross-sell that's almost impossible to make feel pushy, because the customer already knows they'll be back for it.
Bundle pricing. "Buy all three, save 10%" reads better than three separate line items because it frames a decision (take the deal or not) instead of three. native Pack products cover simple fixed bundles, but advanced bundle offers and dynamic frequently-bought-together deals need rules or modules, so the practical route is a cart-price rule, a Catalog → Discounts → Cart rules condition that triggers when the qualifying products are all present. If your bundles are seasonal or time-boxed, scheduling that discount rather than toggling it by hand keeps the price honest. Set the window, walk away, and the bundle price turns itself on and off instead of relying on you to remember.
Upselling tactics, and why they belong on the product page
Tier comparison. The strongest upsell is a small, honest table: the model they're viewing next to the tier up, with the extra features called out. a product comparison module or theme feature can handle this side-by-side, point an undecided customer at the comparison instead of asking them to open two tabs. Where it helps, reframe the gap as small: "€0.50 a day more over a year" lands softer than "€180 more." That's not manipulation as long as the maths is real.
Price anchoring. Showing the premium option first makes the mid-tier feel like the sensible middle. You're not tricking anyone. You're giving the customer a range so they can place their own choice on it. The line you don't cross is inventing a fake "was" price; pricing psychology works precisely because the anchors are honest.
Volume "upgrades." "Buy 2, save 15%" or "3 for the price of 2" nudges quantity rather than tier, but the effect on order value is the same. In PrestaShop this is a clean specific-price quantity discount set on the product's own Pricing tab, or a cart rule under Catalog → Discounts, no module needed for the basic case.
Where to place suggestions, the PrestaShop map
| Placement | Best for | How many | PrestaShop reality |
|---|---|---|---|
| Product page, below description | Upsells, accessories & "also bought" | 2–4 | Native Accessories block and ps_crossselling block commonly render on the product page in Classic/default hook positions, depending on theme and hooks; don't bury the buy button |
| Cart page | Cross-sells (highest converting) | 3–4 | No native cart cross-sell block. Needs a module; €10 on an €80 cart feels painless |
| Checkout | One tiny, one-click add (gift wrap) | 1 | Keep it minimal, distractions here cause abandonment |
| Order confirmation | Post-purchase cross-sell + time-limited code | 2–3 | They just proved they trust you; the goodwill is real |
| Post-purchase email | Replenishment & complements | 2–3 | 5–7 days after delivery. "Keep your new shoes looking great" |
The non-obvious rule in that table: the cart is where cross-sells convert best, not the product page. A customer on the product page is still deciding whether to buy at all; a customer in the cart has decided, and adding an accessory is now a low-stakes "sure, why not." Most stores get this backwards, they pile suggestions onto the product page (where they compete with the conversion) and leave the cart bare (where they'd actually earn).
Helpful vs pushy, the five-question gut check
Every suggestion you show should pass all five. If it fails one, it's costing you more in trust than it earns in revenue.
- Relevant. Does it relate to what they're buying? An irrelevant suggestion isn't neutral, it trains the customer to ignore the whole block, including the good ones.
- Limited. 3–4 suggestions, not 20. More options create paralysis, not more sales, and they slow the page.
- Honestly priced. No inflated "original" prices to make a bundle look better than it is. Customers see through it, and the trust you spent building credibility elsewhere drains out fast.
- Easy to dismiss. A suggestion the customer can ignore is fine. A pop-up that blocks checkout, an auto-added item they must remove, an "Are you sure?" guilt prompt. Those are hostile, and PrestaShop's abandonment stats punish them.
- Genuinely useful. Ask the one question that matters: "Would I be grateful for this if it appeared in my own cart?" If the answer is no, don't show it. That single test catches almost every pushy pattern before it ships.
Measuring whether it actually worked
Don't trust a gut feeling, and don't trust three days of data. Before you change anything, record your baseline, then compare over at least 30 days and a meaningful order count so you're reading a trend, not week-to-week noise. The four numbers that matter:
- Average order value (AOV). The headline metric. The whole point is moving this up without spending more on traffic.
- Cross-sell / upsell attach rate. What share of orders include a suggested item? Attach rates are typically in the low single-digit-percent range, but the honest answer is that it varies wildly by catalogue and placement, measure your own rather than trusting a quoted figure.
- Revenue per suggestion. Which specific pairings earn? Most of the lift usually comes from a handful of associations, find them and double down, cut the dead weight.
- Cart abandonment. The guardrail. If abandonment rises after you add suggestions, they're too aggressive, pull back placement or count before the lost orders outweigh the attach revenue.
PrestaShop's default dashboard shows AOV but won't slice revenue by suggestion or pairing, for the margin and order-value reporting that tells you whether a cross-sell is genuinely additive or just shifting where customers spend, our Financial Revolution reporting surfaces the per-order and margin view core leaves out. So what does that buy you? You stop guessing which suggestions pay for the page weight they add, and you can prove the strategy is generating more value from existing traffic rather than just adding clutter.
The whole discipline comes down to one habit: show the customer the thing you'd genuinely want shown to you, in the place where it helps rather than interrupts, and measure honestly enough to cut what doesn't earn. Cross-selling and upselling aren't tricks to extract more from a customer, done right, they're you doing part of the customer's shopping for them. On PrestaShop that means using the native Accessories field and crossselling module for what they're good at, reaching for curated bundles and tier comparisons where core stops, and never letting a suggestion onto the page that fails the "would I be grateful?" test.
Modules for the gaps core leaves
The native Accessories field and ps_crossselling block cover the curated and the automatic cross-sell respectively; where core stops is the upsell. For the tier-comparison upsell, putting the model they're viewing beside the tier up so an undecided buyer can choose without opening two tabs. Our Product Compare module gives the side-by-side that PrestaShop has no native answer for. A Recently Viewed Products block is a quieter, lower-pressure cross-sell surface that earns its place precisely because the customer chose those products themselves. And to tell whether any of this is genuinely additive rather than just shifting where customers spend, Financial Revolution reporting surfaces the per-order and margin view core's dashboard leaves out. (Disclosure: we build and sell these modules.)
Frequently asked questions
What's the difference between cross-selling and upselling?
Cross-selling adds alongside the purchase, buying running shoes, you suggest socks and insoles; the original choice stays and the basket grows. Upselling swaps upward. Looking at the entry-level model, you put the premium version beside it; the chosen item gets replaced by a more expensive one. They pull in opposite directions, which is why placement differs: upsells belong on the product page (the decision is still open), cross-sells in the cart (the decision is made).
Where should I place cross-sells in PrestaShop, product page or cart?
The cart, not the product page, and most stores get this backwards. A customer on the product page is still deciding whether to buy at all, so a cross-sell there competes with the conversion. A customer in the cart has decided, and adding a €10 accessory to an €80 cart is a low-stakes "sure, why not." PrestaShop has no native cart cross-sell block, so that placement needs a module, but it's where attach rates are highest.
Does PrestaShop have a native upsell feature?
No. Core has the manual Accessories field and the ps_crossselling "also bought" block for cross-selling, plus native Pack products for simple fixed bundles, but nothing that says "you're viewing the 256 GB model, here's the 512 GB for €40 more" with a side-by-side comparison. The closest native lever is combinations (variants), but that's a picker, not a persuasive upgrade prompt. Upsell comparisons need a module.
How do I create a "buy these together and save" bundle in PrestaShop?
Native Pack products cover simple fixed bundles. For promotional "buy all three, save 10%" pricing the practical route is a cart-price rule, a Catalog → Discounts → Cart rules condition that triggers when the qualifying products are all present. If the bundle is seasonal, set the rule's date window so the price turns itself on and off instead of relying on you to remember.
How many suggestions are too many?
Keep it to 3–4. More options create paralysis, not more sales, and they slow the page. Every suggestion should also pass the other four checks: relevant, honestly priced (no fake "was" prices), easy to dismiss, and genuinely useful, the one test that catches almost every pushy pattern is "would I be grateful for this if it appeared in my own cart?"
Comments
Leave a comment
Share a question, an installation detail, or feedback that could help another reader.