CRO

Product Recommendation A/B Testing: Does It Convert?

Product recommendation a/b test: the metric that misleads, cannibalization, an honest control, latency cost and how to size the experiment properly.

Flat illustration of a shopping bag with three small product boxes fanning out from it, each joined by a thin line

A product recommendation A/B test compares a version of the store with automatic suggestions against one without them (or with a different suggestion logic), to find out whether personalization creates new orders or simply moves the same sale around. It is one of the tests where the metric the tool puts on its main screen is exactly the one that misleads the most. This article is part of the complete checkout optimization playbook and covers what to test, which metric decides, how to build an honest control, how much traffic the experiment needs and the traps specific to personalization.

What a recommendation block actually does

A recommendation block solves a concrete problem: in a store with a large catalog, most products are never seen, and a visitor who cannot find the right item leaves without buying. Recommendations shorten that search. The problem is that they do it by occupying space on a page that already had a job, and the attention detour does not always pay for itself.

Three positions account for most implementations, and each tests a different hypothesis:

Three positions for the recommendation block and what each one risksOn the product page the hypothesis is discovery, with the risk of diverting someone who had already decided. In the cart the hypothesis is average order value, with the risk of adding friction at the most sensitive step. After purchase the hypothesis is repurchase, with no risk to the current order and a slower evaluation.Product pagehypothesis: discoveryrisk: diverting someonewho already decidedmeasure: orders per visitorCarthypothesis: order valuerisk: friction at the mostsensitive funnel stepmeasure: revenue per visitorAfter purchasehypothesis: repurchaserisk: none to thecurrent ordermeasure: repurchase rateEach position is a separate experiment with its own primary metric. Running all three inside onevariation makes it impossible to know which one caused the result.
Position is not a layout detail, it is the hypothesis of the test. Turning recommendations on across the whole store at once produces an aggregate number that teaches nothing about where they work.

The metric that misleads: widget clicks

Every recommendation tool shows, on its opening dashboard, the click-through rate on the block and the revenue attributed to it. Both numbers almost always look excellent, and neither answers the question the test is asking.

Click-through measures visual appeal, not increment. A well designed carousel gets clicks in any store. Attributed revenue is worse, because it carries a silent assumption: that a purchase made after a widget click would not have happened without it. In practice, much of it would have.

That has a name: cannibalization. Three common shapes:

The correct reading ignores clickers entirely and compares all visitors in each variation: orders per visitor, revenue per visitor. It is the only way to measure increment instead of attribution.

Revenue attributed to the widget versus real incremental revenueThe widget dashboard shows all revenue that passed through a click on the recommendation. Part of it comes from purchases that would have happened anyway, called cannibalization, and only the remaining slice is real increment. Only a comparison of all visitors across both variations separates one from the other.What the widget dashboard showsrevenue attributed to the recommendation blockWhat the A/B test revealspurchase that would have happened anywayreal incrementThe exact split between the two bands is what your test measures. Conceptual illustration, not store data.
Attributed revenue always looks bigger than increment, because it includes the sale the store would have made without the block. A well read test separates the two; a widget dashboard, by construction, cannot.

The honest control: best sellers against the algorithm

The second structural mistake in this kind of test is the choice of control. Comparing “with recommendations” against “with nothing” measures the value of filling that space with anything, not the value of personalization. A static best-sellers list for the category is a strong, cheap control: high social proof, guaranteed stock and zero added latency.

Recommendation logic What it uses When it usually wins Cost and risk
Category best sellers Aggregate sales history Small catalogs, new traffic, fast-moving products Practically none; it is the control to beat
Manual rules (curation) Relationships defined by someone who knows the catalog Catalogs with obvious item relationships (kits, accessories) Maintenance cost; ages silently
Bought together (collaborative) Item co-occurrence in past orders Large catalogs with heavy order history Cold start on new products; reinforces what already sells
Session behavior based The visitor own recent browsing Long exploratory sessions Depends on personal data; needs a legal basis under privacy law
Predictive model by profile History, profile and context combined Large logged-in, returning bases Infrastructure, latency and less explainability

One practical consequence of that table: if your store still has no well placed best-sellers block, that is the test to run first. It is cheaper, faster to implement, and it establishes the baseline any algorithm will later have to prove itself against.

Sizing the test

