Troubleshooting

Why a Post-Purchase offer didn't appear

A Post-Purchase-specific checklist for when the after-checkout offer page is skipped, plus accept-time errors and how to test correctly.

Post-Purchase offers behave nothing like storefront widgets, so the usual Campaign not showing checklist does not apply here. The Post-Purchase page lives on Shopify's native post-checkout surface, after payment but before the thank-you page. It needs no app embed and no theme block, and the reasons it gets skipped are entirely its own. Work through the checklist below in order.

Do not start with the storefront checklist. Post-Purchase has its own reasons for not appearing — payment method, a missing matching active campaign, filtered-out offer products, priority, plan limits, and health warnings. The app-embed and theme-block steps from Campaign not showing are irrelevant to Post-Purchase and will send you down the wrong path.

Quick checklist

Each item has its own section below. Run them top to bottom.

  • You placed a real, completed order — not a cart, draft, or unpaid order.
  • The order used a payment method that supports one-click post-purchase (a real card).
  • A matching active Post-Purchase campaign exists and the order satisfies its conditions.
  • The offer still has at least one available product after filtering.
  • Another campaign didn't win the single slot on priority.
  • The campaign isn't sitting inactive because of a plan limit.
  • The campaign has no health warnings.

1. The page only shows on a real, completed order

The Post-Purchase page renders after the customer pays but before the thank-you (order confirmation) page loads. It is the one moment Shopify hands the app to present an offer. That means it never appears:

  • on the cart page,
  • inside checkout,
  • on a draft order, or
  • on any unpaid order.

There is no way to "preview" the offer from the cart or checkout. To see it, you must place an actual order and complete payment.

You cannot trigger the Post-Purchase page from the cart or the checkout step. If you are watching the cart or checkout waiting for the offer to appear, it never will — the offer is shown by Shopify only once payment is complete. Place a real order to test.

2. The payment method must support one-click post-purchase

The whole point of Post-Purchase is one-click acceptance: the customer adds the offer to the order they just placed without re-entering payment details. Shopify only shows the page for orders paid with a method that supports this. The page is skipped when the order uses:

  • Manual or offline payment methods — for example cash on delivery (COD) or bank deposit / bank transfer.
  • Gift-card-only payment — an order paid entirely with a gift card.
  • Unpaid orders — anything where payment is not actually captured.

If the offer page is skipped for some orders but not others, payment method is the most likely cause. Always test with a real card so the one-click flow is supported. This restriction is enforced by Shopify, not by the app — it is the same reason an accepted offer can later fail with a "payment method is not supported" error (see It showed, but acceptance failed).

3. A matching active Post-Purchase campaign must exist

For the page to render, the app must find a Post-Purchase campaign that is both Active and whose conditions are satisfied by the order that was just placed. If no campaign matches, the page is skipped and the customer goes straight to the thank-you page.

Open the campaign in the app and confirm two things:

Confirm the campaign is Active

Only Active campaigns are evaluated. An Inactive or Draft campaign is never shown. Check the status in the campaign list.

Confirm the order satisfies the conditions

The conditions are evaluated against the order that was just placed, including its line items. Walk through each rule and confirm the test order matches it.

Conditions on a Post-Purchase campaign are evaluated against the order's contents. Common rules and why an order might fail to match:

ConditionMatches when…Why it can fail
Products in the orderA required product, variant, vendor, type, or collection is in the orderThe order doesn't contain a matching item
SubtotalThe order subtotal reaches the thresholdThe order total is below the threshold
Customer tagsA logged-in customer has (or lacks) the specified tagsThe customer is a guest, or doesn't carry the tag
Applied discount codesA specific discount code was applied at checkoutNo code, or a different code, was used

Customer-tag conditions only apply to logged-in customers. If you test as a guest, any rule that depends on customer tags can't match. Sign in as a customer who carries the right tag before placing the test order.

4. The offer must have available products

A matching campaign isn't enough — the offer it presents must contain at least one product that can actually be sold right now. When the app builds the offer for the page, it filters out variants that are:

  • sold out (no available inventory),
  • unpublished, or
  • otherwise not available for sale.

It also excludes any variant that is already in the order the customer just placed — there's no point re-offering something they just bought.

If every offer variant is filtered out by these rules, the offer ends up with no products, and the page is skipped.

