@php $maxDaily = max(1, (int) ($daily->max('visits') ?? 0)); $labelEvery = max(1, (int) ceil(max(1, $daily->count()) / 12)); $peakDay = $daily->sortByDesc('visits')->first(); $chartWidth = max(760, $daily->count() * 34); $chartTicks = collect([1, .75, .5, .25, 0]) ->map(fn (float|int $ratio): int => (int) round($maxDaily * $ratio)); $uniqueRate = $visits > 0 ? round(($uniques / $visits) * 100, 1) : 0; $visitsPerCampaign = $campaigns > 0 ? round($visits / $campaigns, 1) : 0; @endphp @include('filament.pages.partials.analytics-dashboard-styles')
Aquisicao & campanhas

Acompanhe acessos identificados por UTM, gclid e fbclid até o pedido, o pagamento e a receita líquida.

Visitas totais
{{ number_format($visits) }}
Todos os acessos atribuidos no periodo
Visitas unicas
{{ number_format($uniques) }}
{{ $uniqueRate }}% das visitas registradas
Campanhas ativas
{{ number_format($campaigns) }}
{{ $visitsPerCampaign }} visitas em media por campanha
Visitantes
{{ number_format($visitors) }}
Pessoas distintas reconhecidas pelo navegador
@include('filament.pages.partials.campaign-funnel', [ 'funnelId' => 'campaign-overview-funnel', 'funnelTitle' => 'Funil comercial atribuído', 'funnelSubtitle' => 'Participantes únicos por etapa; pedidos e pagamentos são deduplicados por pedido.', ])

Evolucao diaria

Volume total e visitas unicas lado a lado, com escala fixa e detalhes ao passar o mouse.

@if ($peakDay && $peakDay['visits'] > 0)
Pico do periodo {{ number_format($peakDay['visits']) }} em {{ $peakDay['label'] }}
@else Sem atividade no periodo @endif
Visitas Unicas
@forelse ($daily as $day) @php $visitHeight = $day['visits'] > 0 ? max(3, round($day['visits'] / $maxDaily * 100, 2)) : 0; $uniqueHeight = $day['uniques'] > 0 ? max(3, round($day['uniques'] / $maxDaily * 100, 2)) : 0; @endphp
{{ $day['label'] }} {{ number_format($day['visits']) }} visitas · {{ number_format($day['uniques']) }} unicas
@empty
Sem visitas no periodo.
@endforelse
@if ($daily->isNotEmpty()) @endif

Campanhas no periodo

Desempenho consolidado por campanha, fonte e meio de aquisicao.

{{ number_format($rows->count()) }} campanhas
@forelse ($rows as $row) @php $campaignName = $row['utm_campaign'] !== '' ? $row['utm_campaign'] : '(sem nome)'; $rate = $row['visits'] > 0 ? round(($row['uniques'] / $row['visits']) * 100, 1) : 0; $campaignIds = collect($row['campaign_ids'])->take(2); @endphp @empty @endforelse
Campanha Fonte / meio Visitas Unicas Visitantes Pedidos Conversão Pagos Receita líquida Primeira Ultima Acoes
{{ $campaignName }}
@if ($campaignIds->isNotEmpty())
ID: {{ $campaignIds->join(', ') }}@if (count($row['campaign_ids']) > 2) +{{ count($row['campaign_ids']) - 2 }}@endif
@endif
{{ $row['utm_source'] !== '' ? $row['utm_source'] : 'direto' }} @if ($row['utm_medium']) / {{ $row['utm_medium'] }} @endif {{ number_format($row['visits']) }} {{ number_format($row['uniques']) }}
{{ $rate }}%
{{ number_format($row['visitors']) }} {{ number_format($row['orders']) }} {{ number_format($row['order_conversion_rate'], 1) }}% {{ number_format($row['paid_orders']) }} ${{ number_format($row['net_paid_revenue'], 2) }} {{ $row['first_visit'] ? \Illuminate\Support\Carbon::parse($row['first_visit'])->format('m/d/Y H:i') : '-' }} {{ $row['last_visit'] ? \Illuminate\Support\Carbon::parse($row['last_visit'])->format('m/d/Y H:i') : '-' }}
Detalhes @if ($row['campaign_visit_id'] !== null)
@csrf @method('DELETE') Apagar
@endif
Nenhuma campanha rastreada neste periodo
Use URLs com parâmetros UTM, gclid ou fbclid.