Install
Partly availableOne store per workspace for now.
A merchant installs the app from Shopify and opens it in the admin. The install is managed by Shopify: there is no OAuth callback and no install link of ours, so no link can be used to capture a store. The app asks for a fixed list of scopes, each one documented and used by the code, and holds only expiring offline tokens.
When the App Home first opens, it exchanges Shopify's ID token for an offline token and connects the store:
- registers the order, refund, product, inventory, shop, uninstall and scopes-update webhooks
- adds the checkout pixel and the key the Verified offer theme block reads
- registers the cart transform, when the store has granted
write_cart_transforms - rebuilds the store's pricing, so every live offer is priced on it
On a first install Offer Suite creates a new workspace, and the installer claims it by opening a sign-in link sent to their email. A scope added later reaches an existing store the next time the merchant opens the app. The API and MCP have no install tool: a store connects only through Shopify.
Offer Suite is not open yet: no brand has been invited, and brands join the waitlist.
App Home, inside Shopify admin
In productionThe App Home is the store's Overview page, embedded in the Shopify admin. It shows:
- a setup guide whose steps check themselves; its Add the offer block button (the App Home's own label) opens the theme editor with the Verified offer theme block ready to place
- the store's health and a realized-profit summary for recent days
- the 20 most recently updated offers, each with its status, version, verification (options matched) and order count
Open full dashboard opens the standalone dashboard already signed in, through a single-use handoff that expires after 60 seconds. It does this only when the Shopify user's verified email already belongs to the store's workspace; anyone else lands on the normal sign-in page.
The App Home is read-only apart from hiding the setup guide. Offers are not written there: your agents write them through the API or MCP.
offer-suite-demo.myshopify.comAmerica/New YorkCaptured 2 October 2026
Setup
4 of 5 required steps done
- An offer is liveAn offer is live on this store.Done
- Shopify prices the offers correctlyShopify charges what your offers show.Done
- Shoppers have seen an offerShoppers are seeing your offers.Done
- Orders are arrivingOrders from this store are arriving.Done
- Every item has its required costs40 items still miss a required cost.To do
- An agent has used a secret key (optional)An agent is using a secret key.Done
Last 30 days
3 September 2026 to 2 October 2026, USD, dev store
- Orders
- 17
- First orders
- 17
- Contribution
- $1,255.48
- First-order contribution per visitor
- $38.04
33 visitors saw an offer. No orders in another currency.
Notices
Most urgent first
- Warning40 items are missing a costOrders on them leave that cost out, so their profit reads high.App Home banner
- Info200 cost changes from Shopify to reviewAccept or ignore them on the Costs page.
Store overview
In productionOne read per store answers three questions: is the store set up, what did it earn lately, and what needs attention first. The App Home's Overview page shows it, and agents read the same answer from GET /stores/{id}/overview or its MCP tool.
- A setup checklist computed from data, never ticked by hand: an offer is live, Shopify prices the offers correctly, shoppers have seen an offer, orders arrive with no webhook error, every item has its required costs, and, optionally, an agent has used a secret key.
- The last 30 days in the shop's own time zone: orders and first orders, total contribution net of refunds in the current cost view with cancelled orders left out, and first-order contribution per visitor who saw an offer. Money is in the shop's currency; orders in other currencies are counted, never converted.
- Notices ranked by urgency. The App Home shows the most urgent as its banner; the API and MCP return the whole list.
Sidekick
In productionInside Shopify Sidekick, a merchant can ask Offer Suite:
- which offers made the most realized profit over a period
- what one offer earned per option
- what a product, SKU or variant earned, and which offers sold it
- whether an offer is live and verified against a real cart
Profit comes from the same realized order records as the dashboard and the API, in the current or the as-recorded cost view, with one answer per shop currency and never a sum across currencies. Answers are cached for 5 minutes for profit and 60 seconds for status. When the analytics store is still waking up, Sidekick says so and asks again later rather than answer with empty figures.
Sidekick answers only for a workspace with exactly one Shopify store; any other workspace is sent to the dashboard.
Standalone dashboard at app.offersuite.io
In productionYour team watches what the agents did in a signed-in web dashboard. Staff sign in with an emailed link that expires after 10 minutes, or straight from the Shopify admin.
| Stores | Each store's webhook, order reconciliation and pricing health, with the setup checklist and the last 30 days. |
|---|---|
| Offers | Every offer with per-option verification, and a Re-verify button that checks the live version on real carts again. |
| Economics | Per offer option, the forecast first-order and renewal margin beside realized orders and contribution, in the current cost view. |
| Experiments | Every experiment in the workspace, its report, and a stop action. |
| Costs | Seed costs from Shopify, import a CSV, record or void one row, review Shopify's cost changes, read the restatement log and find SKUs without a cost. |
| Keys and team | Secret and public API keys, shown in full only once when created, and team members as owner, admin, member or read-only. |
| Privacy and agents | A read-only list of privacy requests, and the MCP configuration to copy into your agent. |
The dashboard can never create, edit or publish an offer. Team and key management live only here: they are not in the API's OpenAPI document, and an API key cannot call them. Read-only members cannot change anything, team and key changes need an admin, only an owner can grant or remove an owner, and a workspace always keeps one. A person in several workspaces switches between them in the header.
Every day at 06:17 UTC
In productionOnce a day Offer Suite checks every connected store and repairs what drifted:
- refreshes the store's Shopify token and confirms the app is still installed
- re-creates order webhooks that Shopify deleted
- fetches missed or stale orders from the last 60 days, through the same ingest as a live delivery
- rebuilds the app discounts and option maps if they were deleted or drifted, with no republish and no change to any offer
- prunes option-map entries for retired versions
- re-reads the store's plan, its cart-transform capability, and the title, image and status of every variant a live offer uses
- raises Shopify cost changes for you to accept or ignore
Results show as notices in the App Home and in the store overview. Admin calls are capped per run, so a backlog carries over to the next day.
Live offers, checked again
In productionOn the same daily run Offer Suite re-verifies, on real carts, the two live offers per store that were verified least recently, so every live offer comes round again in turn (a store with ten live offers, every five days). A mismatch marks the store's pricing as broken and names the offer, the option and the cart checks that failed.
When a store's pricing status changes, every team member gets one email when it breaks and one when it is fixed. The dashboard and the App Home show the pricing status and when it was last checked. A live offer can be re-verified at once from the dashboard, the API or MCP (verify_offer), and an agent can run the check and rebuild together with rebuild_store_pricing.
What it does not do yet
- One store per workspace for now: each install creates its own workspace, and a second store cannot join an existing one yet. Partly available
- The App Home is read-only: offers are written by your agents through the API or MCP, and the App Home only hides its setup guide.
- Sidekick answers only for a workspace with exactly one Shopify store.
- The App Home banner shows only the most urgent notice, and the dashboard's store page shows the checklist and the last 30 days but no notices; the API and MCP return them all.
- The dashboard does not show profit across offers for any period you choose, item profit, the offer funnel or the simulator; the API and MCP do. Its store page shows only the last 30 days.
- Rebuilding a store's pricing on demand is an API and MCP call; the dashboard has the Re-verify button.
Questions
Can I write or edit an offer in the Shopify admin?
No. The App Home and the dashboard are read-only for offers. Your agents write offers as documents through the API or the MCP server, and Offer Suite checks each one on a real cart before it goes live.
What happens if Shopify deletes one of the app's webhooks?
The daily run re-creates order webhooks Shopify deleted and fetches any orders missed in the last 60 days, through the same ingest as a live delivery. The repair shows up as a notice.
Who can open the dashboard from the Shopify admin?
Only a Shopify user whose verified email already belongs to the store's workspace is signed in through the 60-second handoff. Anyone else lands on the normal sign-in page.
Does Sidekick add up profit across currencies?
No. It returns one result per shop currency and never sums across currencies.
Can one workspace hold several stores?
Not yet. Each install creates its own workspace, and a second store cannot join an existing one.