# Post-purchase upsell

Source: https://gokarla.io/docs/guides/shops/post-purchase-upsell

# Post-purchase upsell

Show a one-click product offer **after payment and before the Thank you
page**. The buyer can accept with the card already on file — no second
checkout. Offers are driven by your active product promotion in the Karla
portal, with optional overrides in the Shopify app.

**Recommended for:** Marketing, E-commerce managers

## What you get

- A one-click upsell on Shopify's post-purchase page
- Audience targeting (everyone, first-time, or returning customers)
- Product and deal overrides without leaving the Karla app
- Optional second offer after the first accept/decline
- Defaults inherited from your active [product promotion](/docs/guides/portal/campaigns#product-promotions) in the portal

## Prerequisites

1. Install the [Karla Shopify app](https://apps.shopify.com/karla-1) and complete
   onboarding.
2. Publish an **active manual product promotion** in the
   [Karla portal](https://portal.gokarla.io) with at least one Shopify product
   that resolves to a purchasable variant (variant ID, cart permalink, or
   storefront handle). **Dynamic / AI product promotions are not used** on this
   surface. By default, the upsell offers the first resolvable product from the
   preferred (usually default-segment) active promotion.
3. Use a payment method that supports post-purchase offers (card / Shopify
   Payments). Some methods (e.g. cash on delivery, certain wallets) skip the
   post-purchase page entirely.

## Setup overview

| Step | Where                        | What you do                                      |
| ---- | ---------------------------- | ------------------------------------------------ |
| 1    | Karla app → **Settings**     | Configure audience, product, deal, and options   |
| 2    | Shopify admin → **Checkout** | Set the post-purchase page to **Karla** and save |

Configuration lives in the Karla app. Activation is a one-time choice in
Shopify checkout settings. After that, merchants can change offers themselves —
no Karla implementation work required.

## Step 1: Configure the offer in the Karla app

1. Open **Shopify admin → Apps → Karla**.
2. Go to **Settings**.
3. Scroll to **Post-purchase upsell**.

### Audience

Choose who sees the offer:

| Audience                 | Behavior                                  |
| ------------------------ | ----------------------------------------- |
| **Everyone**             | Show the offer to all customers (default) |
| **First-time customers** | Only on a customer's first order          |
| **Returning customers**  | Only for customers with a previous order  |

:::tip
If you do not want to interrupt first-time conversion, select **Returning
customers**. When a customer cannot be identified, Karla still shows the offer
(fail-open) so legitimate buyers are not blocked.
:::

### Offer product

By default, Karla offers the **first resolvable product of your active manual
product promotion**. You do not need to pick anything unless you want a
specific product forward — for example a new release, an underperforming SKU,
or a hero add-on.

To override:

1. Click **Select product** (opens Shopify’s **variant** picker — multi-SKU
   products matter).
2. Choose the product variant to feature.
3. Use **Reset to promotion product** anytime to go back to the promotion
   default.

If the selected variant is part of your promotion, its promotion discount can
still apply unless you set a dedicated deal below. If it is **not** in the
promotion, there is no promotion discount on this surface unless you set a
deal.

### Deal

Configure discount and quantity for this surface, independently of the
promotion:

| Setting            | Options                                                           |
| ------------------ | ----------------------------------------------------------------- |
| **Discount**       | Promotion discount (default), **Percentage**, or **Fixed amount** |
| **Discount value** | Percent (1–100) or fixed amount in your shop currency             |
| **Quantity**       | Units added in one click (1–10; default 1)                        |

A discount set here **replaces** the promotion discount on the post-purchase
page. Click **Save deal** after changing values — unlike audience / skip /
second-offer toggles, the deal does not apply until you save it.

### Skip if already in the order

Toggle **Skip if already in the order** when you want a true cross-sell.
Karla filters out any funnel step whose offered variant is already in the
just-placed order **before the page renders**:

- Hero already in the order + second offer enabled → buyers may land directly
  on the second step
- Every remaining step filtered out → the post-purchase page is skipped

Leave the toggle off if you are happy selling **additional units** of something
already in the cart at a discount — that pattern often converts well.

### Second offer (optional)

Enable **Second offer** to show another one-click step after the buyer accepts
or declines the first offer.

You can configure:

- **Number of products** on the second step (1–3). With two or more, buyers see
  a small product grid instead of a single offer.
- **Second offer product** — defaults to the next resolvable product(s) in your
  active promotion. A merchant override fills the **first** second-step slot;
  remaining grid slots auto-fill from the promotion.
- **Second offer deal** — optional deeper discount / quantity for this step.
  One deal applies to the **entire** second step (all grid tiles), not
  per product.

## Step 2: Activate on the Shopify post-purchase page

Configuration alone does not show the page. You must assign Karla as the
post-purchase app:

1. In Shopify admin, go to **Settings → Checkout**.
2. Scroll to the **Post-purchase page** section.
3. Select **Karla** / **Karla Post-Purchase Upsell** (the label Shopify shows
   once the Karla app is installed).
4. Click **Save**.

:::warning Unsaved changes
Shopify shows an unsaved-changes banner after you select the app. The
extension does not go live until you press **Save**.
:::

If another app or custom code already owns the post-purchase page, switching to
Karla replaces it for that slot. Only one post-purchase app can be active at a
time.

## What buyers see

On the post-purchase page, buyers typically get:

- A short personalized greeting when their first name is known
- The offer product (image, price, discount badges when applicable)
- Star ratings / review count when your catalog has standard
  `reviews.rating` / `reviews.rating_count` metafields (e.g. Judge.me, Loox)
- A ~10-minute urgency countdown; when it expires the page continues without
  the offer
- **Buy now** (charges the vaulted payment method) or **Decline offer**

With a second offer enabled, declining or accepting the hero advances to the
next step (single product or grid).

## How offers are chosen

```mermaid
flowchart TD
  A[Buyer completes payment] --> B{Post-purchase page = Karla?}
  B -->|No| Z[Thank you page]
  B -->|Yes| C{Audience allows buyer?}
  C -->|No| Z
  C -->|Yes| D{Active product promotion with Shopify variant?}
  D -->|No| Z
  D -->|Yes| E[Show hero offer]
  E --> F{Second offer enabled?}
  F -->|Yes| G[Show second step]
  F -->|No| Z
  G --> Z
```

- No active / resolvable **manual** product promotion → the post-purchase page
  is skipped (dynamic product promotions never feed this surface).
- Merchant product override (if set) wins over the promotion's first product.
- Deal override (if set) wins over the promotion discount on this surface.
- Skip-if-in-order can remove the hero, the second step, or both before render.

## Test before going live

1. Place a **test order** paid with a card (or Shopify Payments test mode).
2. Confirm the post-purchase page appears with your product, price, and
   discount.
3. Accept the offer and verify the order is updated with the extra line item.
4. Decline (or accept) and confirm the second offer appears when enabled.
5. Repeat with a first-time vs returning customer if you use audience targeting.

## Changing the offer later

Merchants can self-serve without Karla involvement:

| Change                      | Where                                      |
| --------------------------- | ------------------------------------------ |
| Swap the featured product   | Karla app → Settings → Offer product       |
| Change discount or quantity | Karla app → Settings → Deal → Save deal    |
| Change who sees it          | Karla app → Settings → Audience            |
| Update the default catalog  | Portal → edit the active product promotion |
| Turn the surface off        | Shopify → Checkout → Post-purchase → None  |

## Troubleshooting

**Post-purchase page never appears**

- Confirm **Post-purchase page** is set to Karla and saved under
  **Settings → Checkout**.
- Pay with a supported method (card / Shopify Payments). COD and some wallets
  skip the page.
- Ensure an **active manual product promotion** exists with at least one
  resolvable Shopify product/variant (dynamic-only shops will never see an
  offer).
- Audience settings may exclude the test customer (try **Everyone** while
  testing).
- Orders under Shopify's minimum for post-purchase offers may skip the page.

**Wrong product or discount**

- Check for an offer-product or deal override in Karla **Settings**.
- Confirm which product promotion is live in the portal.

**Offer shows a product already in the cart**

- Enable **Skip if already in the order**, or pick a complementary product as
  the override.

## Related

- [Shopify integration](/docs/guides/shops/shopify) — install the app and
  tracking setup
- [Product promotions](/docs/guides/portal/campaigns#product-promotions) —
  source of default upsell products
- [Thank you survey](/docs/guides/shops/thank-you-survey) — collect feedback on
  the Thank you page after the upsell
