PHPackages                             anshu8858/tracker - 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. [Logging &amp; Monitoring](/categories/logging)
4. /
5. anshu8858/tracker

ActiveLibrary[Logging &amp; Monitoring](/categories/logging)

anshu8858/tracker
=================

A Laravel Visitor Tracker Forked from Antonio Carlos Ribeiro

v4.0.1(5y ago)015MITPHPPHP &gt;=7.0

Since May 26Pushed 5y agoCompare

[ Source](https://github.com/anshu8858/tracker)[ Packagist](https://packagist.org/packages/anshu8858/tracker)[ RSS](/packages/anshu8858-tracker/feed)WikiDiscussions master Synced 4w ago

READMEChangelog (1)Dependencies (11)Versions (76)Used By (0)

Laravel Stats Tracker
=====================

[](#laravel-stats-tracker)

[![Latest Stable Version](https://camo.githubusercontent.com/4ce9de8dca5e984d6125718cb129e81459adc738e4f1634b47efa20484d510f1/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616e736875383835382f747261636b65722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/anshu8858/tracker) [![License](https://camo.githubusercontent.com/a7d953c880516e66cbc40f3833498c010255e60ca0142114a22829dc66fe28e4/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4253445f335f436c617573652d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE) [![Downloads](https://camo.githubusercontent.com/6f99dbc63efe9c73660eb6690f99804ba50bd1ec43daf2dbc02bc9fd924617c9/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616e736875383835382f747261636b65722e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/anshu8858/tracker)

### Tracker gathers a lot of information from your requests to identify and store:

[](#tracker-gathers-a-lot-of-information-from-your-requests-to-identify-and-store)

- **Sessions**
- **Page Views (hits on routes)**
- **Users (logged users)**
- **Devices** (computer, smartphone, tablet...)
- **Languages** (preference, language range)
- **User Devices** (by, yeah, storing a cookie on each device)
- **Browsers** (Chrome, Mozilla Firefox, Safari, Internet Explorer...)
- **Operating Systems** (iOS, Mac OS, Linux, Windows...)
- **Geo Location Data** (Latitute, Longitude, Country and City)
- **Routes and all its parameters**
- **Events**
- **Referers** (url, medium, source, search term...)
- **Exceptions/Errors**
- **Sql queries and all its bindings**
- **Url queries and all its arguments**
- **Database connections**

Index
-----

[](#index)

- [Why?](#why)
- [How To Use It](#usage)
- [Table Schemas](#how-data-is-stored)
- [System Requirements](#requirements)
- [Installing](#installing)
- [Upgrading](upgrading.md)
- [Changelog](changelog.md)
- [Contributing](#contributing)

Why?
----

[](#why)

Storing user tracking information, on indexed and normalized database tables, wastes less disk space and ease the extract of valuable information about your application and business.

Usage
-----

[](#usage)

As soon as you install and enable it, Tracker will start storing all information you tell it to, then you can in your application use the Tracker Facade to access everything. Here are some of the methods and relationships available:

#### Current Session/Visitor

[](#current-sessionvisitor)

```
$visitor = Tracker::currentSession();
```

Most of those methods return an Eloquent model or collection, so you can use not only its attributes, but also relational data:

```
var_dump( $visitor->client_ip );
var_dump( $visitor->device->is_mobile );
var_dump( $visitor->device->platform );
var_dump( $visitor->geoIp->city );
var_dump( $visitor->language->preference );
```

#### Sessions (visits)

[](#sessions-visits)

```
$sessions = Tracker::sessions(60 * 24); // get sessions (visits) from the past day
```

```
foreach ($sessions as $session)
{
    var_dump( $session->user->email );
    var_dump( $session->device->kind . ' - ' . $session->device->platform );
    var_dump( $session->agent->browser . ' - ' . $session->agent->browser_version );
    var_dump( $session->geoIp->country_name );
    foreach ($session->session->log as $log)
    {
    	var_dump( $log->path );
    }
}
```

#### Online Users

[](#online-users)

Brings all online sessions (logged and unlogged users)

```
$users = Tracker::onlineUsers(); // defaults to 3 minutes
```

#### Users

[](#users)

```
$users = Tracker::users(60 * 24);
```

#### User Devices

[](#user-devices)

```
$users = Tracker::userDevices(60 * 24, $user->id);
```

#### Events

[](#events)

```
$events = Tracker::events(60 * 24);
```

#### Errors

[](#errors)

```
$errors = Tracker::errors(60 * 24);
```

#### PageViews summary

[](#pageviews-summary)

```
$pageViews = Tracker::pageViews(60 * 24 * 30);
```

#### PageViews By Country summary

[](#pageviews-by-country-summary)

```
$pageViews = Tracker::pageViewsByCountry(60 * 24);
```

#### Filter range

[](#filter-range)

You can send timestamp ranges to those methods using the Minutes class:

```
$range = new Minutes();

$range->setStart(Carbon::now()->subDays(2));
$range->setEnd(Carbon::now()->subDays(1));

Tracker::userDevices($range);
```

#### Routes By Name

[](#routes-by-name)

Having a route of

```
Route::get('user/{id}', ['as' => 'user.profile', 'use' => 'UsersController@profile']);
```

You can use this method to select all hits on that particular route and count them using Laravel:

```
return Tracker::logByRouteName('user.profile')
        ->where(function($query)
        {
            $query
                ->where('parameter', 'id')
                ->where('value', 1);
        })
        ->count();
```

And if you need count how many unique visitors accessed that route, you can do:

```
return Tracker::logByRouteName('tracker.stats.log')
        ->where(function($query)
        {
            $query
                ->where('parameter', 'uuid')
                ->where('value', '8b6faf82-00f1-4db9-88ad-32e58cfb4f9d');
        })
        ->select('tracker_log.session_id')
        ->groupBy('tracker_log.session_id')
        ->distinct()
        ->count('tracker_log.session_id');
```

How data is stored
------------------

[](#how-data-is-stored)

All tables are prefixed by `tracker_`, and here's an extract of some of them, showing columns and contents:

### sessions

[](#sessions)

```
+-----+--------------------------------------+---------+-----------+----------+-----------------+------------+-----------+----------+-------------+
| id  | uuid                                 | user_id | device_id | agent_id | client_ip       | referer_id | cookie_id | geoip_id | language_id |
+-----+--------------------------------------+---------+-----------+----------+-----------------+------------+-----------+----------+-------------+
| 1   | 09465be3-5930-4581-8711-5161f62c4373 | 1       | 1         | 1        | 186.228.127.245 | 2          | 1         | 2        | 3           |
| 2   | 07399969-0a19-47f0-862d-43b06d7cde45 |         | 2         | 2        | 66.240.192.138  |            | 2         | 2        | 2           |
+-----+--------------------------------------+---------+-----------+----------+-----------------+------------+-----------+----------+-------------+

```

### devices

[](#devices)

```
+----+----------+-------------+-------------+------------------+-----------+
| id | kind     | model       | platform    | platform_version | is_mobile |
+----+----------+-------------+-------------+------------------+-----------+
| 1  | Computer | unavailable | Windows 8   |                  |           |
| 2  | Tablet   | iPad        | iOS         | 7.1.1            | 1         |
| 3  | Computer | unavailable | Windows XP  |                  |           |
| 5  | Computer | unavailable | Other       |                  |           |
| 6  | Computer | unavailable | Windows 7   |                  |           |
| 7  | Computer | unavailable | Windows 8.1 |                  |           |
| 8  | Phone    | iPhone      | iOS         | 7.1              | 1         |
+----+----------+-------------+-------------+------------------+-----------+

```

### agents

[](#agents)

```
+----+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------+-----------------+
| id | name                                                                                                                                    | browser           | browser_version |
+----+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------+-----------------+
| 1  | Mozilla/5.0 (Windows NT 6.2; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36                           | Chrome            | 35.0.1916       |
| 2  | Mozilla/5.0 (iPad; CPU OS 7_1_1 like Mac OS X) AppleWebKit/537.51.1 (KHTML, like Gecko) CriOS/34.0.1847.18 Mobile/11D201 Safari/9537.53 | Chrome Mobile iOS | 34.0.1847       |
| 3  | Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)                                                                                      | IE                | 6.0             |
+----+-----------------------------------------------------------------------------------------------------------------------------------------+-------------------+-----------------+

```

### languages

[](#languages)

```
+----+------------+----------------+
| id | preference | language_range |
+----+------------+----------------+
| 1  | en         | ru=0.8,es=0.5  |
| 2  | es         | en=0.7,ru=0.3  |
| 3  | ru         | en=0.5,es=0.5  |
+----+------------+----------------+

```

### domains

[](#domains)

```
+----+--------------------------+
| id | name                     |
+----+--------------------------+
| 1  | antoniocarlosribeiro.com |
+----+--------------------------+

```

### errors

[](#errors-1)

```
+----+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| id | code | message                                                                                                                                                                                                                      |
+----+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| 1  | 404  |                                                                                                                                                                                                                              |
| 2  | 500  | Call to undefined method PragmaRX\Tracker\Tracker::sessionLog()                                                                                                                                                              |
| 3  | 500  | Trying to get property of non-object (View: /home/forge/stage.antoniocarlosribeiro.com/app/views/admin/tracker/log.blade.php)                                                                                                |
| 4  | 500  | syntax error, unexpected 'foreach' (T_FOREACH)                                                                                                                                                                               |
| 5  | 500  | Call to undefined method PragmaRX\Tracker\Tracker::pageViewsByCountry()                                                                                                                                                      |
| 6  | 500  | Class PragmaRX\Firewall\Vendor\Laravel\Artisan\Base contains 1 abstract method and must therefore be declared abstract or implement the remaining methods (Illuminate\Console\Command::fire)                                 |
+----+------+------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

```

### events

[](#events-1)

```
+----+------------------------------------------------+
| id | name                                           |
+----+------------------------------------------------+
| 1  | illuminate.log                                 |
| 2  | router.before                                  |
| 3  | router.matched                                 |
| 4  | auth.attempt                                   |
| 5  | auth.login                                     |
| 6  | composing: admin.tracker.index                 |
| 7  | creating: admin.tracker._partials.menu         |
| 8  | composing: admin.tracker._partials.menu        |
+----+------------------------------------------------+

```

### geoip

[](#geoip)

```
+----+----------+-----------+--------------+---------------+---------------------------+--------+----------------+-------------+-----------+----------+------------+----------------+
| id | latitude | longitude | country_code | country_code3 | country_name              | region | city           | postal_code | area_code | dma_code | metro_code | continent_code |
+----+----------+-----------+--------------+---------------+---------------------------+--------+----------------+-------------+-----------+----------+------------+----------------+
| 1  | 37.4192  | -122.057  | US           | USA           | United States             | CA     | Mountain View  | 94043       | 650       | 807      | 807        | NA             |
| 2  | -10      | -55       | BR           | BRA           | Brazil                    |        |                |             |           |          |            | SA             |
| 3  | 30.3909  | -86.3161  | US           | USA           | United States             | FL     | Miramar Beach  | 32550       | 850       | 686      | 686        | NA             |
| 4  | 38.65    | -90.5334  | US           | USA           | United States             | MO     | Chesterfield   | 63017       | 314       | 609      | 609        | NA             |
| 5  | 42.7257  | -84.636   | US           | USA           | United States             | MI     | Lansing        | 48917       | 517       | 551      | 551        | NA             |
| 6  | 42.8884  | -78.8761  | US           | USA           | United States             | NY     | Buffalo        | 14202       | 716       | 514      | 514        | NA             |
+----+----------+-----------+--------------+---------------+---------------------------+--------+----------------+-------------+-----------+----------+------------+----------------+

```

### log

[](#log)

```
+-----+------------+---------+----------+--------+---------------+---------+-----------+---------+------------+----------+
| id  | session_id | path_id | query_id | method | route_path_id | is_ajax | is_secure | is_json | wants_json | error_id |
+-----+------------+---------+----------+--------+---------------+---------+-----------+---------+------------+----------+
| 1   | 1          | 1       |          | GET    | 1             |         | 1         |         |            |          |
| 2   | 1          | 2       |          | GET    | 2             |         | 1         |         |            |          |
| 3   | 1          | 3       |          | GET    | 3             |         | 1         |         |            |          |
| 4   | 1          | 3       |          | POST   | 4             |         | 1         |         |            |          |
+-----+------------+---------+----------+--------+---------------+---------+-----------+---------+------------+----------+

```

### paths

[](#paths)

```
+----+--------------------------------------------------------+
| id | path                                                   |
+----+--------------------------------------------------------+
| 1  | /                                                      |
| 2  | admin                                                  |
| 3  | login                                                  |
| 4  | admin/languages                                        |
| 5  | admin/tracker                                          |
| 6  | admin/pages                                            |
+----+--------------------------------------------------------+

```

### route\_paths

[](#route_paths)

```
+----+----------+--------------------------------------------------------+
| id | route_id | path                                                   |
+----+----------+--------------------------------------------------------+
| 1  | 1        | /                                                      |
| 2  | 2        | admin                                                  |
| 3  | 3        | login                                                  |
| 4  | 4        | login                                                  |
+----+----------+--------------------------------------------------------+

```

### routes

[](#routes)

```
+----+--------------------------------------+----------------------------------------------------------+
| id | name                                 | action                                                   |
+----+--------------------------------------+----------------------------------------------------------+
| 1  | home                                 | ACR\Controllers\Home@index                               |
| 2  | admin                                | ACR\Controllers\Admin\Admin@index                        |
| 3  | login.form                           | ACR\Controllers\Logon@form                               |
| 4  | login.do                             | ACR\Controllers\Logon@login                              |
| 5  | admin.languages.index                | ACR\Controllers\Admin\Pages@store                        |
| 6 | bio                                  | ACR\Controllers\StaticPages@show                         |
| 7 | logout.do                            | ACR\Controllers\Logon@logout                             |
| 8 | admin.tracker.index                  | ACR\Controllers\Admin\UsageTracker@index                 |
| 9 | admin.tracker.api.pageviewsbycountry | ACR\Controllers\Admin\UsageTracker@apiPageviewsByCountry |
| 10 | admin.tracker.api.pageviews          | ACR\Controllers\Admin\UsageTracker@apiPageviews          |
+----+--------------------------------------+----------------------------------------------------------+

```

### sql\_queries ;

[](#sql_queries-------------------)

```
+----+------------------------------------------+-------------------------------------------------------------------------------------------------+-------+---------------+
| id | sha1                                     | statement                                                                                       | time  | connection_id |
+----+------------------------------------------+-------------------------------------------------------------------------------------------------+-------+---------------+
| 1  | 5aee121018ac16dbf26dbbe0cf35fd44a29a5d7e | select * from "users" where "id" = ? limit 1                                                    | 3.13  | 1             |
| 2  | 0fc3f3a722b0f9ef38e6bee44fc3fde9fb1fd1d9 | select "created_at" from "articles" where "published_at" is not null order by "created_at" desc | 1.99  | 1             |
+----+------------------------------------------+-------------------------------------------------------------------------------------------------+-------+---------------+

```

Manually log things
-------------------

[](#manually-log-things)

If your application has special needs, you can manually log things like:

#### Events

[](#events-2)

```
Tracker::trackEvent(['event' => 'cart.add']);
Tracker::trackEvent(['event' => 'cart.add', 'object' => 'App\Cart\Events\Add']);
```

#### Routes

[](#routes-1)

```
Tracker::trackVisit(
    [
        'name' => 'my.dynamic.route.name',
        'action' => 'MyDynamic@url'
    ],
    ['path' => 'my/dynamic/url']
);
```

Requirements
------------

[](#requirements)

- Laravel 7+, 8+
- PHP 7.2+
- Package "geoip/geoip":"~1.14" or "geoip2/geoip2":"~2.1" (If you are planning to store Geo IP information)

Installing
----------

[](#installing)

#### Require the `tracker` package by **executing** the following command in your command line:

[](#require-the-tracker-package-by-executing-the-following-command-in-your-command-line)

```
composer require anshu8858/tracker

```

#### Add the service provider to your app/config/app.php:

[](#add-the-service-provider-to-your-appconfigappphp)

```
 PragmaRX\Tracker\Vendor\Laravel\ServiceProvider::class,
```

#### Add the alias to the facade on your app/config/app.php:

[](#add-the-alias-to-the-facade-on-your-appconfigappphp)

```
'Tracker' => 'PragmaRX\Tracker\Vendor\Laravel\Facade',
```

#### Publish tracker configuration:

[](#publish-tracker-configuration)

```
php artisan vendor:publish --provider="PragmaRX\Tracker\Vendor\Laravel\ServiceProvider"

```

#### Enable the Middleware (Laravel 7)

[](#enable-the-middleware-laravel-7)

Open the newly published config file found at `app/config/tracker.php` and enable `use_middleware`:

```
'use_middleware' => true,
```

#### Add the Middleware to Laravel Kernel (Laravel 7)

[](#add-the-middleware-to-laravel-kernel-laravel-7)

Open the file `app/Http/Kernel.php` and add the following to your web middlewares:

```
\PragmaRX\Tracker\Vendor\Laravel\Middlewares\Tracker::class,
```

#### Enable Tracker in your tracker.php (Laravel 7)

[](#enable-tracker-in-your-trackerphp-laravel-7)

```
'enabled' => true,
```

#### Publish the migration

[](#publish-the-migration)

```
php artisan tracker:tables

```

Often you need this

```
php artisan migrate --database=tracker  --path=/database/migrations/tracker/

```

`vendor:publish` does it for you in Laravel 7.

#### Create a database connection for it on your `config/database.php`

[](#create-a-database-connection-for-it-on-your-configdatabasephp)

```
'connections' => [
    'mysql' => [
        ...
    ],

    'tracker' => [
    	'driver'   => '...',
    	'host'     => '...',
    	'database' => ...,
        'strict' => false,    // to avoid problems on some MySQL installs
    	...
    ],
],
```

#### Migrate it

[](#migrate-it)

If you have set the default connection to `tracker`, you can

```
php artisan migrate

```

Otherwise you'll have to

```
php artisan migrate --database=tracker

```

#### If you are planning to store Geo IP information, also install the geoip package:

[](#if-you-are-planning-to-store-geo-ip-information-also-install-the-geoip-package)

```
composer require "geoip/geoip":"~1.14"

or

composer require "geoip2/geoip2":"~2.1"

```

#### And make sure you don't have the PHP module installed. This is a Debian/Ubuntu example:

[](#and-make-sure-you-dont-have-the-php-module-installed-this-is-a-debianubuntu-example)

```
sudo apt-get purge php5-geoip

```

Everything Is Disabled By Default
---------------------------------

[](#everything-is-disabled-by-default)

Tracker has a lot of logging options, but you need to decide what you want to log. Starting by enabling this one:

```
'log_enabled' => true,
```

It is responsible for logging page hits and sessions, basically the client IP address.

Multiple authentication drivers
-------------------------------

[](#multiple-authentication-drivers)

You just have to all your auth IOC bidings to the array:

```
'authentication_ioc_binding' => ['auth', 'admin'],
```

Troubleshooting
---------------

[](#troubleshooting)

### Is everything enabled?

[](#is-everything-enabled)

Make sure Tracker is enabled in the config file. Usually this is the source of most problems.

### Tail your laravel.log file

[](#tail-your-laravellog-file)

```
tail -f storage/logs/laravel.log
```

Usually non-trackable IP addresses and other messages will appear in the log:

```
[2018-03-19 21:28:08] local.WARNING: TRACKER (unable to track item): 127.0.0.1 is not trackable.

```

### SQLSTATE\[42000\]: Syntax error or access violation: 1067 Invalid default value for 'field name'

[](#sqlstate42000-syntax-error-or-access-violation-1067-invalid-default-value-for-field-name)

This is probably related to SQL modes on MySQL, specifically with `NO_ZERO_IN_DATE` and `NO_ZERO_DATE` modes:

Because Laravel's defaults to

```
set session sql_mode='ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION'
```

You may need to change your Tracker database connection configuration to

```
'connections' => [
    ...

    'tracker' => [
        ...

        'strict'    => false,
    ],
],
```

Not able to track users?
------------------------

[](#not-able-to-track-users)

If you get an error like:

```
Base table or view not found: 1146 Table 'tracker.users' doesn't exist

```

You probably need to change:

```
'user_model' => 'PragmaRX\Tracker\Vendor\Laravel\Models\User',

```

To create (or use a current) a User model:

```
'user_model' => 'App\TrackerUser',

```

And configure the Connection related to your users table:

```
protected $connection = 'mysql';

```

Not able to track API's?
------------------------

[](#not-able-to-track-apis)

In your kernel

```
protected $middlewareGroups = [
    'web' => [
        .......
        \PragmaRX\Tracker\Vendor\Laravel\Middlewares\Tracker::class,
    ],

    'api' => [
       .......
        \PragmaRX\Tracker\Vendor\Laravel\Middlewares\Tracker::class,
    ],
];

```

Author
------

[](#author)

[Antonio Carlos Ribeiro](https://twitter.com/anshu_kushawaha)[All Contributors](https://github.com/anshu8858/tracker/graphs/contributors)

License
-------

[](#license)

Tracker is licensed under the BSD 3-Clause License - see the `LICENSE` file for details

Contributing
------------

[](#contributing)

Pull requests and issues are more than welcome.

###  Health Score

32

—

LowBetter than 71% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity6

Limited adoption so far

Community19

Small or concentrated contributor base

Maturity73

Established project with proven stability

 Bus Factor1

Top contributor holds 86.4% 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

Every ~33 days

Total

75

Last Release

1932d ago

Major Versions

v0.7.8 → v1.0.02015-03-06

v1.0.8 → v2.0.02015-11-24

v2.0.10 → v3.0.02016-08-24

v3.5.0 → v4.0.02020-05-04

v1.0.0-alpha.1 → v4.0.2-alpha.12021-01-21

PHP version history (3 changes)v0.2.0PHP &gt;=5.3.7

v4.0.0PHP &gt;=7.0

v1.0.0-alphaPHP &gt;=7.2

### Community

Maintainers

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

---

Top Contributors

[![antonioribeiro](https://avatars.githubusercontent.com/u/3182864?v=4)](https://github.com/antonioribeiro "antonioribeiro (523 commits)")[![anshu8858](https://avatars.githubusercontent.com/u/20580082?v=4)](https://github.com/anshu8858 "anshu8858 (19 commits)")[![igorhaf](https://avatars.githubusercontent.com/u/1664569?v=4)](https://github.com/igorhaf "igorhaf (8 commits)")[![napestershine](https://avatars.githubusercontent.com/u/8603325?v=4)](https://github.com/napestershine "napestershine (6 commits)")[![marlocorridor](https://avatars.githubusercontent.com/u/5117811?v=4)](https://github.com/marlocorridor "marlocorridor (5 commits)")[![aleplusplus](https://avatars.githubusercontent.com/u/6319838?v=4)](https://github.com/aleplusplus "aleplusplus (5 commits)")[![rogervila](https://avatars.githubusercontent.com/u/6053012?v=4)](https://github.com/rogervila "rogervila (4 commits)")[![ben-nsng](https://avatars.githubusercontent.com/u/5063993?v=4)](https://github.com/ben-nsng "ben-nsng (4 commits)")[![mohabhassan](https://avatars.githubusercontent.com/u/17481828?v=4)](https://github.com/mohabhassan "mohabhassan (3 commits)")[![GrahamCampbell](https://avatars.githubusercontent.com/u/2829600?v=4)](https://github.com/GrahamCampbell "GrahamCampbell (3 commits)")[![yuters](https://avatars.githubusercontent.com/u/801718?v=4)](https://github.com/yuters "yuters (2 commits)")[![gabriel-cardoso](https://avatars.githubusercontent.com/u/701338?v=4)](https://github.com/gabriel-cardoso "gabriel-cardoso (2 commits)")[![hafael](https://avatars.githubusercontent.com/u/571130?v=4)](https://github.com/hafael "hafael (2 commits)")[![kduma](https://avatars.githubusercontent.com/u/1062582?v=4)](https://github.com/kduma "kduma (2 commits)")[![ndberg](https://avatars.githubusercontent.com/u/13345669?v=4)](https://github.com/ndberg "ndberg (2 commits)")[![xembill](https://avatars.githubusercontent.com/u/8319808?v=4)](https://github.com/xembill "xembill (1 commits)")[![kingsloi](https://avatars.githubusercontent.com/u/2467444?v=4)](https://github.com/kingsloi "kingsloi (1 commits)")[![LasseRafn](https://avatars.githubusercontent.com/u/2689341?v=4)](https://github.com/LasseRafn "LasseRafn (1 commits)")[![eadortsu](https://avatars.githubusercontent.com/u/40460447?v=4)](https://github.com/eadortsu "eadortsu (1 commits)")[![djam90](https://avatars.githubusercontent.com/u/979271?v=4)](https://github.com/djam90 "djam90 (1 commits)")

---

Tags

counterlaravelvisitorlaravelloggingtrackinguser agentvisitorpragmarxtrackermobile-detection

### Embed Badge

![Health badge](/badges/anshu8858-tracker/health.svg)

```
[![Health](https://phpackages.com/badges/anshu8858-tracker/health.svg)](https://phpackages.com/packages/anshu8858-tracker)
```

###  Alternatives

[pragmarx/tracker

A Laravel Visitor Tracker

2.9k300.0k1](/packages/pragmarx-tracker)

PHPackages © 2026

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