@extends('layouts.app') @section('title', 'Dashboard') @section('content')
{{-- Health banners --}} @unless ($cronHealthy)

Cron does not appear to be running.

No scheduler heartbeat in the last 10 minutes — campaigns and imports will not process. Check the cPanel cron job. System status →

@endunless @unless ($providerConfigured)

Email provider not configured. Add your {{ $providerName }} credentials under Settings → Email Provider before sending campaigns.

@endunless {{-- Contact stats --}}

Contacts

{{-- Campaign + email stats --}}

Sending

{{-- Engagement + charts --}}

Emails sent — last 14 days

Engagement

@foreach ([ ['Open rate (approx.)', $rates['open'].'%', $rates['open']], ['Click rate', $rates['click'].'%', $rates['click']], ['Unsubscribe rate', $rates['unsubscribe'].'%', $rates['unsubscribe']], ] as [$label, $display, $val])
{{ $label }}
{{ $display }}
@endforeach

Open tracking is approximate — privacy features in modern email clients pre-load images, so real open rates may differ.

{{-- Sending progress --}} @if ($sendingCampaigns->isNotEmpty())

Currently sending

@foreach ($sendingCampaigns as $campaign)
{{ $campaign->name }} {{ number_format($campaign->sent_count) }} / {{ number_format($campaign->total_recipients) }} · {{ $campaign->progressPercent() }}%
@endforeach
@endif {{-- Recent activity --}}

Recent campaigns

Recent imports

Recent unsubscribes

    @forelse ($recentUnsubscribes as $unsubscribe)
  • {{ $unsubscribe->email_normalized }}

    {{ $unsubscribe->unsubscribed_at->diffForHumans() }}

  • @empty
  • No unsubscribes yet.
  • @endforelse
@endsection @push('scripts') @endpush