Guide

How to customize your subscription customer portal

Once the portal is installed, the real work is making it yours: a custom domain at portal.yourstore.com, brand-matched colors and typography, edited copy, hidden actions, translations, and the custom-CSS escape hatch for the last 5% of polish.

14 min readUpdated 21 May 2026By SimpleSubscription Team
On this page (10)
  1. Where to start: the merchant customization workflow
  2. Wire up the custom domain (portal.yourstore.com)
  3. Branding: logo, colors, typography
  4. Edit the portal copy — your voice, not the default
  5. Action permissions: which buttons to show, which to hide
  6. Translations: localizing the portal
  7. Header and footer customization
  8. Custom CSS and the escape hatch for the last 5%
  9. Mobile preview and what to test on a real phone
  10. The merchant preview vs the subscriber's view

A subscription portal at the default settings is technically functional and visibly off-brand. The skip button works. The colors are wrong. The copy says 'Manage your subscription' in the same voice every other subscription app uses. The login email comes from a third-party domain. Subscribers click in, see something that looks like a tool vendor's product instead of your store, and complete fewer actions than they would on a polished version. This guide is the practical how-to for closing that gap: configuring the custom domain, wiring DNS and SSL, matching the storefront branding, editing the copy in every language you sell in, deciding which actions to expose, and using the custom-CSS escape hatch when you need fine-tuned control. None of this is hard — most of it is a few clicks per setting — but doing it all is what turns a portal from 'enabled' into 'mine'.

Where to start: the merchant customization workflow

The customization order matters. Custom domain first, because everything else depends on which URL subscribers land on. Then branding (logo, colors, typography). Then copy. Then action permissions. Then translations. Then advanced customization (custom CSS, custom email templates). Doing them in this order means each step builds on the previous one and you don't have to redo work because a later setting overrode an earlier one.

Most of the work happens in the admin under Portal settings or Customer experience. The portal preview should update live as you change settings, which means you can iterate quickly — change a color, see the result, move on. Plan to spend about two hours on the initial setup if you want it polished, and another hour after launch reviewing what subscribers actually see in production.

Tip
Customize as a subscriber, not as a merchant

The admin preview is useful but slightly different from what a real subscriber sees. The fastest way to find polish issues is to create a real test subscription with a test card, get the magic-link login email, and click through the portal end-to-end on your phone. Things that look fine in the preview often have alignment or contrast issues on a real device.

Domain → branding → copy → permissions → translations → advanced. Do them in that order so each step builds on the last.

Wire up the custom domain (portal.yourstore.com)

The custom domain is the highest-impact single setting. portal.yourstore.com beats yourstore.subscriptionapp.com on every metric that matters — trust, completion rate, brand consistency, phishing-resistance. Setup is straightforward: pick the subdomain, add a CNAME, the app provisions SSL, you're done.

  1. In your portal settings, enter the subdomain you want (typically portal.yourstore.com, sometimes account.yourstore.com or subscriptions.yourstore.com)
  2. The app shows the target hostname to CNAME to — usually something like portal-origin.simplerecurring.com
  3. Open your DNS provider (Cloudflare, Route 53, GoDaddy, whichever) and create a CNAME record: portal.yourstore.com → portal-origin.simplerecurring.com
  4. If you're on Cloudflare, set the proxy status to DNS-only (grey cloud) — proxied (orange cloud) breaks the SSL handshake for most subscription portals
  5. Save the DNS record. Propagation typically takes 1–10 minutes; longer in rare cases
  6. Back in the portal settings, click Verify domain. The app provisions a Let's Encrypt SSL certificate automatically
  7. Once verification succeeds, the portal is live at your custom domain. Update the portal URL in your magic-link email template if it's not auto-updated
Watch out
Cloudflare proxy is the #1 setup gotcha

If you use Cloudflare for DNS, the default for new records is 'Proxied' (orange cloud). For subscription portals, this needs to be set to 'DNS only' (grey cloud) — otherwise Cloudflare's SSL terminates at their edge and the subscription app's certificate provisioning fails. If your verify-domain step keeps failing, this is almost always the cause.

SSL provisioning happens automatically once the CNAME resolves. The certificate auto-renews every 60–90 days; you don't need to manage it. If the renewal ever fails (rare — usually only when DNS changes), the app will email you before the certificate expires so you can fix it.

CNAME to the portal origin, set proxy off if on Cloudflare, verify in the admin, SSL provisions automatically.

Branding: logo, colors, typography

