aov-post-purchase-upsell
🤖 MCP
Recipes
What am I actually upselling?

What am I actually upselling?

The setup of one offer, read back to you. This is where two different things get confused most often: the products that trigger an offer, and the products the offer sells.

What does my "Spring Sale" offer actually show, and at what discount?

1. Find it

search_offers with the name, then take the id from the row.

search_offers  query: "Spring Sale"

2. Who sees it, and when

get_offer_detail with that id. Returns status, schedule, the trigger conditions, and the offer-level discount if it has one.

⚠️

Trigger products are not the upsell. The products, collections and tags named in a trigger condition are what a shopper has to be buying for the offer to appear. They are not what the offer puts in front of them. Reading a trigger back as "you're upselling these" is the single most common way this gets answered wrong.

A condition can point at more values than are worth listing; the reply names the first several and counts the rest. A trigger resource that no longer exists in Shopify is marked as deleted.

3. What it sells

get_offer_stages with the same id. This is the tool that answers the question.

get_offer_stages  id: gid://application/campaign/1234

Per stage, it returns the products, the bundle-deal tiers, and any A/B-test variants.

What you getWhat to watch
Products per stageEach product carries its own discount — a stage does not have one discount covering all of them. Some products have none, and "none" is part of the answer
Bundle dealTiered — quantity to discount
A/B testA stage's A/B test replaces that stage's products and bundle deal. If a stage is running one, the variants are what shoppers see
⚠️

No prices, anywhere. A discount is not a price. Nothing here returns what a product costs or what a shopper pays, so any figure quoted as a price would be invented.

Stages, for post-purchase offers

Post-purchase offers branch. Each stage names the stage it follows and whether it comes after that one was accepted or declined — so the stages form a tree, not a sequence.

An answer that reads them back as "stage 1, then stage 2, then stage 3" has flattened a branch into a chain and is wrong about what a shopper sees. The other three placements have a single stage, and the question does not arise.

Putting it together

search_offers          → the id
  ↳ get_offer_detail   → status, schedule, triggers   (who sees it)
  ↳ get_offer_stages   → products, discounts, bundles, A/B  (what they see)

Two tools, deliberately. get_offer_detail returns nothing about what is being sold, and get_offer_stages returns nothing about who qualifies. A complete answer needs both.

Related

  • Tool guide — the four placements, and which tool suits which question
  • Tools reference — every field these two tools return
Product
Install AppWebsiteAvada Apps
Resources
DocumentationFAQPrivacy Policy
Company
Avada GroupContact
© 2026 Avada Group. All rights reserved.