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

# How to Create a Related Products Recommendation Preset

Related Products presets surface complementary items — the things customers buy together with what they're already looking at. Maestra Platform offers three variations, each tuned for a different placement.

<CardGroup cols={3}>
  <Card title="Related Products Recommendation Preset" icon="link">
    Complements to a single product.
  </Card>

  <Card title="Often Purchased With Items in Product List Recommendation Preset" icon="list">
    Complements to each item on a customer's product list.
  </Card>

  <Card title="Post-purchase Cross-sell Recommendation Preset" icon="receipt">
    Complements to each item in the customer's most recent order.
  </Card>
</CardGroup>

Related Products recommendations are built from customer actions with products. The target product needs **at least 100 actions** for the preset to produce personalized recommendations — otherwise it falls back to bestsellers.

The preset counts actions with products from the segments in **Recommend for products** and **Recommend from**, over the window set in **Take into account actions with products for**. If none of the products in those segments have enough actions, the preset stops and a warning appears on the project. To fix it, widen the time window or switch to a different preset that fits the campaign.

## Related Products Recommendation Preset

Surfaces complementary products and builds recommendations for a specific item. Higher-priced items get more recommendations; lower-priced items get fewer.

* Best used for "Frequently bought together" and "Customers also bought" modules.
* Works for identified and anonymous customers.
* Available through the API (recommendation widget) and email.

**Good to know:**

* **Signals used:** same-order co-occurrence, plus category and attribute co-purchase patterns. The ML model can predict recommendations even for products with no order history yet.
* **Refresh:** once a day.
* **Limit:** up to 5 instances per project.
* **Segment:** can be limited to a product segment.
* **Auto-filters:** checks the product's area; product external systems match by default.

## Often Purchased With Items in Product List Recommendation Preset

<Note>
  This preset only generates recommendations for customers with activity in the last 90 days. Everyone else will see recommendations calculated earlier (if the preset is more than 90 days old) — or no recommendations at all.
</Note>

The Related Products preset applied to each item on a customer's product list. The number of recommendations scales with product price — more for expensive items, fewer for cheaper ones. Recalculates in real time based on the customer's orders.

* Best used for abandoned Cart, Favorites recommendations, and on-site Cart modules.
* Works for identified and anonymous customers.
* Available through the API (recommendation widget) and email.

**Good to know:**

* **Refresh:** real time.
* **Limit:** up to 3 instances per project.
* **Auto-filters:** checks the product's area and brand (multi-brand projects).

## Post-purchase Cross-sell Recommendation Preset

<Note>
  This preset only generates recommendations for customers with activity in the last 90 days. Everyone else will see recommendations calculated earlier (if the preset is more than 90 days old) — or no recommendations at all.
</Note>

The Related Products preset applied to each item in the customer's most recently updated order, with recommendation volume proportional to price. Recalculates in real time.

* Best used for "Thanks for your order" and "Next order suggestion" flows.
* Identified customers only.
* Available through the API (recommendation widget) and email.

**Good to know:**

* **Refresh:** real time.
* **Limit:** up to 1 instance per project.
* **Auto-filters:** checks the product's area and brand (multi-brand projects).

## How to set it up

<Steps>
  <Step title="Open Product recommendations">
    Go to **Content → Product recommendations** and click **Add mechanic**.
  </Step>

  <Step title="Choose the preset">
    Pick the variation that matches your placement.
  </Step>

  <Step title="Name the preset">
    Enter a name and click **Continue**.
  </Step>

  <Step title="Configure general settings">
    * **Take into account actions with products for** — the window for counting order signals, from 1 to 180 days.
    * **Recommend for products** — the scheduled segment recommendations are built for (optional).
    * **Recommend from** — the scheduled segment recommendations are drawn from (optional).
    * **Brand** (for multi-brand projects) and **Product list** — used for the Often Purchased With Items in Product List Recommendation Preset.
    * **Recommend only from the same external system** — enabled by default; can be turned off.

    You can also configure **Manufacturer exclusions** in the corresponding block. For the Often Purchased With Items in Product List Recommendation Preset, select a product list as well.
  </Step>

  <Step title="Launch the preset">
    Activate it. The Product recommendations page shows the preset's status and the timestamp of its last update.
  </Step>
</Steps>

## Usage example

Say you want to surface related products from the "Scarves" segment for the "Coats" segment (system name `Coats`).

1. Create a recommendation using the **Related Products Recommendation Preset**:

   * Select the segments in the settings.
   * Launch it.
   * You'll get the parameter `Product.Recommendations.Soputstvuyuschieprodukti`.

2. Insert the parameter into your email.

   Use `Take()` to limit the segment size so the email can render even when the segment is large.

   Sample markup for this example, which outputs the name of the recommended product:

   ```
   @{for prod in Products.GetBySegment("Coats").Take(5)}
              @{for item in prod.Product.Recommendations.Soputstvuyuschieprodukti.Take(2)}
                 ...${item.Name}...
              @{end for}
           @{end for}
   ```
