aov-bundle-upsell
🤖 MCP
Recipes
Which offers are earning?

Which offers are earning?

"Bundles made money" is not actionable. "Two offers made all of it and the other nine made nothing" tells you what to do next.

Ask: "Which of my bundle offers earned the most in the last 90 days?"

Step 1 — Get the totals, with a range you chose

Call get_analytics with an explicit start and end. The default is the last 30 days, which is rarely the window you had in mind.

FieldRead it as
additional_revenueExtra revenue attributed to bundles, in USD
bundle_ordersOrders that included a bundle
total_ordersAll orders in the range
attach_rateThe share of orders containing a bundle — 0.0842 is 8.42%
top_offersThe five highest-earning offers
⚠️

These figures are USD, whatever your store sells in. Orders are converted when they are recorded. Before comparing against your Shopify reports, check the currency field — an assistant that renders these under your own currency symbol has mislabelled them.

If the answer is "zero revenue", ask whether that was a real zero. When the analytics warehouse cannot be reached the tool returns analytics_unavailable rather than zeros, precisely so that an outage is never reported as a bad month.

Step 2 — Read the attach rate before the revenue

attach_rate is the honest health number. Revenue rises with traffic; attach rate does not.

  • High revenue, low attach rate — a few large orders carried the month. Fragile.
  • Low revenue, healthy attach rate — bundles are working, order values are just small. Raising the discount will not help; the offer composition might.
  • Attach rate near zero with active offers — shoppers are not seeing the widget. That is why are my bundles not showing, not an analytics question.

Step 3 — Name the offers behind the numbers

top_offers gives ids and revenue. Turn the ids into something readable with get_offer_details, and you have a ranked list with names, types and discounts attached.

Worth asking at this point: which type earns. Call get_offers with each type and compare against the top five. A store where every earning offer is volume-discount and no fbt appears has a finding — either FBT is misconfigured, or it is not placed where shoppers look.

Step 4 — Look at what is earning nothing

The offers that never appear in top_offers are the point of the exercise.

Call get_offers with status: "active" and a limit above your offer count. Anything active and absent from the top five for 90 days is either invisible or unattractive — and step 1 of the not showing recipe tells you which.

Narrowing to one offer

get_analytics takes an offer_id. Passing it scopes the whole result to that offer, which is the clean way to answer "did the change I made last month help" — same range before and after, one offer.

What you finish holding

A ranked list of offers by revenue over a range you chose, an attach rate to judge it against, and a list of active offers earning nothing. Two of those three come from one call.

Product
Install AppWebsiteAvada Apps
Resources
DocumentationFAQPrivacy Policy
Company
Avada GroupContact
© 2026 Avada Group. All rights reserved.