The customer self-serve portal.
Six self-serve subscription actions, so subscribers don't have to email your support team — which of them a card offers depends on whether that contract is active or paused. Reduces support tickets, gives customers the control they expect, and keeps your subscription data in sync with Shopify.
Daima ships a Customer Account UI extension — a full page titled My Subscriptions that lives inside Shopify's own customer accounts. A signed-in subscriber sees one card per contract, and what a card offers depends on that contract's status. An ACTIVE contract shows Skip Next, Pause and Cancel, plus Change beside the next billing date and Swap beside each eligible line item. A PAUSED contract shows only Resume Subscription — a paused subscriber has to resume before they can skip, cancel, swap or move a date. A CANCELLED contract shows no actions at all.
Every action runs through Daima's hosted API, which calls Shopify's Subscription APIs. Daima keeps no parallel copy of your subscription data — the contract in Shopify stays the source of truth.
The page is not switched on by default. You add it to your account pages once, in Shopify's checkout and accounts editor, and until you do it does not exist for anybody. Start with the setup section below — none of the actions after it are real until that is done.
Where subscribers find it. Inside their Shopify customer account on your store — reached from the sign-in link in your store header if your theme shows one, from the link in any order confirmation email, or directly at your-store.myshopify.com/account. Once you have added the page and given it a menu entry, it sits in the customer account menu alongside the pages Shopify puts there itself. There's no separate Daima login.
Turn the portal on first
Installing Daima does not add the page. Creating a plan does not add it. Shopify only lets the merchant add a customer account page, from the Shopify admin, so this is a job you have to do once by hand. It takes a couple of minutes.
It is also the step with no workaround. From the Contracts page in your Daima admin you can pause, resume and cancel a contract yourself when a customer emails you instead. You cannot skip a delivery, move a billing date or swap a product on a customer's behalf — there is no merchant-side control for any of those three. Without the portal, those requests have nowhere to go.
The usual failure is skipping this section entirely. A merchant installs Daima, copies the account link off Daima's Settings page, sends it to a subscriber, and the subscriber lands on their account home with no subscriptions page anywhere on it. Nothing is broken — the page was never added. If a customer has told you they can't manage their subscription, read this section before anything else.
1 · Check which version of customer accounts your store uses
Shopify has two, and it names them Customer accounts and Legacy customer accounts. Customer account UI extensions — which is exactly what Daima's page is — run only on the current version. Legacy cannot run them at all, so on a legacy store there is no way to add the page and nothing in this guide will work.
Check under Settings → Customer accounts, in the section for choosing which version of customer accounts to link to. Most stores are already on the current version: Shopify deprecated the legacy one in February 2026, it is no longer offered to new stores or to stores that weren't already using it, and a final shut-off date is still to be announced. If your store opened recently, this step is a five-second confirmation.
If you are on legacy, switching is done from that same screen: click Upgrade. Before you click it, read the next box.
Switching versions changes how every one of your customers signs in. On legacy accounts they sign in with an email and a password. On the current version they sign in with a six-digit code emailed to them each time, so the passwords they have saved stop working the moment you switch. That is a customer-communication event, not just a settings change. Tell your list first, and be confident your transactional email actually lands — if those codes go to spam, your subscribers are locked out of the portal you just built for them.
One other thing changes: legacy account pages could be customised in Liquid, and the current version cannot — customisation is done with apps in the visual editor instead. Any theme or app tweak that edited your legacy account pages stops working. What you gain is the reason Shopify is pushing it: saved payment methods, self-serve returns, store credit, and support for B2B and Markets.
2 · Add the Subscription Management page
The page is added in what Shopify calls the checkout and accounts editor. You reach it from Settings → Checkout — not from Settings → Customer accounts, which is the wrong turn most merchants make. In the Configurations section, click Customize on your checkout configuration. That opens the checkout and accounts editor.
In the editor's Apps section, find Daima Subscriptions App. The extension is listed under its own name, Subscription Management. It is not called "Daima" and not called "My Subscriptions" — that second one is only the title the customer reads once the page renders. Click the + icon beside it, then under Add page to choose Accounts rather than a checkout page, and click Save.
The page still isn't linked from anywhere, and Shopify does not force you to do it — adding it to the menu is a separate action you have to take yourself. Skipping it is the most common way a page that was added correctly is still never found: it exists at its own address, but nothing in the customer's account links to it. Click Add to menu. That opens the Customer account main menu dialog with the entry's Label prefilled and editable, so if the prefilled wording isn't what you want customers to read, change it there, then save the menu entry.
You can rename or reorder the entry later from Content → Menus, in the menu named Customer account main menu, or from inside the checkout and accounts editor. Worth knowing how that menu behaves: on desktop it runs vertically down the left, on mobile it sits horizontally across the top, and on mobile with five or more items it collapses behind a menu icon — so a subscriber testing on a phone may have to open the menu before they see your entry.
Make sure you edited the live configuration, not a draft. Shopify lets you keep draft versions of your checkout and account pages. Work done on a draft reaches nobody until you publish that draft, and publishing swaps it with whatever is currently active. If you followed every step and customers still see nothing, rule this out first. On the Advanced and Plus plans these pages can also be customised per market — a page added under one market does not appear for customers shopping another.
3 · How customers reach it
The normal route is the one you just built. A customer signs in to their account on your store and clicks the entry in the customer account menu. Nothing to install, nothing to set up on their side, and no link needed from you.
The page also has its own address. The menu entry Shopify creates is the link customers use, so adding it to the menu is the simplest way to make the page reachable. To put it in your storefront navigation as well, add a menu item under Content → Menus and pick the customer-account page from the link options — it only appears there once you have added the page in the editor. Daima's admin cannot show you this address: Shopify generates it for your store and Daima never handles it.
To link it from your storefront navigation, add a menu item under Content → Menus and paste that URL in. Add the page in the editor first: merchants have reported that if you go looking for the link before the page exists, the customer account link options come up with nothing to select.
Changing or republishing your theme does not affect any of this. The widget is a theme app block and lives in your theme; the portal is a customer account page, configured in the checkout and accounts editor rather than in the theme, so a theme change does not remove it.
4 · What the account link in Daima's settings actually gives you
Daima's Settings page shows you a copyable account link for your store. It is https://your-store.myshopify.com/account — your storefront account home, and nothing more specific than that. There is no page path in it, no extension handle, no parameter. It is not a deep link to the subscriptions page, and it never has been.
So on its own it is not enough, and this is worth being blunt about because it is exactly how merchants end up with subscribers who can't find anything. Sent to a customer before you have added the page, it drops them on an account home where no subscriptions page exists. Sent afterwards, it still drops them on account home — they reach their subscriptions by clicking the menu entry from there. Read that field as "this is where my customers sign in", not as "setup is done".
5 · Verify it as a customer
Whatever the editor preview shows you, the only view that counts is a signed-in customer's. Use a real customer who has a Daima subscription, or place a test order on one of your plans with a discount code so you're not paying full price. Then:
- Open your store in a private window so you aren't signed in as staff, and sign in as that customer. On the current version of customer accounts that means requesting the six-digit code and reading it out of their inbox, so use an address you can actually open.
- Look for your entry in the customer account menu. If it isn't there, either the Add to menu step was never done or the page was added on a draft configuration.
- Open it. The page title reads My Subscriptions, and each contract appears as a card showing its status, its line items, and a row of Frequency, Total per delivery and Next billing.
- Run one action end to end — Skip Next on an active contract is the least destructive — then confirm the change shows against that contract in your Daima admin.
Do this once, on the store you actually sell from. It is the only way to know the portal is on before a paying subscriber finds out it isn't.
Skip the next delivery
A subscriber clicks Skip Next on any active contract. Daima skips the upcoming billing cycle and advances the next billing date by exactly one cycle (a weekly plan moves forward 7 days; a monthly plan moves forward one month).
The contract stays ACTIVE the whole time — only the next charge is skipped. Useful for subscribers who are travelling, overstocked, or just want a one-month break without cancelling.
Pause and resume
Pausing sets the contract's status to PAUSED. No further billing attempts run until the subscriber clicks Resume Subscription, which flips it back to ACTIVE and resumes the original schedule from the next eligible billing date.
Pause is the right choice when a subscriber wants to stop indefinitely without cancelling. They keep their pricing, their plan, their order history. When they're ready to come back, one click resumes them.
While a contract is paused, Resume Subscription is the only action on the card. Skip, cancel, swap and the billing-date change all come back once it is active again.
Cancel
Cancellation is final. The contract status moves to CANCELLED and Shopify stops all future billing attempts. The subscriber's order history stays intact, and they can subscribe again later, but the cancelled contract itself can't be revived — they'd start a new one.
Change the next billing date
Subscribers can move their next billing date earlier or later — anywhere from tomorrow to the end of the current billing cycle. The portal loads that range before it shows the picker and spells out which days are selectable; because the current cycle usually started in the past, the earliest date on offer is tomorrow, not the cycle's start date. Daima re-validates the date server-side and rejects anything outside the cycle before it touches Shopify.
The change is recorded as a BUYER_INITIATED schedule edit on the billing cycle. Once accepted, the next charge happens on the new date. Once accepted, the next charge happens on the new date.
Why "within the cycle" not "any future date". Shopify treats each billing cycle as a discrete unit with a start and end. Moving a date across cycles would skip or duplicate a billing event. Daima's panel surfaces the valid range up front so subscribers don't see confusing rejections.
Swap product
Subscribers can swap one subscription line for a different variant. The replacement variant must belong to the same selling plan group as the original — Daima validates this server-side before applying the change.
This means a "Subscribe & Save Coffee" plan that includes Ethiopian Yirgacheffe and Colombian Supremo lets a subscriber swap between the two. It does NOT let them swap to a product on a different plan (e.g. they can't swap their Coffee subscription for a Tea subscription) — the boundary is plan-defined, not catalog-wide.
Under the hood, swap creates a draft of the contract via subscriptionContractUpdate, edits the matching line via subscriptionDraftLineUpdate, and commits via subscriptionDraftCommit. From the subscriber's perspective, it's one click.
Subscriber data isolation
Every subscription endpoint the portal calls — the contract list, the action endpoint, the billing-cycle date range and the swap options — verifies the session token's JWT signature, scopes the query to the authenticated customer ID, and, defense-in-depth, re-checks each returned subscription contract's customer.id against the JWT before responding.
What you see on the merchant side
Pausing, resuming, cancelling and skipping each fire a Shopify Flow trigger from the merchant side, so you can build automations on top. In Flow you pick them by their display name:
- Pause → Subscription paused (
subscription-paused) - Resume → Subscription resumed (
subscription-resumed) - Cancel → Subscription cancelled (
subscription-cancelled) - Skip → Subscription skipped (
subscription-skipped)
The other two actions fire nothing. Changing the billing date does not fire a trigger, and swapping a product does not fire a trigger — there is no Flow automation to hang off either one. If you need visibility on those, check the contract in your Daima admin.
A common pattern: trigger a "We hate to see you go — was there an issue?" email on cancel, or a Slack alert when a high-value subscriber pauses. Build whatever your retention strategy needs.
"My customer says they can't see their subscriptions"
Four causes account for almost all of these. Work down the list in order — it is roughly the order of how often each one turns out to be the answer.
- The store is still on legacy customer accounts. Legacy accounts cannot run customer account UI extensions, so Daima's page can't be added and can't render. There is no setting in Daima that changes this. Check Settings → Customer accounts as described in step 1, and read the sign-in warning there before you switch anything.
- The page was never added in the editor — or it was added, and the separate Add to menu step was skipped. Both look identical to the customer: they sign in and see Shopify's own account pages with no subscriptions anywhere. Walk step 2 again, and while you're there confirm you edited the configuration that's actually live rather than a draft, and that you aren't looking at a market-specific configuration that your customer doesn't shop.
- The customer isn't signed in. Shopify requires a sign-in before any customer account page renders, so a subscriber who bounced off the sign-in screen never gets far enough to see anything of Daima's. This is worth asking about directly after a version switch, when the password they have saved no longer works and the six-digit code is going to a mailbox they don't check. Ask them what they're actually looking at: a sign-in screen is a completely different problem from an empty page.
- They have no Daima-owned subscription. The page loads and reads No subscriptions yet, with Browse our products to subscribe and save! underneath. Sometimes that is simply true. The case worth checking is the one that doesn't look like a problem: their subscription belongs to a different subscription app. Shopify ties every contract to the app that created it and gives no app access to another's, so a live contract sitting in Recharge, Loop or Shopify Subscriptions renders in Daima's portal as nothing at all — the same empty state as a customer who never subscribed. Nothing in Daima's dashboard will look wrong either. The fix is to move those contracts to Daima: start with the migration guide, and there are guides in the sidebar for Recharge and Loop too.
If the page loads but shows an error instead of a list, or the customer fits none of the four, email [email protected] with your store domain and the customer's email address and we'll trace it from our side.