Purchase Now
Subscription System

CoinTrail includes a complete subscription management system with three default tiers. Access subscription settings at Admin Panel > Subscriptions > Subscription Plans.

Screenshot: Overview of the subscription plans list in the admin panel showing all available tiers admin/subscriptions/plans-list-overview.png

The Subscription Plans list view showing Free, Premium, and Pro tiers with their status and pricing

Subscription Plans Overview

CoinTrail comes with three pre-configured subscription tiers designed to monetize your cryptocurrency tracking platform:

Free Tier

Basic access with limited features for new users to explore the platform.

Premium Tier

Enhanced features including portfolio tracking and ad-free experience.

Pro Tier

Full access with API integration, webhooks, and priority support.

Screenshot: Subscription plans management interface with actions menu for editing, duplicating, and deleting plans admin/subscriptions/plans-management.png

Managing subscription plans with quick actions for editing and configuration

Plan Features Comparison

The following table shows the default feature limits and capabilities for each subscription tier:

Feature Free Premium Pro
Price Alerts 5 50 Unlimited
Watchlist Items 20 100 500
Portfolio Tracking No Yes Yes
Number of Portfolios 0 3 10
Portfolio Holdings 0 Unlimited 5,000
API Access No No Yes (10,000 calls/mo)
Webhooks No No Yes (10 webhooks)
Ad-Free Experience No Yes Yes
Data Export No Yes Yes
Priority Support No No Yes
Screenshot: Feature configuration panel showing toggles and limit settings for a subscription plan admin/subscriptions/features-configuration.png

Configuring feature limits and toggles for each subscription tier

Creating a Subscription Plan

Follow these steps to create a new subscription plan or modify existing ones:

Important

Modifying plan features affects existing subscribers. Consider creating a new plan instead of modifying active ones.

Step 1: Navigate to Subscription Plans

Go to Admin Panel > Subscriptions > Subscription Plans and click the "Create Plan" button.

Step 2: Basic Information

Fill in the plan details:

Field Type Description
name String Display name (e.g., "Premium", "Pro", "Enterprise")
slug String URL-friendly identifier (e.g., "premium", "pro")
description Text Marketing description shown on pricing page
badge_color Color Hex color code for plan badges (e.g., #f59e0b)
icon String Icon identifier for the plan

Step 3: Configure Pricing

Set the pricing for different billing cycles:

Field Description Example
price_monthly Monthly subscription price 9.99
price_yearly Yearly subscription price (typically discounted) 99.99
currency Currency code for pricing USD, EUR, GBP
trial_days Free trial period in days (0 = no trial) 14
Screenshot: Pricing configuration form showing monthly and yearly pricing fields, currency selection, and trial period settings admin/subscriptions/pricing-configuration.png

Setting up pricing options with monthly, yearly rates, and free trial configuration

Step 4: Set Feature Limits

Configure the limits for each feature. Use -1 for unlimited:

// Feature limit configuration
max_price_alerts: 50       // Maximum price alerts (-1 for unlimited)
max_watchlist_items: 100   // Maximum watchlist coins
max_portfolios: 3          // Number of portfolios (0 = disabled)
max_portfolio_holdings: -1 // Holdings per portfolio (-1 = unlimited)
api_calls_per_month: 0     // API quota (0 = no API access)
max_webhooks: 0            // Webhook configurations

Step 5: Enable Feature Toggles

Toggle features on or off for the plan:

Toggle Description
has_portfolio Enable portfolio tracking feature
has_api_access Enable API access for developers
has_webhooks Enable webhook configurations
ad_free Remove advertisements
can_export Enable data export (CSV, PDF)
priority_support Priority support queue access

Managing User Subscriptions

Access user subscriptions at Admin Panel > Subscriptions > User Subscriptions.

Subscription Statuses

User subscriptions can have the following statuses:

Status Description User Access
Active Subscription is valid and paid Full plan features
Trial User is in free trial period Full plan features
Grace Period Payment failed, awaiting retry Full plan features (limited time)
Cancelled User cancelled subscription Access until period ends
Expired Subscription has ended Reverted to Free tier
Screenshot: User subscriptions list showing subscriber names, plans, status badges, and expiration dates admin/subscriptions/user-subscriptions-list.png

User subscriptions management view with status filters and quick actions

Manual Subscription Assignment

Administrators can manually assign subscriptions to users for various reasons:

  • Comp'd accounts for partners or influencers
  • Resolving payment issues
  • Customer service gestures
  • Testing and development purposes

To manually assign a subscription:

  1. Navigate to Admin Panel > Users
  2. Find and select the user
  3. Click "Assign Subscription" from the actions menu
  4. Select the plan and set the expiration date
  5. Save changes - the user will receive a notification email
Screenshot: Edit subscription form showing plan selection dropdown, status options, and expiration date picker admin/subscriptions/edit-subscription-form.png

Manually assigning or editing a user subscription with plan and expiration settings

Subscription Lifecycle

Understanding how subscriptions flow through different states:

New User Registration
        |
        v
    [FREE TIER] -----> [TRIAL] (if trial enabled)
        |                  |
        |  Purchase        |  Trial ends / Purchase
        v                  v
    [ACTIVE] <----------[ACTIVE]
        |
        |  Payment fails
        v
    [GRACE PERIOD] (3-7 days)
        |
        |  Payment fixed     User cancels
        v                        v
    [ACTIVE] <------------ [CANCELLED]
                                 |
                                 |  Period ends
                                 v
                             [EXPIRED] --> [FREE TIER]

Automatic Actions

  • Payment Success: Subscription activated, confirmation email sent
  • Payment Failed: Grace period starts (default: 3 days), notification sent
  • Subscription Expires: User reverted to Free tier, expiration email sent
  • User Cancels: Access continues until period end, cancellation confirmed
  • Upgrade: Immediate access to new tier, prorated charge
  • Downgrade: Takes effect at next billing cycle

SubscriptionService API

Use the SubscriptionService class to programmatically check user subscription status:

use App\Services\SubscriptionService;

class PriceAlertController extends Controller
{
    public function __construct(
        protected SubscriptionService $subscriptions
    ) {}

    public function store(Request $request)
    {
        $user = auth()->user();
        $currentCount = $user->priceAlerts()->count();

        // Check if user can create more alerts
        if (!$this->subscriptions->isWithinLimit($user, 'price_alerts', $currentCount)) {
            return back()->with('error', 'You have reached your price alert limit. Upgrade to add more.');
        }

        // Create the alert...
    }
}

Blade Directives

Use custom Blade directives for feature gating in views:

{{-- Check subscription tier --}}
@subscription('premium')
    <!-- Only visible to Premium and Pro users -->
    <div class="portfolio-widget">...</div>
@endsubscription

{{-- Check specific feature --}}
@feature('portfolio')
    <a href="/portfolio">My Portfolio</a>
@else
    <a href="/pricing" class="upgrade-prompt">
        Upgrade to unlock Portfolio
    </a>
@endfeature

{{-- Show ads only for free users --}}
@unless(auth()->user()->hasActiveSubscription())
    <div class="advertisement">...</div>
@endunless