Subscription contracts management
This section of the Merchant Portal displays a list of all subscription contracts. The interface allows you to easily view and manage customer subscriptions.
Features
- Tabs for Filtering: At the top, you can filter the list by "All", "Active", or "Canceled" subscriptions.
- Search and Sorting: There is a search bar and additional sorting button to help you quickly find specific contracts or perform bulk actions.
- Entries per page: When you have more than 25 subscriptions, a selector below the list lets you show 25, 50, or 100 per page. Zubs remembers your choice for next time.
- Subscription Table: The table provides the following details for each subscription contract:
- Contract: The unique identifier for the subscription contract.
- Customer: The name of the customer associated with the subscription.
- Status: The current status of the subscription (e.g., Active, Canceled). Active subscriptions are highlighted with a green "Active" badge.
This overview makes it easy to monitor and manage all ongoing and past subscriptions from a single place in the Merchant Portal.
Subscribers can handle many of these actions themselves in the Zubs Mobile App, which helps reduce support requests.
Creating a Subscription for a Customer
Sometimes you need to set a subscription up on a customer's behalf — after a phone or email request, or when onboarding someone who already bought once. The Create subscription button at the top of the Subscriptions list lets you do this without sending the customer back through checkout.
To protect the customer, a subscription you set up this way only starts once the customer confirms it by email — you prepare everything, but nothing is billed until they give their explicit consent.
The customer needs both a payment method and an email address on file for this to work. Zubs bills the new subscription against that saved method and sends the confirmation link to that email address. Without a payment method the form says so and goes no further; without an email address Send confirmation email stays disabled. Add whatever's missing on the customer's page in Shopify first.
To set up a subscription:
- Click Create subscription and search for the customer by name or email. If they have more than one method on file, pick the payment method to bill.
- Pick the subscription plan you want to put them on and the delivery frequency it offers. Only the products that belong to that plan are shown next.
- Check the products to include and set a quantity for each. The price beside each one is the per-item price the subscription is billed each cycle, with the plan's discount already applied.
- Pick the delivery address from the customer's saved addresses, then the shipping rate to charge. The rates offered are the ones your shipping settings resolve for that address and that cart (your delivery profiles, or your markets' shipping options if your store uses market-driven shipping) — the same list as Change delivery method on an existing subscription — so they update as you add or remove products. If none come back (typically when the shop's shipping settings aren't synced yet), you can send anyway and Zubs resolves a rate when the subscription starts. An address without a country can't be used, since the rate is resolved by country.
- Click Send confirmation email.
Zubs takes you back to the Subscriptions list and confirms which address the email went to. Setting the same subscription up for the same customer twice re-sends the existing link instead of issuing a second one, so an accidental re-send can't turn into two subscriptions and a double charge.
The customer confirms before it starts
Zubs emails the customer a confirmation link. The email is in the customer's language when that's English, German, French, Italian, Spanish, or Dutch, and in English otherwise; the confirmation page it links to is in English. When they open it they see the full subscription — each product with its image, price and quantity, how often it's delivered, the delivery address, the shipping rate and the payment method that will be used — plus a Confirm subscription button and a quieter No thanks, cancel this. Both ask a second time before they take effect, so a mis-tap doesn't cancel a subscription. Until the customer acts, nothing is created and nothing is charged. The link is valid for 7 days.
- Once they confirm, the subscription becomes Active and bills from that day, just like one started from the storefront. The first order is charged by the regular billing run shortly after rather than on the spot. The customer lands on a page confirming they're all set, with a link to their account.
- If they decline, or the link expires before they use it, no subscription is created and the customer is never charged.
- If the shipping rate changed between your setting it up and their confirming, Zubs charges the current rate and tells the customer the new amount on that page.
The page also explains how to add or change a payment method from the storefront account page — handy when the card on file has expired in the meantime.
You can set up as many as you like; each one waits for its own customer to confirm before it goes live.
Keeping track of pending confirmations
While subscriptions are waiting on their customers, an Awaiting confirmation tab appears on the Subscriptions page listing them — the customer, the number of items, when you sent it, when the link expires, and a "Pending" badge. Sending a confirmation email drops you straight onto that tab. As soon as a customer confirms, that subscription leaves the list and appears as a normal active subscription; once nothing is pending, the tab disappears again.
The first order from a subscription created this way is tagged zubs-manual-subscription in Shopify, so you can filter or report on subscriptions you set up on a customer's behalf.
Bulk actions
Tick the checkboxes next to one or more contracts to act on them together instead of opening each subscription individually:
- Pause: available once you've turned on pausing in Settings → Subscription Features. Pick a fixed duration or a specific resume date, and the selected subscriptions pause until then — billing and upcoming orders stop, and they resume automatically on that date (you can also resume them manually at any time). Only active subscriptions can be paused, so anything already paused, cancelled, or on a prepaid plan is skipped. If only some of your selection can be paused, Zubs pauses the ones it can and tells you how many went through.
- Cancel: ends billing and orders for the selected subscriptions immediately, including subscriptions on a plan with Minimum cycles.
Viewing a Specific Subscription Contract
When you click on a specific subscription contract from the list, you are taken to a detailed view page for that subscription. This page provides a comprehensive overview and management options for the selected contract.
Key Sections on the Subscription Details Page
-
Header:
At the top, you'll see the subscription contract number, its current status (e.g., "Active" with a green badge), and the order date of the initial order that created this subscription. In certain cases you will also find additional information, such as the reason for cancellation. You can also cancel a subscription in the top right corner. On a plan with Minimum cycles, cancelling before the minimum is reached schedules the cancellation unless you force it to take effect immediately.The top right also carries the subscription's actions. Ship now lets you choose how the customer gets an order now:
- Ship next delivery now charges the upcoming order straight away instead of on its billing date. The order after it keeps its date, so the wait until then gets longer.
- Extra delivery invoices the customer for one additional delivery on top of the subscription and leaves the billing schedule exactly as it is — the next regular order is still placed on its usual date. Use it when the customer needs products sooner but the schedule should stay the same. The customer confirms it by paying the invoice; nothing is charged automatically.
Which options you get depends on the current billing cycle. When it has already been billed, Ship next delivery now is replaced by Move the next charge earlier, which opens the reschedule picker on the next cycle that hasn't been billed or skipped (this one needs Reschedule Next Order turned on in Settings → Subscription Features). When the current delivery is skipped, or its payment failed and hasn't been recovered yet, shipping it now isn't available: resume the delivery under Upcoming Billing Cycles, or retry the payment under Past orders. When the previous order's payment failed and automatic retries may still be running, Ship now still works but warns you first, since it charges the current order on top. Extra delivery is available in every case.
-
Subscription Details:
This section displays the recurring product(s) included in the subscription, along with pricing, quantity, and delivery frequency. This section also displays one-time items that may have been added to the upcoming order of this subscription. You can also edit the subscription details from here.When you edit these details, click a one-time item's price to set what it costs in the next order, either as you add the item or later on. Enter 0 to send it for free. The price applies to that one order only. An item you've priced this way doesn't use or fill a slot of a build-a-box subscription's free item limit. The items that limit makes free or paid keep the price the box sets, so their price can't be edited.
When you edit these details, the Delivery frequency dropdown lists the frequencies that every product in the subscription offers, except the ones with prepaid billing. An existing subscription can't be moved onto a prepaid schedule — the deliveries a prepaid payment covers are set when the subscription is created, so a customer who wants one needs a new subscription.
On a prepaid subscription nothing about what gets delivered, or when, can be changed. The products are shown but can't be added to, repriced, or have their quantity changed, and the Delivery frequency dropdown shows the schedule the subscription is on without letting you pick another. One payment has already covered several deliveries, so both what those deliveries contain and when they arrive are fixed. You can still remove a line, which is what you want when a product is discontinued. The exception is a plan whose billing cycle doesn't cover a whole number of deliveries — weekly deliveries billed monthly, for example, where the number of deliveries per charge varies from one cycle to the next. Zubs can't work out what the remaining items should cost to ship there, so it turns the removal down rather than charge the wrong postage. If something else needs to change, cancel the subscription and create a new one on the schedule the customer wants.
-
Customer Information:
On the right, you'll find the customer's name, contact information, shipping address, and payment method. Clicking on the customer name takes you directly to the Customer view in the Shopify admin.If the contract has no payment method — which makes billing fail with "Payment method is not specified on subscription contract." — you can link one right here. Click the edit icon on the payment method card and pick one of the customer's payment methods on file; expired cards are shown but can't be selected. If the customer has no usable method, use Manage payment on customer page to add one in Shopify. Once a method is linked, the next billing attempt can go through.
-
Payment Summary:
Shows what the subscription costs, both here and on the edit page:- Recurring products — the subscription's products, after their discounts.
- One-time products — one-time items added to the order, shown only when there are any.
- Shipping — the delivery price after automatic shipping discounts, next to the delivery method. It's hidden when the subscription has no delivery method, or uses local pickup at no charge.
- Total — the sum of the rows above.
Taxes aren't included; they're calculated when the order is billed.
On an active subscription whose next order costs something different from the recurring order — because it carries one-time items, or changes made to that billing cycle only — the card splits into a Recurring order block and a Next order block, each with its own breakdown. The Next order heading carries that order's billing date, in your shop's timezone. The customer portal calculates its price summary the same way, so you and your customer see the same amounts.
-
Past Orders:
A list of previous orders generated by this subscription, including order numbers and total amounts.If a customer skipped the most recent delivery and then changes their mind, you'll see a Bill this cycle action on that row. It sends the customer an invoice for the missed delivery and leaves the upcoming order where it is — unlike Ship now or Reschedule, which move the upcoming order itself. The cycle has to be the immediate predecessor of the current one; older skipped cycles can't be recovered through this flow.
While the customer hasn't paid the invoice yet, the row shows an "Invoice sent — awaiting payment" badge with a link to the draft order. Once they pay, it switches to a normal "View order" link.
An extra delivery you invoice from Ship now appears here as its own row, labelled Extra delivery and dated when it was created. It belongs to no billing cycle, so it carries none of the skip or retry actions the cycle rows have. Until the customer pays it shows the same "Invoice sent — awaiting payment" badge and draft-order link as a recovered cycle; once they pay it becomes a normal order link with its total.
When a billing cycle fails and no order is created — a declined card, a missing payment method, and so on — that cycle now stays visible here as a failed row instead of disappearing once the schedule moves on. The row shows an Order not created warning along with its recovery status: the date of the next automatic retry and how many attempts have run (for example, "Retry 2 of 3"), based on your dunning settings.
While automatic retries remain, you can force the next one right away with Retry now instead of waiting for the scheduled date. Once all automatic retries are exhausted, the row shows No more automatic retries and a Charge now button that attempts a fresh charge on that cycle — handy after the customer has updated their payment method. A cycle can only be charged successfully once, so this is safe to use even while a retry is in flight.
View details on a failed row opens the full picture of that attempt: the error code Shopify returned and what it means, the amount that was attempted and the gateway it ran through, when it ran, and how many retries have run against how many you allow. On an inventory failure it also lists the variants that were out of stock. Below that you see what the order would have contained — each product with its quantity and price, any per-cycle discounts, delivery, and the basket subtotal — so you can explain a charge without leaving the app. Promotional lines carry a Free or Promo badge.
If the cycle carries no edits of its own, the items shown are the subscription's current ones. Shopify drops per-cycle edits when a contract is cancelled, so on a cancelled subscription the item breakdown can be unavailable — the failure details are still there.
-
Upcoming Billing Cycles:
Displays the schedule for future billing and shipment dates. For each upcoming cycle you can skip it, or reschedule its billing date — the date picker is bounded to that cycle's window, so you can move a single order without shifting the rest of the schedule. Rescheduling needs Reschedule Next Order turned on in Settings → Subscription Features; with it off, neither the per-cycle Reschedule buttons nor the Reschedule action on the subscription are offered.A skipped cycle is listed as the window it covers — its start and end date — with a Skipped badge, since skipping removes the single billing date the order would have had. View details shows that window along with the cycle's expected billing date; on a skipped cycle the billing date is left out, because it only becomes meaningful again once the order is resumed.
-
Upcoming Deliveries:
On a prepaid subscription — one payment covering several deliveries — this card lists the delivery dates still to come. Dates covered by a payment that's already gone through are the real scheduled shipments; dates further out carry an Estimated badge, because Shopify only creates delivery records once a payment has been taken, so those are worked out from the plan's delivery frequency. A paused subscription shows no estimates, and neither does a plan whose payment doesn't cover a whole number of deliveries. -
Subscription Timeline:
A chronological log of key events related to the subscription, such as successful billings, skips, and changes.Skip and unskip entries name the billing cycle they apply to and the window it covers, rather than a single date — skipping removes the billing date the order would have had, the same reason the Upcoming Billing Cycles card shows a window for a skipped cycle. A reschedule entry names the cycle whose date moved, which isn't always the next one, and says who moved it — you or the customer. An entry that names neither was made by an automated job rather than by a person.
Sending an invoice adds an entry of its own, naming whether it covered a skipped delivery or an extra delivery, along with the draft order it went out on.
This detailed view allows you to manage all aspects of an individual subscription, including editing products, updating shipping or payment information, skipping deliveries, and reviewing the subscription's history.