Why not just edit the existing product?
Technically Shoppex allows changing a product’stype (the type field is mutable on update).
But changing SERIALS to SUBSCRIPTION on a live product doesn’t carry over what you
actually need: there’s no automatic Stripe-plan creation, no migration of past buyers to the
new billing terms, no handling of pending serial deliveries.
The clean path is to create a new subscription product alongside the old one, then
deactivate the old one once customers have moved.
Step 1 — Create the subscription product
Open Products → New product:- Type: Subscription
- Title: the new name (e.g. “Pro Access — Monthly”)
- Price: monthly amount
- Billing interval: Day / Week / Month / Year (and a count, e.g. interval=Month, count=1 for monthly)
- Trial period: optional, up to 60 days
SERIALS, FILE,
SERVICE, or DYNAMIC content on each renewal.
Save. The subscription is live on your storefront.
Step 2 — Announce the change to existing buyers
Email or message your existing customer list. Be explicit:- The old product (one-time codes) is staying available through a specific date.
- The new subscription product is now live with [whatever benefits — lower per-month price, better access, automatic renewal].
- After the cutover date, only the subscription product will be sold.
Step 3 — Move the old buyers
There’s no automated way to convert a buyer’s past one-time purchase into a subscription — the payment method changed (one-off vs. recurring), the gateway agreement is different. The buyer has to actively subscribe. The most reliable way to nudge them: offer a discount coupon on first month of subscription, restricted to existing customers. Create the coupon at Discounts (/coupons):
- Type:
PERCENTAGE(orFIXED) - Value: whatever feels right (20-50% on first month is typical for migration)
validUntil: a hard cutoffmaxUses: total count to cap exposure
Step 4 — Wind down the old product
When the cutover date arrives, archive the old product (don’t delete — that breaks historical order references). From the old product’s settings, toggle it inactive. It disappears from your storefront but the past orders, delivered codes, and customer records all stay intact.What about Discord roles already granted?
If the old product granted a Discord role, those grants stay. The buyer keeps the role until you remove it manually. Most merchants either:- Let the old grants stand as a goodwill gesture (existing customers keep access forever).
- Set a date and bulk-revoke from the Discord side, with a clear announcement.