{{-- Row 2: Subscriber Timeline Chart - Single row --}}
Subscriber Timeline
Subscriber Timeline
Description:
Shows subscriber counts over time in the selected period.
Exclusions:
Dates outside the range or missing subscriber IDs.
Formula:
COUNT(DISTINCT Subscriber Id) by date
Loading chart data...
{{-- Row 3: Active Subscriber Movement Chart - Single row --}}
{{-- Removed: Livewire component replaced with AJAX-based chart loading --}}
{{-- Row 4: Cohort Retention and Payment Health by Gateway - 8:4 split --}}
Cohort Retention
Cohort Retention
Description:
Retention by cohort over time based on subscriber activity.
Exclusions:
Cohorts with insufficient data or outside the date range.
Formula:
Cohort Retention % = Active in period / Cohort size à 100
Loading chart data...
Payment Health by Gateway
Payment Health by Gateway
Description:
Shows success and failure performance by gateway.
Exclusions:
Gateways with no activity in the selected period.
Formula:
Success % = Successful payments / Total payments à 100
Loading chart data...
{{-- Row 6: Churned Customers and Payment Failures - Side by side --}}
{{-- Removed: Livewire components replaced with AJAX-based widget loading --}}
@push('scripts')
@php
// Ensure session app_id is set from authenticated user before retrieving it
if (Auth::check()) {
$user = Auth::user();
if ($user && isset($user->app_id) && $user->app_id) {
session(['app_id' => $user->app_id]);
} else {
session()->forget('app_id');
}
} else {
session()->forget('app_id');
}
$currentAppId = \App\Helpers\QueryHelper::getAppId();
// Encrypt app_id for URL (same pattern as billing page)
$encryptedAppId = $currentAppId ? \App\Services\AppIdEncryptionService::encryptForUrl($currentAppId) : '';
@endphp
@endpush