Why hosting matters
To create a subscription, Meridian needs an offline access token for the shop. Your app stores those tokens in its own Shopify session store, so Meridian reads them from the app’s managed database, which is why publishing requires the app to be hosted on Meridian. You can build, edit and delete plans regardless. It’s only publishing that’s gated.The four things that block activation
The Plan Builder tells you which one applies rather than failing at the Shopify call:
The third one catches most people: a brand-new app has nothing to bill with until somebody installs it.
What activating does
Activating publishes the plan’s line items to Shopify Billing and moves it to active, so it appears on the pricing page and can be subscribed to. Switching back to draft hides it from new subscribers; existing subscribers keep what they have.Deleting a plan
A plan that stores still subscribe to can’t be deleted. Deleting it would take their features and usage billing away while Shopify keeps charging them the recurring price, so the Plan Builder refuses while any subscription to the plan is:- Active, including a store on a free trial
- Frozen, because Shopify resumes it once the store pays again
- Pending, because the merchant can still approve it on Shopify’s screen. Shopify expires an unapproved subscription after two days, so an older one no longer counts.
What the merchant sees
Subscribing is a Shopify handshake, not a Meridian checkout:- Your app asks Meridian to subscribe the shop to a plan.
- Meridian creates the subscription through Shopify’s Billing API (with the plan’s price, its trial days, any usage line item, and any discount) and gets back a confirmation URL.
- Your app sends the merchant to that URL. Shopify shows its own approval screen, where the charge is authorised.
- Shopify redirects the merchant back to your app and notifies Meridian, which records the subscription and fires the subscription triggers.
Trying it without money moving
A subscription created on a development store is a Shopify test charge. Before it creates the charge, Meridian asks Shopify whether the store is a development store, so the whole flow runs (approval screen with Shopify’s test charge notice, redirect, subscription recorded, triggers fired) with nothing billed, on your deployed app as well as in local development. Every other store gets a real charge. Meridian has no separate test mode to switch on: installing your app on a development store and subscribing is the end-to-end rehearsal. If Shopify can’t answer that question when you subscribe, Meridian creates a real charge rather than risk a free one, and a development store has no payment method to approve it with. Subscribe again.A free plan (monthly price 0) needs no Shopify charge, so a merchant subscribes to it without an approval screen at all.