Set your current order rate, the minimum gain that would justify keeping recommendations (including the monthly cost of the tool) and your real weekly traffic:

Sample size calculator
-Visitors per variation
-Total (2 variations)
-Estimated duration

Two-proportion normal approximation, 2 variations (50/50). Tweak the inputs and watch it update live.

A worked example with real numbers

A store converts 2.2% of visitors into orders and gets 50,000 visits per week. The team wants to turn on a recommendation block on the product page.

Detecting an 8% relative improvement (from 2.2% to 2.376%) at 95% confidence and 80% power requires 113,296 visitors per variation, which takes about 32 days. Aiming at 12% relative (from 2.2% to 2.464%), the requirement drops to 51,299 per variation and the test closes in about 15 days. Look at the size of those numbers: this is why recommendation tests with a few thousand visitors per side almost always end inconclusive, and the team ends up deciding on widget click-through, which is precisely what should not happen.

Suppose the test ran to 52,000 visitors per variation and closed with 1,144 orders in control (2.20%) against 1,248 in the recommendation variation (2.40%). Running those four numbers through the significance engine used across this blog: z = 2.15, p-value about 0.0315, with a 95% confidence interval for the difference between +0.02 and +0.38 percentage points, and an observed relative improvement of +9.1%. The result is significant, and the interval is an important reminder of how imprecise a significant result can be: the true gain could be as small as 0.02 points, practically nothing.

Recommendation test result: significant and still impreciseControl converted 1,144 of 52,000 visitors into orders, 2.20 percent. The recommendation variation converted 1,248 of 52,000, 2.40 percent. The 0.20 percentage point difference has a 95 percent confidence interval between 0.02 and 0.38 points, which does not cross zero, with a p-value of about 0.0315.Orders per visitor, per variationNo recommendation2.20% · 1,144 / 52,000With recommendation2.40% · 1,248 / 52,000Difference, 95% intervalzero+0.02 pt+0.38 ptp ≈ 0.0315
Significant is not a synonym for material. Before celebrating, convert the lower bound of the interval into money and compare it with the monthly cost of the recommendation tool.

Does the gain pay for the tool?

This is the question that closes the test, and the confidence interval is what makes it answerable. Take the same store: 50,000 weekly visits, an average order value of $60, gross margin of 35%, and a recommendation tool costing $1,200 per month. Project each end of the interval and use 4.33 weeks per month:

Reading of the gain Extra orders per week Monthly revenue Monthly gross contribution Net of the $1,200 tool
Lower bound, +0.02 pt 10 $2,598 $909 −$291
Point estimate, +0.20 pt 100 $25,980 $9,093 +$7,893
Upper bound, +0.38 pt 190 $49,362 $17,277 +$16,077

The same statistically significant result covers a range from “does not pay the subscription” to “pays it fourteen times over”. That is not a flaw in the test, it is what a p-value of 0.03 on a small effect honestly means. For an investment decision, use the lower bound; to prioritize the next test, use the point estimate. The statistical significance guide details how to read each of those numbers, and the revenue per visitor calculator assembles the money side.

One-off test or permanent holdout

Recommendations are one of the few ecommerce levers where it pays to keep a control group after the test ends. The reason is simple: the algorithm changes on its own. It relearns from new orders, reacts to catalog and stock changes, and what worked in March can be neutral in September without anybody touching a setting.

A one-off test answers “turning recommendations on beat not turning them on, during those weeks”. A permanent holdout, a small fixed slice of traffic (typically between 2% and 5%) that never sees recommendations, answers a different and more durable question: “how much is the algorithm delivering this quarter”. It is the same guardrail logic email teams use to measure an automation program over time.

One-off test (A/B) Permanent holdout
Question it answers Is it worth turning on? How much is it worth right now?
Duration Weeks, until the sample closes Continuous, read quarterly
Traffic slice in control 50% Between 2% and 5%
Cost Half the traffic without the lever for weeks A small slice permanently without the lever
When to use Before buying or building After the lever becomes part of the store

The cost of a holdout is real and deserves to be stated honestly: if recommendations do convert better, you are leaving money on the table in that small slice, every day. The trade is knowing, with a number instead of faith, whether the tool you pay for every month is still delivering. Because the slice is small, the reading takes longer to accumulate sample, so treat the holdout as a quarterly report, not a Monday morning dashboard.

