@include('livewire.admin.seodashboards.tab') {{-- Page title --}}

GSC Keywords Dashboard

Keywords from Google Search Console — ranked by end-date clicks

{{-- Flash Messages --}} @if (session()->has('error')) @endif {{-- Filter --}}
{{-- Fallback notice --}} @if($isFallback)
⚠ No date selected — showing last 30 days ({{ \Carbon\Carbon::parse($summary['date_from'])->format('d M Y') }} → {{ \Carbon\Carbon::parse($summary['date_to'])->format('d M Y') }})
@endif {{-- Active range --}}
Range: {{ \Carbon\Carbon::parse($summary['date_from'])->format('d M Y') }} → {{ \Carbon\Carbon::parse($summary['date_to'])->format('d M Y') }}  ·  End-day: {{ \Carbon\Carbon::parse($summary['date_1'])->format('d M Y') }}  ·  {{ number_format($summary['total_pairs']) }} keyword–page pairs  ·  {{ number_format($summary['total_queries']) }} unique queries @if(!empty($search))  ·  search: "{{ $search }}" @endif
{{-- ════════════════════════════════════════════════════════════════════ --}} {{-- SUMMARY CARDS --}} {{-- ════════════════════════════════════════════════════════════════════ --}}
Unique queries
{{ number_format($summary['total_queries']) }}
{{ number_format($summary['total_pairs']) }} pairs
Clicks — {{ \Carbon\Carbon::parse($summary['date_1'])->format('d M') }}
{{ number_format($summary['clicks_1d']) }}
end date · sort key
Clicks — range
{{ number_format($summary['grand_clicks']) }}
full period
Impressions — range
{{ number_format($summary['grand_impressions']) }}
full period
Avg position
{{ $summary['avg_position'] ?? '—' }}
across all queries
Avg CTR
{{ $summary['avg_ctr'] ? $summary['avg_ctr'] : '—' }}
across all queries
{{-- ════════════════════════════════════════════════════════════════════ --}} {{-- TOP CLICKS + TOP IMPRESSIONS STRIP --}} {{-- ════════════════════════════════════════════════════════════════════ --}}
{{-- Top 5 by clicks --}}
Top 5 by clicks (range)
@php $maxC = $topByClicks->max('total_clicks') ?: 1; @endphp @foreach($topByClicks as $i => $kw) @php $barW = round($kw->total_clicks / $maxC * 100); @endphp
{{ $i + 1 }} {{ $kw->query }}
{{ number_format($kw->total_clicks) }}
@endforeach
{{-- Top 5 by impressions --}}
Top 5 by impressions (range)
@php $maxI = $topByImpressions->max('total_impressions') ?: 1; @endphp @foreach($topByImpressions as $i => $kw) @php $barW = round($kw->total_impressions / $maxI * 100); @endphp
{{ $i + 1 }} {{ $kw->query }}
{{ number_format($kw->total_impressions) }}
@endforeach
{{-- ════════════════════════════════════════════════════════════════════ --}} {{-- MAIN TABLE --}} {{-- ════════════════════════════════════════════════════════════════════ --}}
@php $max1d = $paginator->max('clicks_1d') ?: 1; $maxRange = $paginator->max('clicks_range') ?: 1; $offset = ($paginator->currentPage() - 1) * $paginator->perPage(); @endphp @forelse($paginator as $index => $row) @php $bar1d = min(100, round($row->clicks_1d / $max1d * 100)); $barRange = min(100, round($row->clicks_range / $maxRange * 100)); $typeClass = 'kw-type-' . ($row->keyword_type ?? 0); @endphp {{-- Keyword + page --}} {{-- End-date clicks --}} {{-- Range clicks --}} {{-- Impressions range --}} {{-- Avg position — color-coded --}} {{-- CTR --}} @empty @endforelse
# Keyword & Page 24H Traffic {{ \Carbon\Carbon::parse($summary['date_1'])->format('d M Y') }} Traffic {{ \Carbon\Carbon::parse($summary['date_from'])->format('d M') }} – {{ \Carbon\Carbon::parse($summary['date_to'])->format('d M') }} Impressions Avg pos. CTR
{{ $offset + $loop->iteration }} {{ $row->query }}
{{ number_format($row->clicks_1d) }}
{{ $bar1d }}%
{{ number_format($row->impressions_1d) }} impr.
{{ number_format($row->clicks_range) }}
{{ $barRange }}%
avg {{ number_format($row->avg_clicks_per_day) }}/day
{{ number_format($row->impressions_range) }}
@if($row->avg_position) {{ $row->avg_position }} @else @endif {{ $row->avg_ctr ? $row->avg_ctr . '%' : '—' }}
No keywords found for this period.
{{-- Pagination --}} @if($paginator->hasPages()) @endif