Subscriptions
Subscription products provide recurring billing with automatic renewals. Customers pay on a configured interval and retain access as long as the subscription is active.
How It Works
- A customer purchases a subscription product
- A subscription record is created with a renewal due date
- When payment is due, the customer is notified and an invoice is generated
- The customer pays the renewal invoice; the due date advances by one period
- If the subscription goes overdue, access (and any associated license key) is suspended
Subscription Statuses
| Status | Description |
|---|---|
| Active | Subscription is current and in good standing |
| Paused | Subscription is temporarily suspended by the admin |
| Cancelled | Subscription has been cancelled; access ends |
Admin Management
Navigate to Admin Panel > Subscriptions to view and manage all subscriptions.
The list shows customer name, product, price, status, next due date, and actions.
Pausing a Subscription
Pausing suspends billing and access temporarily without cancelling. The customer retains their subscription record and can be resumed later.
- Open the subscription detail page
- Click Pause Subscription
- The subscription status changes to Paused
- The customer receives a
SUBSCRIPTION_PAUSEDnotification
Resuming a Subscription
- Open the paused subscription detail page
- Click Resume Subscription
- Status returns to Active
- The customer receives a
SUBSCRIPTION_UPDATEDnotification
Cancelling a Subscription
- Open the subscription detail page
- Click Cancel Subscription
- Confirm cancellation
- Status changes to Cancelled
- The customer receives a
SUBSCRIPTION_CANCELLEDnotification
Plan Changes
Admins can change the plan (price or renewal period) on an active subscription:
- Open the subscription detail page
- Edit the plan details
- Save
- The customer receives a
SUBSCRIPTION_PLAN_CHANGEDnotification
Automated Billing
Shadow Store runs a daily scheduled job at 00:00 UTC to:
- Send payment due notifications 7 days before the due date
- Invoice is created alongside the notification
- Send payment due notifications 2 days before the due date
- Check for subscriptions that missed their due date on startup (catch-up on server restart)
License Key Suspension
If a subscription-linked product uses the License System, the license key is automatically suspended when the subscription is more than 3 days overdue. The key is re-enabled when the renewal invoice is paid.
Notifications
| Event | Channels |
|---|---|
SUBSCRIPTION_CREATED | Email, Discord DM, Webhook |
SUBSCRIPTION_UPDATED | Email, Discord DM, Webhook |
SUBSCRIPTION_CANCELLED | Email, Discord DM, Webhook |
SUBSCRIPTION_PAYMENT_DUE | Email, Discord DM, Webhook |
SUBSCRIPTION_PLAN_CHANGED | Email, Discord DM, Webhook |
SUBSCRIPTION_RENEWED | Email, Discord DM, Webhook |
SUBSCRIPTION_PAUSED | Email, Discord DM, Webhook |
Subscription Analytics
Subscription-specific metrics are available at Admin Panel > Analytics > Subscriptions:
- MRR (Monthly Recurring Revenue)
- ARR (Annual Recurring Revenue)
- Active / Paused / Cancelled count breakdown
- Monthly Churn Rate
- New subscribers and cancellations (last 30 days)
- Average subscription lifetime in days
- Recent subscriptions table
See Analytics for more details.
Permissions
| Permission | Access |
|---|---|
owner | Full access |
MANAGE_SUBSCRIPTIONS | View and manage customer subscriptions |