Mandatory guardrails

Guardrail Why watch it Warning sign
Average order value Recommendations can swap an expensive item for a cheap one Orders rise and revenue per visitor stays flat or falls
Load time The block almost always comes from an external service The recommendation variation loads noticeably slower, especially on mobile
Return rate A suggested purchase is likelier not to be what the person wanted Returns rise in the winning variation in the following weeks
Stock-outs The algorithm tends to concentrate traffic on the same products Recommended items sell out and the block starts suggesting unavailable ones
Catalog diversity sold Collaborative filtering reinforces what already sells The long tail disappears from sales and the store depends on a handful of items

The latency guardrail deserves emphasis because it is the most frequently forgotten. A block that adds requests and JavaScript after the main content charges a toll on every visit, including the ones that never looked at the carousel. If the block delays product rendering, part of the discovery gain comes back as abandonment from slowness, and the test measures the sum of both effects without separating them.

Personalization and personal data

Recommendations based on best sellers or on order co-occurrence work with aggregate data. Recommendations based on an individual visitor behavior, or on the history of an identified customer, process personal data, which requires a legal basis and transparency under privacy regimes such as the GDPR in Europe and the LGPD in Brazil.

Two practical implications for test design: the personalized variation has to respect the same consent policy as the control (if personalization depends on cookies that a share of visitors refuses, that share behaves like control and dilutes the measured effect), and the notice shown to users about data use has to be identical on both sides, otherwise the consent difference becomes a confounder no calculator can fix afterwards.

Traps specific to recommendation tests

Make this automatic with Donnu

Testing product recommendations needs three things at once: a sample large enough for a small effect on a low base rate, a reading by orders and revenue per visitor instead of widget clicks, and an honest confidence interval to compare against the real cost of the tool.

Donnu A/B delivers that on your site: a light snippet that does not slow the product page down, automatic sample sizing and Bayesian statistics that do not invent certainty. Start a 14-day free trial and find out whether your recommendations create new sales or just move the sale that already existed.


Read also: Ecommerce Checkout Optimization: The A/B Testing Playbook · Product Page A/B Testing · Upsell and Cross-Sell A/B Testing · Leia em português: Teste A/B de Recomendação de Produto

References

Frequently asked questions

Which metric decides a product recommendation test?
Orders per visitor and revenue per visitor, never clicks on the recommendation block. Widget click-through is the metric the recommendation tool shows first and the one that always looks good, because any visually appealing block gets clicks. What it cannot separate is whether that click produced a new purchase or simply diverted a purchase that was already going to happen. Only a bottom-of-funnel metric, measured across all visitors in the variation and not only the ones who clicked, answers that.
What is cannibalization in a recommendation test?
It is when the recommendation captures a purchase that would have happened anyway, usually by replacing the product the person had already decided on with a suggested one. The widget dashboard records this as a win, because there was a click and there was revenue attributed to the block. In store aggregate, however, order count does not move and the basket may even shrink, if the recommended item is cheaper than the original. That is why the correct reading compares all visitors in each variation, not the buyers attributed to the widget.
Does an algorithm beat a plain best-sellers list?
Not always, and that is the honest comparison many tests avoid. A curated best-sellers list for the category is a strong control: it already surfaces products with high social proof and guaranteed availability, with no infrastructure cost and no added latency. An algorithm has to beat that control, not an empty page. If your test compares personalization against no recommendation at all, it measures the value of having a block, not the value of the algorithm.
How much traffic does a recommendation test need?
A lot, because the expected effect is usually small and the base order rate is low. With the math used across this blog, a store converting at 2.2% that wants to detect an 8% relative improvement needs about 113,296 visitors per variation. Aiming at 12% relative drops the requirement to about 51,299 per variation, which at 50,000 weekly visits closes in around 15 days. Recommendation tests with a few thousand visitors per side almost always end inconclusive.
Does a recommendation block slow the page down, and does that affect the test?
Yes, and it is a cost that rarely enters the math. Most recommendation blocks load from an external service, after the main content, adding requests and JavaScript to the page. If the variation with recommendations is noticeably slower, part of the discovery gain is handed back as abandonment from slowness, especially on mobile connections. Measure load time per variation as a guardrail, and load the block in a way that never blocks rendering of the main product.