How it works
Super Subscription is a thin, careful layer over Shopify's own subscription machinery. Understanding what belongs to Shopify and what belongs to us explains most of the app's behaviour.
What Shopify owns
Selling plans. When you publish a plan, we create a selling plan group on your store. This is a real Shopify object. Your theme renders it, Shopify's checkout understands it, and Shopify's admin shows it.
The checkout. Subscriptions go through your normal checkout. Discounts, taxes, shipping rates, payment methods and fraud analysis all behave exactly as they do for a one-off order.
The payment method. Shopify vaults the card or wallet. We never receive it, never store it, and cannot display it. When it needs updating, Shopify hosts that page.
The contract. Once a shopper checks out, Shopify creates a subscription contract recording what they bought, how often, at what price, and when the next charge is due.
The charge. On the due date, Shopify bills the saved payment method and creates an order.
What we own
The plan builder, so you can express a plan in merchant language — cadences, labels, price rules, cycle limits, advantages — rather than in GraphQL.
The storefront widget, which reads your plans through a signed app proxy and renders the picker on your product page.
The customer portal, where subscribers skip, reschedule, pause, swap and cancel.
Notifications — renewal reminders, payment failures, confirmations — by email and WhatsApp.
The dashboard: subscribers, revenue, churn, and the operational view of what is due and what failed.
Reconciliation. Webhooks occasionally go missing. A daily job compares Shopify's contracts against ours and pulls in anything absent, so a dropped webhook is a delay rather than a hole.
The flow, end to end
- You publish a plan → we create a selling plan group at Shopify.
- A shopper opens the product page → the widget asks our proxy which plans apply → renders cadences.
- They pick one and add to cart → the cart line carries Shopify's selling plan id.
- They check out → Shopify vaults the payment method and creates a contract.
- Shopify sends us a webhook → we record the subscription and its first charge.
- On each due date Shopify charges and creates an order → we record the cycle and notify the customer.
- The customer opens the portal → changes are written back to the Shopify contract.
Why this matters when something goes wrong
Because Shopify owns billing, the failure modes are different from a conventional subscription app:
- If our app is down, your customers are still charged. Shopify's billing does not depend on us being reachable. You lose the dashboard and the portal temporarily, not revenue.
- If you uninstall us, contracts remain. They are Shopify objects. Renewals stop because nothing is coordinating them, but the contracts are there and another app could pick them up.
- We cannot charge anyone by mistake. We do not hold a payment instrument, so there is no path by which a bug in our code takes money it should not.