ZS Subscriptions guide
Everything you need to set up subscriptions on your Shopify store — from your first selling plan to recurring revenue on autopilot.
Overview
ZS Subscriptions adds recurring billing to your Shopify store. Customers can subscribe to products on your storefront, and ZS charges them automatically on schedule, recovers failed payments, and lets them manage their own plans.
The app is built on Shopify's native Subscription Contracts, which means Shopify securely handles the payment method — ZS never sees or stores a customer's card details.
Inside the app you'll work with six main areas:
- Dashboard — MRR, recurring performance, and a payment calendar showing what bills when
- Subscriptions — every contract, searchable and filterable, with pause / resume / cancel controls
- Subscription rules — the plans customers can subscribe to (billing frequency, discount, products)
- Automations — loyalty discounts, product swaps, interval changes, upsells, and bulk actions
- Analytics — statistics, upcoming revenue, retention, and cancellation reasons
- Settings — billing behaviour, widget design, portal permissions, emails, translations, shipping, and more
Install the app
Install ZS Subscriptions from the Shopify App Store. During installation you'll be asked to approve a few permissions:
- Manage subscriptions — to create subscription contracts and charge renewals
- Product access — to create selling plans and attach them to your products
- Customer access — to apply membership tags and send notifications
- Order access — to attribute renewal orders for accurate analytics
- Theme access — to help install the widget and portal blocks into your theme
These are required for subscriptions to work. Once approved, the app opens to your dashboard.
Enable the app embed (required)
Before anything shows on your storefront, the ZS Subscriptions app embed must be switched on in your theme. Go to Settings → Installation inside the app and click Open theme editor next to "Enable the app embed", then toggle it on and save. The Installation page also has guided, deep-linked steps for the widget and the customer portal, so it's the fastest way to complete the storefront setup.
Quick start
Five steps from install to a live subscription customers can buy.
Create a subscription rule
Go to Subscription rules → Create rule and pick Auto-charging. Give the rule a name, add a selling plan with a billing frequency (for example, every 1 month), pick the products it applies to — or apply it to all products — and optionally add a subscriber discount. Save.
Enable the app embed
In Settings → Installation, follow step one to switch on the ZS Subscriptions app embed in your theme. This activates the app on your storefront.
Add the widget to your product page
From the same Installation page, open the theme editor on a product template, click Add block in a section near the buy button, and choose ZS Subscription Widget. Drag it where you want it and save the theme.
Let customers subscribe
On the product page, customers now see a "Subscribe & save" option next to "One-time purchase". When they check out with the subscription selected, Shopify creates a subscription contract automatically.
Sit back — billing runs itself
ZS charges each renewal on schedule; Shopify creates the order and notifies the customer. You watch it all from your dashboard.
Subscription rules
A rule is a reusable subscription plan. When you save one, ZS creates a Shopify selling plan and attaches it to the products you chose — that's what makes the widget appear on those product pages. To create one, go to Subscription rules → Create rule and choose one of three types:
Auto-charging
The customer is charged automatically each cycle. This is the most common type. When creating one you set:
- Rule name and an optional internal name (only you see the internal name)
- One or more selling plans — each with a name shown to the customer, a delivery interval (every X days, weeks, months, or years), and an optional discount (percentage or fixed amount off)
- Optional minimum / maximum number of payments, if you want a fixed-term subscription
- A renewal & fulfillment day — the same day of the month as the initial order, the 1st, or the 15th
- Which products it applies to — specific products you pick, or all products in your catalog
Membership
Like auto-charging, but it also tags the customer and their orders so you can gate member-only content or perks. In addition to the fields above, you set a membership customer tag and a membership order tag. ZS applies the customer tag when the membership starts and tags every membership order, so you can build member logic anywhere Shopify tags work.
Recurring invoice
Instead of charging automatically, ZS emails the customer an invoice with a payment link each cycle. Good for stores that prefer manual payment. You set the interval unit and one or more interval options, the hour at which the invoice email goes out, and an optional discount.
Fixed schedules
Under Subscription rules → Fixed schedules you can make all subscribers bill on the same calendar date instead of their personal signup date — useful for monthly boxes. A fixed schedule has a name, a billing date and time, a number of cutoff days (orders placed within the cutoff roll to the next cycle), which billing interval it applies to, and which subscriptions it covers.
Checkout links
Subscription rules → Checkout links builds a direct checkout link for a product + subscription plan combination. Put the link in an email, ad, or QR code and the customer lands straight in a checkout with the subscription pre-selected.
Storefront widget
The widget is what customers see on a product page. It shows a "One-time purchase" and "Subscribe & save" option, plus a frequency picker if the product has more than one interval.
Adding it to your theme
- Make sure the app embed is enabled (see Install the app)
- Open Online Store → Themes → Customize and switch to a product template
- In a section near the buy button, click Add block and choose ZS Subscription Widget
- Drag it where you want it, then save the theme
Settings → Installation has a deep link that opens the theme editor in the right place for you.
Customizing it
Everything about the widget's look and behaviour lives in Settings → Subscription widget:
- Colors — buttons, borders, price, selected option, savings badge, radio buttons, info popup, and more
- Behaviour — which option is selected by default, whether to show the one-time option above the subscription options, show a savings badge, show the original crossed-out price next to the discounted price, or hide the whole widget when only one option exists
- Border radius and the position of additional subscription info text
Customer-facing labels like "Subscribe & save" and "One-time purchase" are edited under Settings → Texts & Translations.
How billing works
Once a customer subscribes, ZS runs the billing cycle for you:
- At checkout, Shopify creates a subscription contract with the customer's saved payment method.
- A background scheduler runs every 15 minutes and picks up contracts due to renew.
- When one is due, ZS asks Shopify to charge the saved payment method.
- On success, Shopify creates a new order and notifies the customer. ZS tags the renewal order and updates the customer's status tags.
You can control what time of day renewals are charged in Settings → General settings → Billing: the same hour as the initial order, or a fixed time (09:00, 12:00, or 18:00).
You can also send customers up to three upcoming-billing reminder emails (for example 2 days, 12 hours, and 6 hours before the charge) — configure them in Settings → Notifications & Emails.
Because billing runs on Shopify's payment vault, you stay PCI-compliant automatically — no card data ever touches the app.
Failed payments & recovery
If a renewal charge fails (expired card, insufficient funds), ZS handles it through "dunning". Configure it in Settings → General settings, on the Billing tab:
- Retry failed billing attempts — how many times to retry (1 to 5)
- Delay between retries — 12 hours, 1, 2, 3, or 7 days
- When the subscription reaches the maximum number of failures — cancel the subscription, pause it, or do nothing
On every failure the customer automatically gets an email asking them to update their payment method, and you can optionally get an admin notification too (Settings → Notifications & Emails). You can track your percentage of failed payments and failed-payments recovery rate in Analytics → Statistics.
Managing subscriptions
The subscriptions list
The Subscriptions page lists every contract. You can search by customer name, email, subscription ID, or product, and switch between tabs: All, Upcoming, With failed payment, With pending payment, Active, Paused, and Cancelled.
Working with a single subscription
Click any row to open the subscription's detail page, where you can see the customer, products, and delivery details, and pause, resume, or cancel the contract on the customer's behalf. Changes sync to Shopify immediately.
Creating subscriptions manually
Use Subscriptions → New subscription to create a contract for a customer yourself — useful for phone orders or migrating a customer by hand.
Import & export
- Bulk import — upload a CSV to migrate subscriptions from another platform; the results screen shows what was created
- Export data — select which subscriptions to include and download them as CSV
Customer portal
The portal lets subscribers manage their own plans without contacting you. Depending on what you allow, customers can pause, resume, skip a delivery, reschedule an upcoming payment, add or remove products, change quantities, change their billing interval, update their shipping and billing address, add notes, cancel, or reactivate a cancelled subscription.
Setting it up
- Create a page for it: Online Store → Pages → Add page
- In the theme editor, open that page, click Add section, and choose ZS Subscriptions Portal
- Optionally add a link to that page in your store's navigation or customer account menu
The portal is served from your own domain at
/apps/zs-portal. Settings → Installation
walks you through these steps with deep links.
Controlling what customers can do
Every capability is a toggle in Settings → Customer portal — for example "Show PAUSE button", "Show CANCEL button", "Customers can add/remove products", or "Allow customers to reschedule an upcoming payment". Portal colors are configured in Settings → Legacy customer portal colors and customer-facing wording in Settings → Texts & Translations.
Automations
Automations run extra logic on your subscriptions. Each lives on its own page under Automations:
Loyalty discounts
Reward long-term subscribers automatically. Click Create loyalty discount, choose how many renewals a customer must reach, and set the discount (percentage or fixed amount). ZS applies it to the subscription automatically once the customer hits that renewal count.
Product automations
Add, remove, or swap products on subscriptions automatically — for example, add a free gift after the third payment or replace a discontinued product everywhere. When creating one you choose when it applies:
- After subscription gets created or renewed — applies on each new or renewing subscription
- Immediately on existing subscriptions — applies to all current contracts a few minutes after you save
- Both — immediately and on future renewals
You can also add a payment condition so the change only happens after a specific payment number.
Automated interval changes
Change a subscription's billing interval automatically after a set point — for example, bill weekly for the first month, then switch to monthly.
Product upsells
Configure product recommendations that appear in the customer portal. Customers see up to 3 upsell products and can add them to their subscription in one click.
Bulk actions
Run maintenance across all contracts at once: Regenerate billing schedules (rebuild every contract's schedule after changing billing settings) or Reschedule billing attempts (shift upcoming charges by a number of days you choose). Both run as background jobs.
Analytics
Metrics are computed from your contract and billing data. Until your store has real subscription history, the analytics pages show clearly-labelled sample data so you can see how they will look. There are four reports:
- Statistics — average retention period; average, median, maximum, and total revenue per customer from renewals; growth and churn rates for all and for active subscriptions; percentage of failed payments and recovery rate; plus a historical revenue chart. (MRR is shown on the main dashboard.)
- Upcoming revenue — the potential revenue scheduled to bill in the next 7 days, assuming all renewals succeed
- Retention rate — how many subscribers survive to each renewal step, with renewal-step and cohort views
- Cancellation reasons — why customers cancel, ranked, with each reason's share and the average number of renewals before cancelling
Settings
Configure how the app behaves under Settings:
- General settings — organized into tabs: Billing (dunning retries), Recurring invoices (invoice prices, payment links, copies), Orders (order tagging), Customers (status tags for active, paused, and inactive subscribers), Shipping (when to recalculate delivery cost), Advanced, and API
- App plans — check and manage your current plan
- Subscription widget — colors, behaviour, and design of the storefront widget
- Installation — guided setup: enable the app embed, add the widget block, and set up the portal, with deep links into your theme editor
- Customer portal — which actions subscribers can take, login options, and portal behaviour
- Legacy customer portal colors — colors for the customer portal
- Cancellation flow — the reasons customers pick when cancelling, and the popup texts in each language
- Texts & translations — every customer-facing label in your store's language
- Notifications & emails — which emails go to customers (new subscription, billing reminders, failed payment, pause/resume/cancel confirmations) and which alerts go to you
- Inventory — skip or allow renewals when items are out of stock, and get a weekly low-inventory email
- Delivery profiles — custom shipping rates (rate name and price) for subscription orders
FAQ
No. All payments run through Shopify's native payment vault. The app never sees or stores card data.
Three things to check, in order: the ZS Subscriptions app embed is enabled in your theme (Settings → Installation), the product is part of a subscription rule, and the widget block is placed in your product template. Also note that "Enable subscription widgets in your shop" must be on in Settings → Subscription widget.
ZS retries the charge on your configured schedule (1–5 retries, 12 hours to 7 days apart) and emails the customer. After the final retry, it cancels the subscription, pauses it, or does nothing — based on your settings.
Yes — add the customer portal section to a page in your store. Depending on the toggles you enable, customers can pause, resume, skip, reschedule, edit products and quantities, update addresses, cancel, or reactivate themselves.
Yes. Each successful renewal creates a new order in your Shopify admin, just like a normal sale, and ZS tags it so you can tell renewal orders apart.
You decide, in Settings → Inventory: skip the renewal, allow it anyway, and optionally get a weekly email about products with insufficient inventory.
Yes — use Subscriptions → Bulk import to upload your subscriptions as a CSV file, or create individual contracts manually with New subscription.
Yes — create a fixed schedule under Subscription rules → Fixed schedules with your chosen billing date, time, and cutoff days.
Support
Need help? Reach us from the Support center inside the app, or email our team directly. We typically reply within one business day.