PHPackages                             atldays/laravel-visitor - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. atldays/laravel-visitor

ActiveLibrary[Utility &amp; Helpers](/categories/utility)

atldays/laravel-visitor
=======================

Laravel package for resolving typed visitor information from the current request, including IP address, user agent, geo data, and configurable fingerprints.

v1.0.0(1mo ago)04MITPHPPHP ^8.2CI passing

Since Apr 20Pushed 5d agoCompare

[ Source](https://github.com/atldays/laravel-visitor)[ Packagist](https://packagist.org/packages/atldays/laravel-visitor)[ Docs](https://github.com/atldays/laravel-visitor)[ RSS](/packages/atldays-laravel-visitor/feed)WikiDiscussions master Synced 1w ago

READMEChangelog (2)Dependencies (10)Versions (3)Used By (0)

Laravel Visitor
===============

[](#laravel-visitor)

[![Latest Version on Packagist](https://camo.githubusercontent.com/62c3ab986798d9117795b6602d15063994b9752ab5b91b73ec782a8a01948a23/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f61746c646179732f6c61726176656c2d76697369746f722e7376673f6c6f676f3d7061636b6167697374267374796c653d666f722d7468652d6261646765)](https://packagist.org/packages/atldays/laravel-visitor)[![Total Downloads](https://camo.githubusercontent.com/ab2d2d7a5f318b11824a116513ca43935ae390fba0cacaf5f27547e212805ed4/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f61746c646179732f6c61726176656c2d76697369746f722e7376673f7374796c653d666f722d7468652d626164676526636f6c6f723d626c7565)](https://packagist.org/packages/atldays/laravel-visitor/stats)[![CI](https://camo.githubusercontent.com/71d88de770d0778293c983610b57cfb3248f7b97edec9fab9060c56613a7ffd6/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f616374696f6e732f776f726b666c6f772f7374617475732f61746c646179732f6c61726176656c2d76697369746f722f63692e796d6c3f7374796c653d666f722d7468652d6261646765266c6162656c3d4349)](https://github.com/atldays/laravel-visitor/actions/workflows/ci.yml)[![License: MIT](https://camo.githubusercontent.com/7a1226d14a365d288bfe51ece915ee0c7e754a16faa51ff06436504de29b33b4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d79656c6c6f772e7376673f7374796c653d666f722d7468652d6261646765)](LICENSE.md)

Resolve a full visitor profile from the current Laravel request.

`atldays/laravel-visitor` gives you a clean, typed abstraction over the most important visitor signals:

- IP address
- User-Agent
- preferred language and accepted languages
- parsed agent metadata through `atldays/laravel-agent`
- geo metadata through `atldays/laravel-geo`
- configurable fingerprint generation

It is designed to be the thin orchestration layer that connects those concerns into one consistent visitor object.

Why This Package
----------------

[](#why-this-package)

When you need to understand who is visiting your application, you usually end up stitching together several low-level request details by hand.

This package gives you one place to resolve:

- the raw visitor identity signals
- the parsed device and browser information
- the geo lookup result
- the language context
- a stable fingerprint strategy that you can customize

Installation
------------

[](#installation)

```
composer require atldays/laravel-visitor
```

Quick Start
-----------

[](#quick-start)

Resolve the current visitor through the manager:

```
use Atldays\Visitor\Facades\VisitorManager;

$visitor = VisitorManager::request();

$visitor->ip();
$visitor->userAgent();
$visitor->language()->language();
$visitor->language()->languages();
$visitor->fingerprint();
$visitor->agent();
$visitor->geo();
```

Resolve the current visitor directly from the request:

```
$visitor = request()->visitor();
```

Resolve the current visitor through the `Visitor` facade:

```
use Atldays\Visitor\Facades\Visitor;

Visitor::ip();
Visitor::userAgent();
Visitor::language();
Visitor::fingerprint();
Visitor::agent();
Visitor::geo();
```

Create a visitor manually:

```
use Atldays\Visitor\Facades\VisitorManager;

$visitor = VisitorManager::from(
    '8.8.8.8',
    'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/135.0.0.0 Safari/537.36',
    [
        'language' => 'en-US',
        'languages' => ['en-US', 'en'],
    ],
);
```

API Overview
------------

[](#api-overview)

### `VisitorManager`

[](#visitormanager)

Use `VisitorManager` when you want to resolve a full visitor object:

- `VisitorManager::request()`
- `VisitorManager::from($ip, $userAgent, $language = [])`

### `Visitor`

[](#visitor)

Use `Visitor` when you want quick access to the current resolved visitor:

- `Visitor::ip()`
- `Visitor::userAgent()`
- `Visitor::language()`
- `Visitor::fingerprint()`
- `Visitor::agent()`
- `Visitor::geo()`

Language Object
---------------

[](#language-object)

Language data is exposed as a dedicated DTO instead of plain strings scattered across the visitor object.

```
$language = $visitor->language();

$language->language();  // Most preferred language
$language->languages(); // All accepted languages in priority order
```

Fingerprint Driver
------------------

[](#fingerprint-driver)

By default, the package builds a fingerprint from the visitor IP address and User-Agent.

Use `Atldays\Visitor\Fingerprints\IpUserAgentGeo` when you want to include the geo provider, continent, country, and city in the fingerprint.

Publish the config file if you want to replace the default fingerprint driver:

```
php artisan vendor:publish --tag=visitor-config
```

You can replace the implementation in the config:

```
return [
    'fingerprint' => [
        'driver' => App\Support\Visitors\CustomFingerprint::class,
    ],
];
```

Your custom driver must implement `Atldays\Visitor\Contracts\FingerprintContract`.

Built On
--------

[](#built-on)

This package works as an orchestration layer on top of:

- [`atldays/laravel-agent`](https://github.com/atldays/laravel-agent)
- [`atldays/laravel-geo`](https://github.com/atldays/laravel-geo)

License
-------

[](#license)

The MIT License (MIT). Please see [LICENSE.md](LICENSE.md) for more information.

###  Health Score

40

—

FairBetter than 86% of packages

Maintenance95

Actively maintained with recent releases

Popularity5

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity47

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 100% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

50d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/d3d0138ffb1733c52bcd1602597088817ed576f8f9489a3b58095cf5c84264ca?d=identicon)[atldays](/maintainers/atldays)

---

Top Contributors

[![atldays](https://avatars.githubusercontent.com/u/130153594?v=4)](https://github.com/atldays "atldays (15 commits)")

---

Tags

fingerprintgeoiplaravelphpuseruser-agentvisitorlaravelIPuser agentvisitorgeoFingerprintatldays

###  Code Quality

TestsPHPUnit

Code StyleLaravel Pint

### Embed Badge

![Health badge](/badges/atldays-laravel-visitor/health.svg)

```
[![Health](https://phpackages.com/badges/atldays-laravel-visitor/health.svg)](https://phpackages.com/packages/atldays-laravel-visitor)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3325.1M337](/packages/psalm-plugin-laravel)[defstudio/telegraph

A laravel facade to interact with Telegram Bots

815320.5k3](/packages/defstudio-telegraph)[spatie/laravel-export

Create a static site bundle from a Laravel app

670139.5k6](/packages/spatie-laravel-export)[ralphjsmit/laravel-glide

Auto-magically generate responsive images from static image files.

4923.6k5](/packages/ralphjsmit-laravel-glide)[simplestats-io/laravel-client

Analytics for Laravel. Track visitors, registrations, and payments. Discover which channels actually drive revenue, not just traffic. Server-side, GDPR compliant, ad-blocker proof.

5019.3k](/packages/simplestats-io-laravel-client)[api-platform/laravel

API Platform support for Laravel

59156.3k10](/packages/api-platform-laravel)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