The branding settings tell the portal how to look. Upload your logo (SVG preferred for crisp rendering at every size), set the primary brand color (used for buttons, links, and accents), pick the typography (either from a built-in webfont list or by referencing your storefront's font URL), and decide on light vs dark theme defaults.

The single setting with the largest visual impact is typography. Default sans-serif portals look like generic tool products. A portal in your storefront's actual typeface — even before any other change — feels like part of the store. If your storefront uses a Google Font, the portal can usually import it directly via the font URL setting. If you use a custom-licensed typeface, you'll need to host the font files and add an @font-face declaration in the custom-CSS section.

  • Logo: SVG ideal, PNG acceptable. Transparent background. Sized to fit a 200px-wide container.
  • Primary color: used for buttons, action links, highlights. Pick the color from your brand guidelines, not 'close enough'.
  • Accent color: used for secondary buttons and badges. Usually a darker or lighter tint of the primary.
  • Typography: match your storefront font. Google Fonts work via URL import; custom fonts need @font-face in custom CSS.
  • Background and surface colors: light/dark theme presets, or override to match your storefront's neutrals.
  • Button style: rounded, sharp, or pill. Match what your storefront uses.
S
SubscriptionsRewardsReferralsGiftsAccount
My Subscriptions
Manage your subscription orders
Premium Coffee Blend
Every monthNext order: 2026-05-15
$39.00
Recommended subscriptions
Customers who buy Premium Coffee Blend also love these
🫘
Espresso Beans
Dark Italian · 250g
$26.00
+ Add
🥛
Oat Milk Creamer
1L carton
$14.00
+ Add
🍫
Hot Cocoa Mix
500g pouch
$18.00
+ Add
Branded portal — typography and color set to match the storefront, custom domain visible in the URL
Typography first, color second, logo third. Get the typography right and the portal looks like part of the store before any other tweak.

Edit the portal copy — your voice, not the default

Every visible string in the portal is editable: button labels, section headings, confirmation messages, empty states, magic-link email subject lines. The defaults are competent and generic. Your brand voice is specific. Subscribers who feel the portal speaks in your voice rather than a tool's voice complete more actions and have higher retention.

Focus the editing effort on the highest-traffic strings: the welcome message, the four primary action buttons (skip, swap, update card, cancel), the next-order-date label, the confirmation messages after each action, and the magic-link email. These account for maybe 80% of what subscribers actually read. The deep settings strings — error messages, edge-case empty states — can stay at defaults until you have time to polish them.

Tip
Write the copy you'd send by email

If a friend emailed asking how to skip their next box, you wouldn't reply 'Manage subscription'. You'd say 'Skip your next delivery? I can push it back to [date].' Write the portal copy the way you'd write a personal reply. The skip button can say 'Skip the next box' instead of 'Skip delivery'. The confirmation can say 'Done — see you on October 15th' instead of 'Skip successful'. Small changes; large warmth-difference.

Save the copy somewhere outside the portal admin (Notion, Google Doc, a markdown file in your team repo). Portal copy is the kind of thing you tune over months and refer back to. Having a source-of-truth means a teammate can update it later without having to reverse-engineer what was edited.

Edit the visible strings in your brand voice. Welcome message, action buttons, confirmations, magic-link email — these matter most.

Action permissions: which buttons to show, which to hide

Not every portal action makes sense for every subscription model. A prepaid annual subscription with a fixed product and fixed cadence has no use for a 'swap product' button — there's nothing to swap to. A trial-only subscription has no use for 'change frequency' because the trial duration is fixed. The permissions settings let you hide actions that don't apply, which simplifies the portal for subscribers and prevents support questions about non-functional buttons.

  • Skip next delivery — usually leave on. Hide only for fixed-cadence prepaid plans where skipping doesn't fit the model.
  • Swap product/variant — leave on if you have multiple SKUs in the subscribable catalog. Hide if you have one SKU.
  • Change frequency — leave on. The most under-used retention lever. Hide only for fixed-duration plans.
  • Pause — leave on. Configure max pause duration (60-90 days is typical) so subscriptions don't stall indefinitely.
  • Update payment method — always on. Required for involuntary churn recovery.
  • Update shipping address — always on. Address changes hit every store eventually.
  • Cancel — leave on. Hiding cancel triggers chargebacks, which are worse than cancellations.
Watch out
Never hide the cancel button

Some merchants try to reduce churn by removing the cancel button from the portal, forcing subscribers to email support. This trades a cancellation for a chargeback. Subscribers who can't self-cancel will dispute the next renewal charge with their bank — which costs you the renewal, a dispute fee, and (if you accumulate enough) your ability to take payments through that processor. California law (AB-390) requires a one-click cancel mechanism in the portal for online signups. Other states are following. Don't try to win this battle.

Hide actions that don't apply to your model. Never hide the cancel button — that trades cancellations for chargebacks.

Translations: localizing the portal

If you sell in more than one language, the portal needs to render in each one. Modern subscription portals support 10–14 languages out of the box with translated default copy. When you edit the English copy to match your brand voice, you'll typically want to edit the other languages too — automated translation of the default copy is okay but not great, and a subscriber reading machine-translated copy notices.

The portal usually picks the subscriber's language from the customer record on Shopify (set during checkout). Subscribers can override it from a language selector in the portal. Make sure the language selector is visible — subscribers who land on the wrong language often won't realize they can switch and will bounce instead.

  • Default languages typically include: English, Spanish, French, German, Italian, Portuguese, Dutch, Swedish, Danish, Norwegian, Finnish, Polish, Japanese, Chinese
  • Each language has the same set of editable strings — edit them per language to match your brand voice
  • The magic-link email also localizes — the subject line and body adjust based on subscriber's language
  • Date and currency formats follow the subscriber's locale (DD/MM/YYYY in EU, MM/DD/YYYY in US, etc.)
  • RTL languages (Arabic, Hebrew) flip layout direction automatically if supported

If you sell in a language the portal doesn't support out of the box, most apps let you add custom translations via a JSON file or per-string admin override. The work is one-time and shareable across stores that use the same app.

Edit the brand-voice copy in every language you sell in. Subscribers notice machine-translated default copy.

Custom CSS and the escape hatch for the last 5%

The default settings cover most customization needs. For the last 5% — pixel-precise alignment, custom interactions, brand-specific decorative elements — there's the custom-CSS field. This is an injection point at the bottom of the portal's stylesheet where you can override anything.

Use custom CSS sparingly. Every override creates a maintenance debt: when the subscription app updates the portal markup, your custom rules may need to update too. Reserve custom CSS for things you genuinely can't achieve with the settings — typography refinements that need a custom @font-face declaration, brand-specific decorative elements, custom hover states, animation tuning.

/* Example custom CSS — refine button hover state */
.portal-action-button:hover {
  transform: translateY(-1px);
  transition: transform 120ms ease-out;
  box-shadow: 0 4px 12px rgba(0,0,0,0.08);
}

/* Custom @font-face for a licensed brand typeface */
@font-face {
  font-family: 'BrandSans';
  src: url('https://cdn.yourstore.com/fonts/brand-sans.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
}

.portal-body { font-family: 'BrandSans', system-ui, sans-serif; }
Tip
Test custom CSS in the preview, then in production

Custom CSS can break the portal layout if it targets the wrong selector or specifies a property the portal depends on internally. Always test in the admin preview first, then in production with a real subscriber session on a real device. Keep a copy of the CSS in version control so you can revert quickly if a portal update breaks something.

Custom CSS is the escape hatch for the last 5%. Use it sparingly; keep changes in version control.

Mobile preview and what to test on a real phone

70%+ of portal traffic is mobile. Test there before declaring the customization done. The admin's mobile preview is useful for rough layout but it's not pixel-accurate to real devices — tap-target sensitivity, modal positioning, and scroll behaviour differ subtly.

  • Open the portal on a real iPhone (Safari) and a real Android (Chrome) — both render slightly differently
  • Test the four primary actions: skip, swap, card update, cancel — end to end, including confirmation screens
  • Tap targets should be at least 44px tall — if you've customized buttons, verify they still meet this
  • Modal confirmation dialogs should be fully visible without scrolling — test on a 4.7" iPhone screen specifically
  • Date pickers should open the native mobile picker, not a desktop dropdown
  • Magic-link email — open it on a phone and click through; some email clients open links in an in-app browser that breaks portal sessions

If you find mobile-specific issues, the custom CSS field supports media queries. Use @media (max-width: 768px) to override styles for mobile without affecting desktop.

Test on a real phone. The admin preview is a guideline; production-on-device is the truth.

The merchant preview vs the subscriber's view

The admin preview is rendered with mock data and merchant-side context. The actual subscriber view is rendered from a real subscription contract with real payment history, real upcoming orders, real shipping address. They mostly match — but a few things only show up correctly in the real view.

Things that look different in real-subscriber mode: the next-order-date pulls from the actual subscription contract (not a placeholder date), past orders show real prices and tax amounts, the card-update flow opens the real Shopify hosted payment surface, the cancel flow tracks against the actual retention-offer configuration. Always test as a real subscriber once before going live — create a $1 test subscription with a test card, complete each action, then cancel.

Checklist
Pre-launch real-subscriber checklist
  • Create a $1 test subscription using a test card (Shopify Bogus Gateway works)
  • Receive the magic-link email — open on phone, click through
  • Skip the next delivery — confirm date update reflects correctly
  • Swap the product — confirm subscription contract still intact, next billing date unchanged
  • Update the card to a different test card — confirm Shopify shows new card on contract
  • Attempt to cancel — confirm retention offer appears, reason capture works, win-back queues
  • Repeat the whole flow on a different language locale
  • Repeat the whole flow on a different device (iPhone Safari, Android Chrome)
The admin preview is approximate. Real-subscriber test on a real phone before launch is non-optional.

Portal customization FAQ

Can I hide the cancel button?

Technically yes, practically no. Hiding the cancel button forces subscribers to email support or, more commonly, dispute the next charge with their bank. Chargebacks are worse than cancellations on every metric — they cost you the revenue, plus a dispute fee, plus payment-processor risk if you accumulate enough. California law (AB-390) also requires a one-click cancel mechanism for online signups. Keep the button. Configure the retention flow before it instead.

Can I use my own subdomain?

Yes — portal.yourstore.com (or any subdomain you pick) is supported on every paid plan. Setup is a CNAME record in your DNS pointing to the app's origin, then a verify-domain step that provisions SSL automatically. Full setup is typically under 5 minutes once the CNAME propagates.

Is custom CSS supported?

Yes, via a custom-CSS field in the portal settings. Use it for refinements that aren't achievable with the standard settings — typography overrides, custom hover states, brand-specific decoration. Avoid overriding structural styles that the portal depends on internally, as they may change in future updates.

Can I edit copy per language?

Yes. Every visible string in the portal is editable per language. Edit the English version to match your brand voice, then either translate to your other languages manually or use the localization workflow most apps provide. Machine-translated default copy reads as machine-translated; brand-voice copy doesn't.

What happens when the SSL certificate expires?

It auto-renews. Let's Encrypt certificates (the default) renew every 60–90 days, and the subscription app handles the renewal automatically. If a renewal ever fails (rare — usually only when DNS records change), you'll get an email before expiry so you can fix it.

Can I add custom JavaScript?

Most apps don't support arbitrary JS injection because it's a security risk — XSS, session-token theft. If you need custom interaction beyond what the portal provides, the supported pattern is usually a custom-CSS field plus a small set of safe customization hooks (custom event listeners on specific actions). Ask your app vendor what's supported.

Can I change the magic-link email design?

Yes — the email template is editable. Most apps support either a WYSIWYG editor for the email body or a raw HTML template with merge fields for the magic-link URL, customer name, and store name. Make sure the email is sent from your own domain (SPF/DKIM/DMARC configured) so it lands in inboxes.

Can I have multiple portal configurations (one per market)?

Some apps support per-market or per-store-currency portal configurations — different branding, different actions, different languages defaulted per region. If you sell across multiple Shopify markets, check that your portal supports market-aware configuration before standardizing.

What if I make a customization that breaks the portal?

Custom CSS can occasionally break layout. Revert by clearing the custom CSS field; the portal returns to defaults instantly. For settings changes, the admin keeps a recent-changes log so you can see what was modified. Keep a copy of your custom CSS in version control so you can roll back quickly.

Can I preview customizations before publishing them live?

Yes — most portals have a preview mode that shows your changes without affecting real subscribers. You can iterate in preview, then publish when you're happy. Some apps also support a 'staging portal' on a different subdomain for testing major changes safely.

Does the portal inherit my storefront theme automatically?

Not automatically — themes are storefront-specific. But you can manually match the storefront by setting the portal to use the same typography, primary color, button radius, and so on. The result is a portal that visually matches the storefront without literally inheriting the theme files.

How long should the customization take?

Plan for 2 hours initial setup if you want it polished: 15 minutes for custom domain, 30 minutes for branding, 30 minutes for copy editing, 30 minutes for translations, 15 minutes for custom CSS refinement. Plus another hour after launch to review real-subscriber sessions and adjust.

The pillar

Read the complete Shopify Subscription App overview

Pricing, every feature, side-by-side comparison, FAQ — the single page that ties all these guides together.

Go to the pillar

Make the portal yours, not your subscription app's

SimpleSubscription includes brand-matched theming on Growth (custom domain on Premium). Free for up to 100 active subscribers, 14-day trial on paid plans, 10-minute install.

Install on Shopify

Start free · 14-day trial on paid plans · Zero transaction fees · Free migration