Know what every order earned.
Install Offer Suite on Shopify and it reads your recent orders: realized profit per store and per item, after every cost, each order costed as of the day it sold. Then your agents write custom offers through the API or MCP, a real cart proves each price before it goes live, and experiments are decided on realized profit.
OF_DEV_KITS
choose-your-kit-v1Realized margin
$10,159.34USD
+$3,019.34 (+42.3%) vs forecast
418 attributed orders
| Day | Realized | Forecast | Restated from here |
|---|---|---|---|
| Aug 18, 2026 | $133.28 | $238.00 | |
| Aug 19, 2026 | $496.84 | $476.00 | |
| Aug 20, 2026 | $911.05 | $714.00 | |
| Aug 21, 2026 | $1,142.95 | $952.00 | |
| Aug 22, 2026 | $1,439.22 | $1,190.00 | |
| Aug 23, 2026 | $1,965.26 | $1,428.00 | |
| Aug 24, 2026 | $2,417.48 | $1,666.00 | |
| Aug 25, 2026 | $2,686.40 | $1,904.00 | |
| Aug 26, 2026 | $3,077.30 | $2,142.00 | |
| Aug 27, 2026 | $3,594.58 | $2,380.00 | |
| Aug 28, 2026 | $3,909.90 | $2,618.00 | |
| Aug 29, 2026 | $4,089.75 | $2,856.00 | |
| Aug 30, 2026 | $4,441.94 | $3,094.00 | |
| Aug 31, 2026 | $4,828.35 | $3,332.00 | |
| Sep 1, 2026 | $4,994.05 | $3,570.00 | |
| Sep 2, 2026 | $5,167.08 | $3,808.00 | |
| Sep 3, 2026 | $5,570.58 | $4,046.00 | |
| Sep 4, 2026 | $5,944.38 | $4,284.00 | |
| Sep 5, 2026 | $6,151.88 | $4,522.00 | |
| Sep 6, 2026 | $6,498.88 | $4,760.00 | |
| Sep 7, 2026 | $7,042.78 | $4,998.00 | |
| Sep 8, 2026 | $7,451.86 | $5,236.00 | |
| Sep 9, 2026 | $7,734.15 | $5,474.00 | |
| Sep 10, 2026 | $8,193.68 | $5,712.00 | |
| Sep 11, 2026 | $8,717.12 | $5,950.00 | |
| Sep 12, 2026 | $9,005.83 | $6,188.00 | |
| Sep 13, 2026 | $9,233.37 | $6,426.00 | unit_cost · ritual-set raised (recorded Sep 14, −$22.50) |
| Sep 14, 2026 | $9,646.77 | $6,664.00 | |
| Sep 15, 2026 | $10,012.94 | $6,902.00 | |
| Sep 16, 2026 | $10,159.34 | $7,140.00 |
Your agent drafted v4
Ritual Set drops the frother gift, same price. Forecast first-order margin $18.94 → $25.14; cart check matched, ready as an experiment arm.
Offer details
- Orders
- 1,284
- Renewals
- 412
- Net revenue
- $71,420.00
- Average order
- $55.62
- Refund rate
- 3.1%forecast 5.0%
- Processing
- 3.4%forecast 2.9% + $0.30
- Live version
- v3since Sep 12
- Draft
- v4by agent
- Cart check
- 3 of 3 match
- Last verified
- Sep 16, 9:42 AM
- Profile
- dtc-us
- Store
- offer-suite-demo
Economics
Where one first order's revenue goes, with the costs effective now.
| Revenue | $48.00 | |
unit_cost | per unit | −$21.50 |
3pl_base | per order | −$1.18 |
3pl_extra_pick | per unit | −$0.20 |
3pl_label | per order | −$0.10 |
3pl_insert | per order | −$0.05 |
payment_processing | percent | −$1.39 |
payment_processing_fixed | per order | −$0.30 |
packaging | per unit | −$0.50 |
refunds | percent | −$2.40 |
| 5 declared kinds cost nothing on this option | $0.00 | |
| Gross margin | 42.5% | $20.38 |
Forecast versus actual
Starter Kit margin per first order, by offer version.
| Period | Forecast | Realized | vs forecast |
|---|---|---|---|
| v1 | $16.11 | $14.80 | −8.1% |
| v2 | $19.18 | $22.10 | +15.2% |
| v3 | $20.38 | $22.91 | +12.4% |
| v4 | $20.38 | Draft | – |
Realized nets refunds but carries no refund estimate, so it is compared with the forecast before rates.
Activity
All activity →- Cart check verified3 of 3 options match the offer documentToday, 9:42 AM
- Agent drafted v4Ritual Set drops the frother gift · first order $18.94 → $25.14Today, 8:12 AM
- Refund on #1043Ritual Set · first order−$58.60Yesterday
- Cost updatedunit_cost · ritual-set $20.00 → $22.50Sep 13
- v3 published to ShopifyVerified on 3 real cartsSep 12
Ritual Set · first order
OF_DEV_KITS · costs effective now · keeps 32.3%
5 declared kinds cost nothing on this option
| Step | Grain | Amount |
|---|---|---|
| Revenue | – | $58.60 |
| Cost of goods | per unit | −$32.50 |
| 3PL base | per order | −$1.18 |
| Extra pick | per unit | −$0.40 |
| Shipping label | per order | −$0.10 |
| Insert card | per order | −$0.05 |
| Payment processing | percent | −$1.70 |
| Processing per order | per order | −$0.30 |
| Packaging | per unit | −$0.50 |
| Refunds | percent | −$2.93 |
| Contribution margin | – | $18.94 |
| 5 kinds costing nothing | – | $0.00 |
Profit from the orders you already have.
Install the app and Offer Suite imports your store's last 60 days of orders, or a year once the store grants access to all of them, and costs each one as of the day it sold: realized profit per store and per item, net of refunds, after every cost you enter. Orders placed before your first offer count toward the store and its items; profit per offer option starts with the first order an offer sells.
The same offer holds your best and worst deal. In OF_DEV_KITS, the Ritual Set subscription keeps 32.3% of its first order and 62.0% of every renewal. Once an offer sells, each option's realized profit sits beside its forecast, net of refunds, first orders and renewals apart. Group it by ad platform, campaign or ad, and set the ad spend your agent posts beside it for realized CAC.
Margin waterfall
One first order, costs effective now
5 declared kinds cost nothing on this option
| Step | Grain | Amount |
|---|---|---|
| Revenue | – | $58.60 |
| Cost of goods | per unit | −$32.50 |
| 3PL base | per order | −$1.18 |
| Extra pick | per unit | −$0.40 |
| Shipping label | per order | −$0.10 |
| Insert card | per order | −$0.05 |
| Payment processing | percent | −$1.70 |
| Processing per order | per order | −$0.30 |
| Packaging | per unit | −$0.50 |
| Refunds | percent | −$2.93 |
| Contribution margin | – | $18.94 |
| 5 kinds costing nothing | – | $0.00 |
What-if against live
The simulator, run through the API and MCP · specimen data
Profit per visitor · Live v3
$1.30
What-if: Starter Kit at $44.00
$1.18
−$0.12 per visitor
Needs 10.1% more conversion to break even. Conversion from 18,420 visitors over 30 days, assumed unchanged.
| Option | Live v3 | What-if | Per order | Conversion | Change |
|---|---|---|---|---|---|
| Single Bag | $15.84 | $15.84 | $0.00 | 2.2% | – |
| Starter Kit | $20.38 | $16.70 | −$3.68 | 3.2% | $48.00 → $44.00 |
| Ritual Set | $18.94 | $18.94 | $0.00 | 1.5% | – |
OF_DEV_KITS · first orders, the engine's forecast on the dev store's costs · refunds 5.0%, payment processing 2.9% + $0.30 per order · the forecast carries no carrier postage (Offer Suite has no carrier rate table yet; actual postage counts once posted per order), so these margins run higher than the calculators', which charge a shipping label · matches the dev API's economics, captured 2 October 2026
| Option | Price | Cost of goods | Fulfilment | Refunds + fees | Margin | First-order margin | Renewal margin |
|---|---|---|---|---|---|---|---|
| Single BagSubscribe | $32.00 | $12.00 | $1.33 | $2.83 | $15.84 | 49.5% | 58.1% |
| Starter KitSubscribe | $48.00 | $21.50 | $2.03 | $4.09 | $20.38 | 42.5% | 60.3% |
| Ritual SetSubscribe | $58.60 | $32.50 | $2.23 | $4.93 | $18.94 | 32.3% | 62.0% |
$21.47
On the first real order, the realized margin ($21.47) matched the forecast to the cent before the estimated refund and processing rates; the full forecast, rates included, was $17.87.
Costs are a ledger.
COGS with history, and every cost Shopify has no field for. Rows are appended, never edited: correct a cost today and every order it touches is repriced, while what you believed at the time stays on file. Realized profit comes in both views, current costs and as recorded.
- Cost of goods
- 3PL base
- Shipping label
- Insert card
- Payment processing
- Processing per order
- Refunds
- Extra pick
- Packaging
Cost ledger
Amounts by kind and product over valid time; corrections and backdated rows marked
| Kind · target | Amount | From | To | Recorded | Note |
|---|---|---|---|---|---|
| Cost of goods · Single Bag | $12.00 | May 20 | today | Jul 10 | Backdated 51 days |
| Cost of goods · Starter Kit | $17.50 | May 20 | today | Jun 2 | Corrects $17.00 (May 20) |
| Cost of goods · Ritual Set | $20.00 | May 20 | Sep 13 | May 20 | – |
| Cost of goods · Ritual Set | $22.50 | Sep 13 | today | Sep 14 | Backdated 1 days |
| Packaging · Starter Kit | $0.60 | Jun 1 | – | Jun 1 | Voided Jun 3: Entered on the wrong SKU |
| Packaging · Starter Kit | $0.50 | Jun 1 | today | Jun 3 | Backdated 2 days |
| Gift fulfilment · all SKUs | $0.90 | May 20 | Jul 1 | May 18 | – |
| 3PL base · all SKUs | $1.18 | the epoch | today | May 18 | – |
Your agents write the offer.
Custom offers, written by your agents through the API or MCP: tiers, subscribe and save, build-your-own picks, add-ons and free gifts are all one validated document. There is no offer type to choose, and a wrong document comes back with the path of every problem.
OF_DEV_KITS · one optionexcerpt
{
"key": "single-bag",
"display": {
"title": "Single Bag"
},
"lines": [
{
"role": "main",
"quantity": 1,
"purchase": {
"type": "subscription",
"intervalDays": 30
}
}
],
"pricing": {
"promise": {
"firstChargeCents": 3200,
"renewalChargeCents": 4000
}
}
}A create or replace never touches Shopify. Every replace stores draft n+1, and the live version keeps serving until a publish.
Before publishing, the simulator can price the draft against the live version, per order and per visitor, with the conversion lift it needs to break even. It is optional, and nothing it runs is stored.
A real cart signs off every price.
What the page shows is what checkout charges. Every visible option is checked on a real cart before it goes live, and a version that fails a check stays a draft while the live one keeps selling.
OF_DEV_KITS · v4 · Ritual Set · example verification (specimen data)
| Result | Check | Covers |
|---|---|---|
| passed | First chargecheckout charges $58.60, as promised | option |
| passed | Giftsthe gifts are free | option |
| passed | Renewalthe subscription renews at $80.00 | renewal |
| passed | Free shippinga US order ships free | shipping |
| Status: matched · v4 verified as an experiment arm | ||
Offers
| Offer | Status | Version | Cart check | Orders | Net revenue | Margin | vs forecast | 30 days |
|---|---|---|---|---|---|---|---|---|
| OF_DEV_KITSchoose-your-kit-v1 | Live | v3 · draft v4 | Match3/3 | 1,284 | $71,420.00 | $31,206.40 | +$2,628.409.2% | |
| OF_DEV_RITUALritual-set-sub-v1 | Live | v1 | Match1/1 | 612 | $35,863.20 | $11,738.16 | −$617.805.0% | |
| OF_MUG_GWPgift-with-purchase-v2 | Draft | v2 | Not cart-verifiable2/3 | – | – | – | – | – |
| OF_FROTHER_BUNDLEbundle-and-save-v1 | Live | v2 | Mismatch1/2 | 208 | $14,559.00 | $4,021.30 | −$884.1018.0% | |
| OF_BFCM_TRIPLEtiered-quantity-v1 | Draft | v1 | Unverified0/3 | – | – | – | – | – |
| OF_SUMMER_STARTERchoose-your-kit-v0 | Retired | v5 | Match3/3 | 3,940 | $201,104.00 | $84,249.50 | – | – |
| Offer | Cart check |
|---|---|
| OF_DEV_KITSLive · v3 · draft v4 | matched3 of 3 |
| OF_DEV_RITUALLive · v1 | matched1 of 1 |
| OF_MUG_GWPDraft · v2 | unverifiable2 of 3 |
| OF_FROTHER_BUNDLELive · v2 | mismatched1 of 2 |
| OF_BFCM_TRIPLEDraft · v1 | not checked yet0 of 3 |
| OF_SUMMER_STARTERRetired · v5 | matched3 of 3 |
Live offers are re-checked on real carts on a daily rotation. Your team gets one email when pricing breaks and one when it is fixed.
878 carts
Offer Suite's prices matched what Shopify charged on 878 real dev-store carts.
Show it three ways.
Offer Suite supplies the data, the cart and a theme block that draws the buy box; it never builds your page. Whoever renders the buy box gets the same served version, the prices the API computed, and each option's cart check, and the theme block will not sell an option a real cart has not matched. A browser SDK is not available yet: your developers call the HTTP API.
| Way | Who does it | How |
|---|---|---|
| The Verified offer theme blockIn production | The merchant, in Shopify's theme editor. No code. | App Home's setup guide opens the theme editor with the block placed on a product template. Paste the offer's id into the block's text setting and, if you like, pick an accent colour. The store's public key is written for you. |
| Your developersIn production | Your front-end team, in your own markup or a headless storefront. | GET /offers/{id}/resolve to draw the offer, POST /offers/{id}/price for any other selection, then POST /offers/{id}/cart for a checkout URL, or GET /offers/{id}/cart-input to send the cart to Shopify yourself. |
| Your agentIn production | Your agent, over MCP, with your workspace's key. | resolve_offer, price_offer_selection and create_offer_cart: the same three steps as the API, one tool each. |
$58.60
A full paid order went through the Verified offer theme block on a Plus dev store (order #1033, $58.60). On a Basic-plan dev store the block's cart reached a checkout charging the $800.00 it showed; no order was placed there.
After the buyer pays, one more offer can follow on Shopify's post-purchase page, added to the order in one click. Offer Suite charges exactly the option's price and books what it sold to its own offer, judged on contribution per view. It runs once the merchant picks Offer Suite for the store's post-purchase page.
More buyers is not more profit.
Put the new version against the live one on the same traffic. Each visitor is assigned an arm from their own id. Pass that id to resolve and the cart, and the page, the cart and the order all carry the version they were shown. The metric is realized profit per visitor, never conversion.
A price test is one kind of experiment: the challenger charges a lower price on one-time lines, shown at checkout as the product's own price.
OF_DEV_KITS · v3 against v4 · profit per visitor, realized, current costs · specimen data
| Arm | Profit per visitor | Conversion | Buyers | Visitors | Traffic |
|---|---|---|---|---|---|
| v3control | $1.42 | 7.5% | 2,250 | 30,000 | 50.0% |
| v4challenger | $1.68 | 7.0% | 2,100 | 30,000 | 50.0% |
The interval is an always-valid confidence sequence, so reading the report hourly cannot manufacture a winner. Every arm's options are re-proved with real carts each day; an arm that stops matching pauses its experiment and everyone sees the live version again. Promoting the winner is still your call.
Your agent does the work. You approve it.
Claude, ChatGPT or your own agent. Offers start as drafts, and nothing goes live until every visible option passes a real Shopify cart check. Over MCP, publishing also needs confirm: true and refuses without it. Over the API, the publish call itself is the approval.
Offer Suite is not open yet; brands join the waitlist. Once invited, connect any MCP client to https://mcp.offersuite.io/mcp with your workspace secret key: 78 tools in production, one per operation of https://api.offersuite.io/openapi.json.
claude · offer-suite MCP6 tool calls · specimen data
You asked: Which kit makes us the most per order?
Tool call:
get_offer_economicsOF_DEV_KITS1.1sStarter Kit keeps the most on a first order: $20.38 (42.5%).
Ritual Set keeps the most on a renewal: $49.60 (62.0%).
You asked: Drop the frother from the Ritual Set gifts. Worth it?
Tool call:
simulate_offerOF_DEV_KITS · draft vs live v31.4sRitual Set first order: $18.94 → $25.14.
That is the frother's cost and one pick. The price is the same, so the fees don't move.
Nothing was stored.
You asked: Store it and publish it as an arm.
Tool call:
replace_offerOF_DEV_KITS · draft v40.9spublish_offer proves v4 on real carts as an arm.
Live traffic stays on v3 until an experiment splits it. Publish? (y/n)
You asked: y
Tool call:
publish_offerOF_DEV_KITS v4 · as arm · confirm1.2sQueued. run 8f2c1d04.
Tool call:
get_publish_runOF_DEV_KITS · run 8f2c1d042.1sEvery option matched. Charged $58.60, promised $58.60.
v4 is a verified arm.
You asked: Test it against live, fifty-fifty.
Tool call:
create_experimentOF_DEV_KITS · v3 50% · v4 50%1.0sRunning. 36,099 visitors per arm for a 10.0% lift.
Start with the math.
The calculators run the same margin engine as the product. The playbooks price common offers on sourced costs, the glossary defines every figure, and the comparisons say, with sources, where other tools win.
Every order, costed to the cent.
Offer Suite opens to Shopify brands a few at a time. Join the waitlist and we'll invite you when it opens to yours, or ask for a free profit audit of your past orders: realized profit per item and per offer option, and where margin leaks.