An offer that points at a single product can vanish the moment that product sells out, is unpublished, or is the same item the customer just ordered. Add a few backup products to the offer, or use a collection, so the offer still has something to show after filtering.

5. Priority — another campaign may have won the single slot

The Post-Purchase page has one slot. If several Post-Purchase campaigns could match the same order, the app evaluates them in the priority order you set and shows the first matching campaign only. Every other matching campaign is skipped for that order — they are not queued or shown later.

So a campaign can be perfectly configured, active, and matching, and still never appear because a higher-priority campaign matched first.

To fix this, reorder your campaigns so the one you want takes precedence, or tighten the conditions on the higher-priority campaigns so they don't both match the same orders. See Post-Purchase priority, downsell & timer for how ranking works.

Priority also explains a "wrong offer showed" report. If customers see Campaign B when you expected Campaign A, Campaign B is higher in the priority order and matched first. Move A above B, or make their conditions mutually exclusive.

6. Plan limits

Active campaigns count against your plan's limit. If you try to activate a campaign after you've hit that limit, the app saves it as inactive and shows a notification — and an inactive campaign is never evaluated for the Post-Purchase page (see step 3). Likewise, downgrading your plan automatically deactivates the newest campaigns that exceed the new limit.

If the campaign you expected is sitting inactive, free up a slot by deactivating a campaign you no longer need, or upgrade your plan, then re-activate it.

7. Health warnings

The campaign list shows a warning icon next to any active Post-Purchase campaign that may not run correctly. Open the flagged campaign and resolve the issue. Post-Purchase health warnings appear when:

Health flagWhat it meansFix
Offer products unpublished or sold outThe offer's products can't be sold, so they get filtered outRepublish or restock, or swap in available products
Referenced collection deletedThe offer draws from a collection that no longer existsPoint the offer at an existing collection
Promo-code trigger points to a disabled discountA condition requires a discount code that is no longer activeRe-enable the discount, or change the condition
No markets selectedAn empty market list shows the offer to no oneSelect the markets you want, or clear the market restriction so it shows everywhere
Schedule window not started or already endedThe current date is outside the campaign's date rangeAdjust the start/end date and time

A campaign with no markets configured shows to all markets, but a campaign with an empty market list shows to no one. These look similar in the UI but behave oppositely. If you meant to target everyone, leave markets unconfigured rather than selecting and then clearing them.

8. It showed, but acceptance failed

A different situation: the offer page did appear, but when the customer clicked accept, it failed with an error and the product wasn't added. When the offer is accepted, the app asks Shopify to add the product to the existing order. If Shopify can't apply that change, it returns one of these errors:

Error shownCause
Insufficient inventoryThe offer variant sold out between rendering the page and the customer accepting it
Payment method is not supportedThe order's payment method doesn't support one-click post-purchase (see step 2)
Payment is not completePayment for the original order wasn't captured, so no charge can be added
Purchase has already been appliedThe offer was already accepted and added to this order
Invalid purchaseThe request to modify the order was rejected as invalid
Something went wrongAn unexpected error; retry or contact support

"Insufficient inventory" at accept time is a race: the product was available when the page loaded but ran out before the customer accepted. Keeping a small inventory buffer on offer products, or offering products with healthy stock, reduces these failures.

9. How to test properly

Because the page only exists on a real, completed order, casual testing from the cart never works. Test like this:

Open an incognito or private window

This avoids cached pages and signed-in admin state, so you see what a real shopper sees.

Confirm the campaign should match

Build an order that satisfies the campaign's conditions — the right products, subtotal, customer tags (sign in if tags are required), and any required discount code.

Place a real order with a real card

Complete checkout with a card so the one-click post-purchase flow is supported. Don't use COD, bank deposit, or a gift-card-only payment.

Watch for the page after payment

The offer appears after payment completes and before the thank-you page. If it doesn't, return to step 1 of this checklist and work down.

Screenshot: The Post-Purchase offer page shown after payment completes and before the Shopify thank-you pageAdd a real image by setting the `src` prop.
The offer renders on Shopify's post-checkout surface only after a real order is paid.

Troubleshooting at a glance

If you've worked through every step above and the offer still doesn't appear, contact support with your store URL, the order number you used to test, the payment method on that order, and a screenshot of the campaign's conditions and status.

On this page