What a selling plan actually is

Technically, a selling plan is a record on Shopify's side that ties together a billing policy (how often the customer gets charged), a delivery policy (how often they get the product), and a pricing policy (the discount, if any). Selling plans live inside selling plan groups, which are what get attached to products or variants. When a customer picks "Subscribe and save 10%" on a product page, they're selecting a selling plan ID.

How intervals and pricing tiers work

Each selling plan has its own interval (every N days, weeks, months, or years) and its own pricing policy. You can have multiple selling plans in one group — "every month, 10% off" and "every 3 months, 15% off" — and the customer picks one at the product page. Pricing can be a fixed amount, a percentage off, or a fixed price override. The discount is recurring by default, meaning every renewal gets the same discount, not just the first order.

  • Billing interval and delivery interval can differ (prepaid: charge once, deliver 3 times)
  • Pricing adjustments stack with automatic discounts in some cases — test before assuming
  • You're capped at a reasonable number of selling plans per group; don't try to model 50 cadences

Where apps fit in

Shopify gives you the API but no UI to create or manage selling plans, no widget on the product page, no customer portal, no billing automation, and no dunning. That's what subscription apps are for — they call the selling plan API to create and update plans, drop a widget on your theme, run cron jobs to trigger renewals, and give customers a place to manage their subscriptions.

Why this matters for portability

Because selling plans live on Shopify, not in the app's database, switching subscription apps is much less painful than it used to be. Subscription contracts (the customer's actual ongoing subscription) are also Shopify-native. A new app can read existing contracts and selling plans and pick up where the old one left off, assuming it supports contract migration.

  • Contracts and selling plans persist if you uninstall the app, but billing stops
  • Migrate during a low-renewal window to minimize charge disruptions
  • Verify the new app reads existing contracts before uninstalling the old one

Limits and gotchas

Selling plans don't support every pricing scheme you might want. Anchor dates ("always bill on the 5th of the month") have limited support and behave differently across plan types. Free trials aren't a first-class concept — apps simulate them with deferred billing or zero-price first cycles. And some discount combinations interact in non-obvious ways at checkout. Always test the full flow with a real card before launching pricing changes.