> For the complete documentation index, see [llms.txt](https://docs.intelligems.io/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://docs.intelligems.io/post-purchase-upsells/how-to-set-up-a-post-purchase-upsell-personalization-or-test.md).

# How to Set Up a Post-Purchase Upsell Personalization or Test

[VIDEO: How to Set Up a Post-Purchase Personalization](https://www.loom.com/share/cb9822d69d424bc8962d656cc3d14276) | [VIDEO: How to Set Up a Post-Purchase Test](https://www.loom.com/share/8c934cd4ee8f44c4a1eb0e12ec0731b4)

{% hint style="success" icon="flask-round-potion" %}
Post-Purchase Upsells are currently in beta! If you'd like early access, please request access [here](https://portal.usepylon.com/intelligems/forms/post-purchase-access-request).
{% endhint %}

Post-Purchase Upsell Personalizations let you show product upsells to customers immediately after they place an order, either for all visitors or a targeted audience. If you want to test variations against each other, create a Post-Purchase Upsell Test instead. The setup process is the same.

## Step 1: Create a Post-Purchase Upsell

1. Go to **Post-Purchase** in your Intelligems dashboard.
2. Select the upsell type you want to create. Currently, only one-step offers are available. Our team is developing multi-step funnels. If you're interested, let us know [here](https://portal.usepylon.com/intelligems/forms/post-purchase-funnel-interest-form).

## Step 2: Configure your upsell

#### General Settings

**Exclude out of stock items** Set whether to exclude out of stock items from being displayed as an upsell.

**Exclude products in order** Set whether to exclude products that are in the order from being displayed as an upsell.

**Number of products to show** Set how many products to display on the upsell page.

#### Discount

**Discount value** Define whether there is no discount, a percentage off, or a fixed amount off.

**Percentage or Amount off** Define the amount off each item in the upsell. This discount applies uniformly. At this time, you cannot set different discounts for individual items.

#### Order rules

**Rules** Each rule has two parts: a condition (IF) and a result (THEN SHOW). Use the "+ Add Rule" button to add multiple rules. Rules are evaluated from top to bottom. Once a rule is met, that rule is applied and evaluation of following rules stops.

**IF targeting type options:**

<table><thead><tr><th width="211.72265625">Option</th><th>Description</th></tr></thead><tbody><tr><td>Anything is in order</td><td>Rule applies to any order</td></tr><tr><td>Specific products</td><td>Order contains or does not contain a specific product</td></tr><tr><td>Products from collection</td><td>Order contains or does not contain a product from a collection</td></tr><tr><td>Product with tag</td><td>Order contains or does not contain a product with a specific tag</td></tr><tr><td>Cart subtotal</td><td>Order meets a subtotal condition</td></tr><tr><td>Cart item count</td><td>Order contains a set number of items</td></tr></tbody></table>

{% hint style="warning" %}
Adding multiple products, collections, or tags to one condition means any single match will trigger the rule. To require more than one condition to be true, use "+ AND condition". For example, below, we would return products that were in either the "Home page" OR "All" collection.

<img src="/files/QFauo7W7YzvpJ5S51wiE" alt="" data-size="original">

If we wanted to return products that were in both the "Home page" AND "All" collections, we would set it up as a "+ AND condition", as shown below:

<img src="/files/SwmZAL9VgwZCiv4987EG" alt="" data-size="original">
{% endhint %}

**THEN SHOW targeting type options:**

<table><thead><tr><th width="222.5078125">Option</th><th>Notes</th></tr></thead><tbody><tr><td>Shopify recommendations<br>(reccomended)</td><td>Uses <a href="https://help.shopify.com/en/manual/online-store/storefront-search/search-and-discovery-recommendations">Shopify's Recommendations API</a>, which automatically surfaces products based on purchase history, product descriptions, and collection relationships.</td></tr><tr><td>Specific products</td><td>Show a fixed set of products</td></tr><tr><td>Products from collection</td><td>Show products from a specific collection</td></tr><tr><td>Products with tag</td><td>Show products matching a tag</td></tr></tbody></table>

{% hint style="warning" %}
Adding multiple tags to one condition means any single match will trigger the rule. To require more than one condition to be true, use "+ AND condition". For example, below, we would return products that had either the "drinkware" OR "mug" tag.\
![](/files/b1vTQ2uaJF0XhHxeYGPT)

If we wanted to return products that had both the "drinkware" AND "mug" tag, we would want to set it up as an + AND condition, as shown below:

<img src="/files/9tDBiYXLYmBObLuK3rBU" alt="" data-size="original">
{% endhint %}

#### Content & Layout

**Callout banner**

**Banner title** The bold headline shown at the top of the upsell widget (e.g., "It's not too late to add this to your order"). Leave blank to hide the title row entirely.

**Banner body** Supporting text beneath the title. Supports dynamic variables like `{{Product title}}` and `{{Saved percentage}}` to personalize the message.

**Alignment** Controls the horizontal alignment of the banner text (Left, Center, Right).

**Background** The background color style for the banner section (e.g., Secondary uses your theme's secondary color).

**Border** Adds a border around the banner. Set to None to remove it.

**Spacing** Controls the padding inside the banner (e.g., Tight = less padding, Relaxed = more).

**Product**

* **Image**
  * **Fit** How the product image fills its container. "Cover" crops the image to fill the space without distortion.
  * **Aspect ratio** The shape of the product image frame (e.g., 1:1 Square or Original).
  * **Show border** Toggles a border around the product image.
* **Name**
  * **Heading level** Sets the HTML heading level for the product name. Auto lets Shopify decide based on page context (recommended for most cases).
* **Pricing** Displays the product price. If a discount is configured, both the original and sale price will show.
* **Description** Toggles whether the product's Shopify description appears below the product name. Off by default to keep the widget clean. If enabled, there is an option to subdue the text.
* **Quantity** Toggles a quantity input so customers can choose how many units to add. Off by default. If enabled, you can define a max limit and quantity label.

**Buttons**

* **Button text** The label on the primary CTA button. Defaults to "Accept offer," and can be customized to match your brand voice (e.g., "Yes, add it," "Add to my order").

{% hint style="info" %}
**Colors and typography** are pulled directly from your Shopify checkout brand settings (not custom pickers). You're choosing from preset options defined in your checkout theme. Shopify locks down checkout styling to maintain security and consistency, so customization is limited to basic theme settings like accent colors.
{% endhint %}

### Step 3: Preview your upsell

As you make changes, the preview in the **Preview** tab updates in real time to show how your upsell will appear after checkout:

* Review the overall layout and spacing
* Check that colors match your brand
* Confirm the products returned are what you expect
* Verify text is readable and properly sized

{% hint style="info" %}
The preview shows your upsell in the Intelligems interface. The final appearance on your Shopify checkout may have slight variations based on your checkout theme settings.
{% endhint %}

### Step 4: Save and choose your setup type

Click **Save** when you're satisfied with your design. Choose one:

* **Launch as personalization** Show this block as a Personalization to all visitors or a targeted audience.
* **Launch as test** Run multiple variations against each other.

### Step 5: Enable Intelligems in Shopify

This step is required. The upsell won't appear after checkout until it's enabled in Shopify.

1. In Shopify Admin, go to **Settings** → **Checkout**
2. Scroll to the **Post-Purchase page** section
3. In the **Post-Purchase** dropdown, select **Intelligems**
4. Click **Save**

Once you complete this step, you can preview your post-purchase personalization or test on your live website by going to the Preview tab → selecting Open Full Screen Preview.

### Step 6: Place a Test Order to Preview

In order to preview the experience, you need to place a test order. How you do this depends on your store type.

**If you're on a Shopify test/development store:** You can use Shopify's Bogus Gateway or Shopify Payments' Test Mode to simulate orders without real transactions. Learn how to set those up [here](https://help.shopify.com/en/manual/checkout-settings/test-orders/payments-test-mode#activate-bogus-gateway).

**If you're on a live production store:** Use your existing internal test order practices. This typically involves placing and then immediately cancelling and refunding the order.

{% hint style="info" %}
Because this feature appears after checkout is complete, the above methods are the only way to preview it.
{% endhint %}

Whichever method you use, the goal is the same: complete the checkout flow so the post-purchase page triggers.


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.intelligems.io/post-purchase-upsells/how-to-set-up-a-post-purchase-upsell-personalization-or-test.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
