Unique IPs

{{ number_format($unique_summary['ips'] ?? 0) }}

Unique visitors

{{ number_format($unique_summary['visitors'] ?? 0) }}

Unique sessions

{{ number_format($unique_summary['sessions'] ?? 0) }}

Unique by IP address

Ranked by event volume — legacy hashed IPs shown truncated

@forelse($unique_by_ip ?? [] as $row) @php $ip = (string) $row->ip_address; $hashed = strlen($ip) === 64 && !str_contains($ip, '.') && !str_contains($ip, ':'); @endphp @empty @endforelse
IP address Country City Device Events Sessions First seen Last seen
{{ $hashed ? Str::limit($ip, 14).'… (hash)' : $ip }} {{ $row->country ?: '—' }} {{ $row->city ?: '—' }} {{ $row->device_type ?: '—' }} {{ number_format($row->events) }} {{ number_format($row->sessions) }} {{ $row->first_seen ? \Illuminate\Support\Carbon::parse($row->first_seen)->format('M j H:i') : '—' }} {{ $row->last_seen ? \Illuminate\Support\Carbon::parse($row->last_seen)->format('M j H:i') : '—' }}
No IP data yet.

Unique by visitor ID

Persistent client ID across sessions (cookie / localStorage)

@forelse($unique_by_visitor ?? [] as $row) @empty @endforelse
Visitor ID Location Events Sessions Active days First Last
{{ Str::limit($row->visitor_id, 22) }} {{ collect([$row->city, $row->country])->filter()->implode(', ') ?: '—' }} {{ number_format($row->events) }} {{ number_format($row->sessions) }} {{ number_format($row->active_days) }} {{ $row->first_seen ? \Illuminate\Support\Carbon::parse($row->first_seen)->diffForHumans() : '—' }} {{ $row->last_seen ? \Illuminate\Support\Carbon::parse($row->last_seen)->diffForHumans() : '—' }}
Visitor IDs appear after the upgraded tracker ships page views.