> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sequenzy.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Product Recommendations

> Show every recipient the products they are most likely to buy, picked automatically at send time

# Product Recommendations

Sequenzy can fill an email block with different products for every recipient, based on their browsing activity, your store's order history, and your catalog. You design the block once; the products are selected per recipient when the email is sent.

## Adding a recommendations block

In the email editor, open the block picker's **Commerce** section and add **Recommended products**. You get a ready-made product card list bound to the recommendation engine - image, title, price, and a Shop now button per product.

The same capability is available on any **Repeat** block by setting **What to show** to **Recommended products**.

## Ranking strategies

Choose how products are ranked in the block settings under **Ranking**:

* **Personalized for each recipient** (default) - products the recipient recently viewed or added to cart, then products browsed by shoppers with similar activity, then your store's most-browsed products, then the newest in-stock products so the list never renders empty.
* **Best sellers** - products with the most orders across your store in the activity window.
* **Newest products** - the latest in-stock products by their source-catalog
  creation time (with local import time used only when the source does not
  provide one).
* **Recently viewed** - only the recipient's own browsing, topped up from the catalog when there is not enough activity.

Strategies that use activity accept an **Activity window** (7 to 180 days, default 30) controlling how far back browsing or orders are considered.

## Fine-tuning

* **Skip already-purchased products** (on by default) leaves out anything the recipient bought in the last year.
* **Don't repeat products** (on by default) rotates content between sends so a recipient never sees the same products twice; the oldest-seen products come back when nothing new is left.
* **Catalog filters** narrow recommendations by tag, collection, vendor, product type, or price range.
* **Match the trigger event's product** restricts event-triggered sequence emails (for example browse abandonment) to products related to the product on the trigger event.

A product never repeats within a list or across lists in the same email. Out-of-stock products are excluded, and titles, images, and prices come from your live catalog at send time.

Recommendations work with every connected catalog: Shopify, WooCommerce, the custom commerce API, Stripe, and manually added products. Shopify stores get the strongest personalization because the storefront pixel feeds browse and cart activity.

## Measuring results

Sequenzy tracks the full recommendation funnel:

* **Products shown** - how many recommended products were rendered across sends.
* **Clicks** - clicks on recommended products, attributed to the exact block and product.
* **Attributed orders and revenue** - orders that contain a product the subscriber clicked in a recommendation within the previous 7 days.

Revenue stays separated by order currency. API responses expose these totals as
`revenueByCurrency`; `UNKNOWN` identifies older or custom order events that did
not provide a currency. The legacy `revenueCents` aggregate remains for
compatibility, but should not be displayed when more than one currency is
present.

The funnel appears on the campaign stats page whenever a sent email used recommendation blocks, including a per-product breakdown of what was shown and clicked. Sequence metrics aggregate the same funnel across every email and A/B test node in the sequence.

Via the API, `GET /api/v1/metrics/campaigns/{campaignId}` and `GET /api/v1/metrics/sequences/{sequenceId}` return a `recommendations` object with the same numbers. It also flows through the CLI (`sequenzy stats --campaign <id> --period 30d --json`, or use `--start` and `--end`) and the MCP `get_campaign_stats` / `get_sequence_stats` tools, whose `period`, `start`, and `end` inputs apply the same filters. Period and custom date-range filters scope recommendation impressions, clicks, and their attributed orders consistently with the surrounding metrics.

## Where recommendations resolve

Recommendation blocks resolve per recipient in campaigns, sequences, sequence A/B tests, and test sends, and the editor preview mirrors send-time behavior with your real catalog. Transactional emails sent through the API do not currently resolve recommendation blocks.
