Why did my offers stop mid-month?
Bundles were working. Nobody touched anything. Then they stopped, and the offers read as expired.
This is nearly always the plan's revenue cap, and one call settles it.
Ask: "Have I hit my plan limit this month?"
Step 1 — Call get_plan_status
It takes no parameters and answers in one shot.
| Field | Read it as |
|---|---|
plan | The plan this store is on |
additional_revenue_used | Bundle-attributed revenue this cycle, in USD |
reset_date | When the cycle rolls over |
free_cap | The cap block — or null on a plan with no cap |
When free_cap is present:
| Field | Means |
|---|---|
cap | The limit for this cycle |
used | How much of it is gone |
is_capped | true means the cap is reached |
near_limit | true from 80% of the cap onwards |
reset_date | When offers can run again |
Step 2 — Read is_capped
is_capped: true is your answer. Once the cap is reached, running offers are switched off
automatically and cannot be activated again until the cycle resets. Nothing is broken, nothing was
misconfigured, and re-activating them by hand will not hold.
Two ways forward: wait for reset_date, or move to a plan without the cap.
This is why the offers read as expired rather than draft. An offer switched off by the cap is indistinguishable, in the offer list, from one whose schedule ran out — which is exactly why people spend an afternoon checking schedules that were never the problem.
Step 3 — If free_cap is null
Your plan has no cap, so this is not the cause. Go back to
why are my bundles not showing and
start at get_setup_status — a theme published without the app embed is the next most likely
explanation for "it stopped and nobody changed anything".
Step 4 — Catch it before it happens next time
near_limit turns true at 80%. That is the number worth checking on a schedule rather than after
the fact:
"How close am I to my plan limit?"
Asked weekly, it turns an outage into a decision made in advance.
additional_revenue_used and cap are both in USD, whatever currency your store sells in. A
store selling in EUR that compares its own revenue figures against cap directly will read the
distance to the limit wrong.
What you finish holding
Either a confirmed cap with a reset date — no fix needed, only a choice — or a ruling-out that sends you to the setup checks with one call spent instead of an afternoon.