The recommendation widget and its place in the funnel
The recommendation widget is where the algorithm meets the shopper. A personalization engine can
assemble a perfect selection, but without a UI component to display it, nobody sees it.
The widget does three jobs in the e-commerce funnel:
- Retention — offers alternatives when the current product is not what the shopper wanted.
- Monetisation — cross-sell and upsell raise average order value.
- Return — reminds the shopper of products they viewed or left in the cart.
Types and formats
| Format | Description | Suits |
|---|---|---|
| Carousel | Horizontal scroll, 3–6 cards visible | Product page, homepage, mobile |
| Grid | 2–4 cards per row, fixed block | Cart, pop-up |
| Compact list | Text plus thumbnail, no full cards | Sidebar, footer |
| Full-width block | Wide, banner-style format | Homepage, hero area |
Placement by page type
PDP (product page): the primary home for recommendation widgets. The standard pattern is two
widgets — Similar items (alternatives) and Frequently bought together (an addition to the purchase).
Position: below the main product content, above the reviews.
Homepage: a personalized widget driven by the shopper’s history. For new visitors, trending
products or bestsellers.
Cart: cross-sell against the cart contents. Placed below the item list so it does not pull
attention away from checkout.
404 and empty search: Recently viewed or Popular products — this is what keeps the shopper from
being lost at a dead end.
Technical integration formats
<!-- Client-side snippet: container plus script -->
<div id="gf-widget" data-strategy="similar" data-item-id="SKU-12345"></div>
<script src="//cdn.platform.ai/widget.js" async></script>
For server-side rendering (Next.js, Nuxt, other SSR frameworks): call the recommendations API on
the server while the page is being generated, so the products are rendered straight into the HTML
with no flicker on load.
Tip: add skeleton placeholders while the widget loads — they remove layout shift and read as a
faster page, even when the actual load time has not changed.