Creator Subscription Packages
Overview
The Admin Creator Subscription Packages page manages the subscription package templates that creators can offer to their fans. These templates define the standard subscription tiers available platform-wide, ensuring consistency while allowing creators to enable/disable tiers for their profiles.
Key capabilities include:
- Create and manage subscription package templates
- Set dual pricing (USD and tokens)
- Define benefits for each package tier
- Control which packages creators can offer
- Track usage statistics (how many creators offer each package)
- Enable/disable packages without deletion
- Reorder packages for display priority
System Requirements
PHP Requirements
PHP Extensions Required
mysqli- Database connectivityjson- JSON encoding for benefits arraysession- Session management for CSRF protection
PHP Settings
session.autostart = Off
date.timezone = Your/Timezone
Features & UI Elements
Page Header
[Screenshot: creator-packages-header]
The page header displays:
- Title: "Creator Subscription Packages"
- Icon:
fa-user-star(user with star icon) - Breadcrumb: Dashboard / Billing / Creator Subscription Packages
- Back to Access Packages link
Alert Messages
Success and error messages appear below the header:
- Success (green): "Package created successfully", "Package updated successfully"
- Error (red): "Invalid security token", "Package name is required"
Package Statistics
[Screenshot: creator-packages-stats]
Three statistics cards showing overview:
Packages Table
[Screenshot: creator-packages-table]
The main packages display table:
Badge Preview: Each package row shows the badge as it will appear:
- Background color matching
badgecolor - Icon from
badgeicon - Package name text
Add/Edit Package Form
[Screenshot: creator-packages-form]
A form to create or edit package templates:
Basic Information:
Pricing:
Benefits:
Display Options:
Benefits Editor
[Screenshot: creator-packages-benefits]
The benefits section uses a dynamic list:
- Each benefit is a single text input
- "Add Benefit" button adds new empty input
- Remove (X) button next to each benefit
- Benefits stored as JSON array in database
- Displayed as bullet points on creator profiles
Badge Preview
[Screenshot: creator-packages-badge-preview]
Live preview of the package badge:
- Updates as you change color and icon
- Shows how badge will appear on subscriptions
- Helps ensure visual consistency
Step-by-Step Usage
Creating a New Package Template
- Navigate to Admin Panel → Billing → Creator Subscription Packages
- Click Add Package button
- Fill in the form:
Example Gold Package:
- Package Name: "Gold"
- Description: "Premium subscription with VIP perks"
- Price (USD): 19.99
- Price (Tokens): 200
- Duration: 30
- Recurring: Checked
- Benefits:
- "All Silver benefits"
- "Custom content requests"
- "Behind-the-scenes access"
- "Exclusive live streams"
- Badge Color: #FFD700 (gold)
- Badge Icon: fa-crown
- Display Order: 3
- Active: Checked
- Click Save Package
Editing an Existing Package
- Find the package in the table
- Click the Edit button (pencil icon)
- Form populates with current values
- Make desired changes
- Click Update Package
Managing Benefits
Adding Benefits:
- In the package form, scroll to Benefits section
- Click Add Benefit
- Enter benefit text in new input
- Repeat for additional benefits
Removing Benefits:
- Find the benefit to remove
- Click the X button next to it
- Benefit is removed from the list
Ordering Benefits:
- Benefits display in the order listed
- Most important benefits should be first
- Consider using "All [Lower Tier] benefits" for higher tiers
Setting Up Package Tiers
A typical tiered structure:
Best Practices:
- Maintain consistent price jumps (roughly 2x each tier)
- Each tier should include all lower tier benefits
- Higher tiers need tangible unique benefits
- Don't create too many tiers (3-4 is optimal)
Duplicating a Package
- Find the package to duplicate
- Click the Duplicate button (copy icon)
- Form opens with copied values
- Modify as needed (change name, price)
- Click Save Package
Deactivating a Package
- Find the package in the table
- Click the status toggle or Edit button
- Uncheck the Active checkbox
- Save changes
Effects of Deactivation:
- Creators can no longer offer this package
- Existing subscriptions continue until expiry
- Package hidden from creator settings
- Can be reactivated at any time
Deleting a Package
- Find the package in the table
- Click the Delete button (trash icon)
- Confirm the deletion
Reordering Packages
- Note the Display Order column
- Edit each package to set desired order
- Lower numbers appear first
- Save each package after updating
Recommended Order:
- Lowest price tier first (entry point)
- Progress through to highest tier
- Featured/promoted tier can be highlighted separately
Best Practices
Pricing Strategy
Price Anchoring:
- Show highest tier first (mentally anchors value)
- Highlight middle tier as "Most Popular"
- Lowest tier serves as entry point
Token Pricing:
- Token price should offer slight discount vs USD
- Encourages token purchases (pre-commitment)
- Example: $9.99 = 100 tokens ($0.10/token = 10% savings)
Regional Considerations:
- USD pricing for international reach
- Token pricing helps normalize across currencies
- Consider purchasing power differences
Benefit Structure
Tier 1 (Basic):
- Content access
- Basic interaction (likes, comments)
- Subscriber recognition (badge)
Tier 2 (Standard):
- All Tier 1 benefits
- Priority features (early access, priority replies)
- Bonus content (monthly extras)
Tier 3 (Premium):
- All Tier 2 benefits
- Personalization (custom content, requests)
- Exclusive access (private content, streams)
Tier 4 (VIP):
- All Tier 3 benefits
- Personal engagement (video calls, direct access)
- Physical perks (merch discounts, meet & greets)
Badge Design
Color Guidelines:
Icon Selection:
- Use progression: fa-medal → fa-award → fa-crown → fa-gem
- Keep icons recognizable at small sizes
- Solid icons work better than outline
Troubleshooting
Common Issues
Package Not Appearing for Creators
Cause: Package inactive or creator hasn't enabled it
Solutions:
Verify Active checkbox is checkedCheck tblCreatorOfferedPackages for creator's selectionsEnsure creator profile is verified
- Check displayorder isn't pushing it off-screen
Benefits Not Saving
Cause: JSON encoding issue or empty benefits
Solutions:
- Check for special characters in benefit text
- Remove empty benefit inputs before saving
- Verify benefits JSON in database:
SELECT packageid, benefits, JSONVALID(benefits) as valid
FROM tblCreatorSubscriptionPackages;
Badge Color Not Displaying
Cause: Invalid hex color format
Solutions:
- Ensure color includes # prefix (e.g., #FFD700)
- Use 6-digit hex format
- Clear browser cache
- Check CSS for conflicting styles
Cannot Delete Package
Cause: Package has active subscriptions
Solutions:
- Check for active subscriptions:
SELECT COUNT() FROM tblCreatorSubscriptions
WHERE packageid = ? AND status = 'active';
- Deactivate package instead of deleting
- Wait for subscriptions to expire naturally
- Or migrate subscriptions to different package first
Database Issues
Missing Packages in Dropdown
Cause: Package deleted or inactive
Solution:
-- Check all packages regardless of status
SELECT packageid, packagename, isactive
FROM tblCreatorSubscriptionPackages
ORDER BY displayorder;
-- Find orphaned references
SELECT cop. FROM tblCreatorOfferedPackages cop
LEFT JOIN tblCreatorSubscriptionPackages csp
ON cop.packageid = csp.packageid
WHERE csp.packageid IS NULL;
Duplicate Package Names
Cause: No unique constraint on names
Solution:
-- Find duplicates
SELECT packagename, COUNT(*) as count
FROM tblCreatorSubscriptionPackages
GROUP BY packagename
HAVING count > 1;
-- Rename duplicates or merge
Security Considerations
CSRF Protection
All form submissions include CSRF token validation:
if ($POST['csrftoken'] !== $SESSION['admincsrftoken']) {
die('Invalid security token');
}
Input Validation
- Package names sanitized (HTML special chars)
- Prices validated as positive decimals
- Duration validated as positive integer
- Benefits array validated before JSON encoding
- Icon classes validated against allowed list
Price Manipulation Prevention
- Prices stored server-side only
- Frontend displays for reference
- Backend validates all pricing calculations
- Token/USD exchange rate centrally managed
Translatable Strings
{
"creatorpackagestitle": "Creator Subscription Packages",
"creatorpackagesbreadcrumb": "Dashboard / Billing / Creator Subscription Packages",
"creatorpackagesback": "Back to Access Packages",
"creatorpackagesstattotal": "Total Packages",
"creatorpackagesstatactive": "Active Packages",
"creatorpackagesstatcreators": "Creators Using",
"creatorpackagesadd": "Add Package",
"creatorpackagesedit": "Edit Package",
"creatorpackagestableorder": "Order",
"creatorpackagestablename": "Name",
"creatorpackagestabledescription": "Description",
"creatorpackagestablepriceusd": "Price (USD)",
"creatorpackagestablepricetokens": "Price (Tokens)",
"creatorpackagestableduration": "Duration",
"creatorpackagestablerecurring": "Recurring",
"creatorpackagestablebenefits": "Benefits",
"creatorpackagestablecreators": "Creators",
"creatorpackagestablestatus": "Status",
"creatorpackagestableactions": "Actions",
"creatorpackagesformname": "Package Name",
"creatorpackagesformdescription": "Description",
"creatorpackagesformpriceusd": "Price (USD)",
"creatorpackagesformpricetokens": "Price (Tokens)",
"creatorpackagesformduration": "Duration (days)",
"creatorpackagesformrecurring": "Recurring (Auto-renew)",
"creatorpackagesformbenefits": "Benefits",
"creatorpackagesformaddbenefit": "Add Benefit",
"creatorpackagesformremovebenefit": "Remove",
"creatorpackagesformbadgecolor": "Badge Color",
"creatorpackagesformbadgeicon": "Badge Icon",
"creatorpackagesformdisplayorder": "Display Order",
"creatorpackagesformactive": "Active",
"creatorpackagesformsave": "Save Package",
"creatorpackagesformupdate": "Update Package",
"creatorpackagesformcancel": "Cancel",
"creatorpackagesstatusactive": "Active",
"creatorpackagesstatusinactive": "Inactive",
"creatorpackagesduplicate": "Duplicate",
"creatorpackagesdelete": "Delete",
"creatorpackagesdeleteconfirm": "Are you sure you want to delete this package? This cannot be undone.",
"creatorpackagesdeletehassubscriptions": "Cannot delete package with active subscriptions. Deactivate instead.",
"creatorpackagescreatedsuccess": "Package created successfully",
"creatorpackagesupdatedsuccess": "Package updated successfully",
"creatorpackagesdeletedsuccess": "Package deleted successfully",
"creatorpackagesduplicatedsuccess": "Package duplicated successfully",
"creatorpackageserrorcsrf": "Invalid security token",
"creatorpackageserrornotfound": "Package not found",
"creatorpackageserrornamerequired": "Package name is required",
"creatorpackageserrorpricerequired": "Price is required",
"creatorpackagesnopackages": "No packages found",
"creatorpackagesdays": "days",
"creatorpackagesyes": "Yes",
"creatorpackagesno": "No",
"creatorpackagespreview": "Badge Preview"
}
Related Documentation
- Access Packages - Site-wide access packages
- Payment Providers - Payment provider configuration
- Creator Profiles - Creator account management
- Billing Transactions - Transaction tracking