Doveridge Goods is a home goods brand with a catalog of roughly 12,000 SKUs, running on Shopify Plus with a well-optimized storefront and a capable internal team. They had done the standard CRO work - funnel analysis, checkout optimization, email flow improvements. Conversion metrics were solid but had plateaued. The team had a clear hypothesis: they were showing the wrong products to a large fraction of their visitors, and fixing that was more important than further optimizing the bottom of the funnel.
The pilot ran for 90 days. The result was a 22% lift in add-to-cart rate on the homepage recommendation surface, measured against the control group in a controlled A/B test. This is an account of what was tested, how it was measured, and what that lift looks like in actual orders.
The Starting Point
Doveridge's homepage had a featured products carousel - four to six products manually curated and updated weekly by the merchandising team - and a "bestsellers" grid below it showing twelve products ranked by 30-day unit sales. The category pages defaulted to bestseller ranking within each category. Search returned results ranked by relevance score from the platform's built-in search.
This is a reasonable, well-maintained setup. The team updated the carousel weekly, kept the category pages tidy, and regularly audited the bestseller rankings. The problem was structural, not operational: the same products were being shown to every visitor regardless of what that visitor's session behavior suggested about what they were actually looking for.
A session analysis before the pilot showed that approximately 58% of sessions had some browsing behavior before reaching the homepage recommendation surfaces - they had clicked from a category, used search, or come back to the homepage after viewing a product. These sessions had meaningful intent signals that were not being used to shape what was shown in the carousel or the grid.
What Was Changed
The intervention was narrowly scoped to the homepage recommendation surfaces - the carousel and the grid below it. Nothing else changed: the product pages, the category pages, the checkout flow, the email sequences, and the pricing were all held constant. The A/B test split traffic 50/50, with the control group receiving the existing manually curated carousel and static bestseller grid, and the test group receiving a personalized ranking that incorporated session signals.
The personalization logic used the following signals, in order of availability. For sessions with active browsing history within the current session, the ranking was weighted toward categories and price tiers the shopper had already engaged with. For sessions where the entry path carried category signals (for example, arriving from a Google Shopping click on a specific category), that entry category was used to warm the ranking. For sessions with no current-session signals and no entry path signals, the ranking fell back to a combination of recency-adjusted popularity and in-stock status.
Integration was done via a JavaScript snippet added to the theme - no platform migration, no new storefront build. The snippet replaced the content of the carousel and grid divs with a server-side-ranked product set returned from an API call on page load. Load time impact was under 80ms p95, which was below the threshold the team had set for acceptable latency.
Measurement Approach
The primary metric was add-to-cart rate on the homepage recommendation surfaces - specifically, the rate at which sessions that saw the carousel or grid resulted in an add-to-cart event for a product appearing on those surfaces. This was defined narrowly to isolate the effect of the surface change from other activity in the session.
Secondary metrics included overall session add-to-cart rate, revenue per session, and catalog depth (the average number of distinct products viewed per session). The team also tracked cross-sell rate in the cart to check for any downstream composition effects - a concern being that personalized homepages might pull shoppers into narrower product consideration, reducing basket breadth.
The test ran for 90 days to capture enough sessions for statistical significance across multiple cohorts and traffic sources, and to control for weekly seasonality patterns. Midpoint checks at day 30 and day 60 were reviewed but no changes were made to the test during the run period.
Results
The 22% lift in add-to-cart rate on the homepage surfaces was the headline number. Broken down by session type, the lift was highest - approximately 31% - for sessions where the personalization had active session signals to work with (returning visitors or sessions with prior navigation). For first-page sessions with no prior navigation, the lift was smaller, approximately 12%, reflecting the limited signal available for those sessions.
Revenue per session across all homepage-originated sessions lifted approximately 14%. The catalog depth metric increased: average unique products viewed per session increased from 3.2 to 4.1 in the test group. The team interpreted this as visitors finding the surfaced products more relevant and exploring deeper from those starting points, rather than bouncing after a quick scan of the homepage.
Cross-sell rate in cart did not decrease. Basket composition did not narrow. This addressed the team's concern that personalized surfacing might create a "filter bubble" effect where shoppers were guided into a single narrow product path at the expense of discovery breadth.
What the Lift Means in Orders
Translating add-to-cart rate lift to orders requires assumptions about downstream conversion rates, which vary by traffic source and season. Using the historical cart-to-order rate for this brand and the test period, the 22% surface-level lift translated to an estimated incremental revenue impact that the team attributed as meaningful relative to prior CRO initiatives. Attributing long-term repeat purchase behavior to the test period is harder and was not included in the 90-day measurement.
The absence of platform migration was operationally significant. The integration took less than a day of development time. The team was running a test within a week of the decision to proceed. This is the key point about a layer approach: the storefront investment the team had made in Shopify Plus was preserved entirely. The personalization layer ran on top of it, not instead of it.
The merchandising team continued their weekly carousel updates throughout the pilot - their editorial curation ran as the baseline for the control group and informed the candidate pool for the test group. The layer did not replace their judgment; it applied that judgment at the session level rather than at the average-visitor level.