PHPackages                             esplora/esplora - 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. esplora/esplora

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

esplora/esplora
===============

Easy and open-source website analytics tool for Laravel

0.0.9(4y ago)614.6k2MITPHPPHP ^8.0

Since Jul 18Pushed 2y ago1 watchersCompare

[ Source](https://github.com/esplora/esplora)[ Packagist](https://packagist.org/packages/esplora/esplora)[ RSS](/packages/esplora-esplora/feed)WikiDiscussions master Synced 6d ago

READMEChangelog (9)Dependencies (6)Versions (12)Used By (0)

[![Esplora](.github/logo.svg?sanitize=true)](.github/logo.svg?sanitize=true) Esplora - Easy Tracker Visits
==========================================================================================================

[](#-esplora---easy-tracker-visits)

Esplora is an open-source package for Laravel with which you can easily collect visitor analytics. All analytic data about website visitors that the package contains and structures belong solely to the website owner. Don't sell your users! Use your own private storage.

How It Works
------------

[](#how-it-works)

After the client has received a useful response from the server, we process his request by collecting and write to the database the following information:

- Requested URL
- IP address
- Device (Mobile, Desktop, Tablet, Robot)
- Platform (Ubuntu, Windows, OS X)
- Browser (Chrome, IE, Safari, Firefox)
- Preferred Language
- Referer

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

[](#installation)

You may install Esplora into your project using the Composer package manager:

```
composer require esplora/esplora
```

Next, you should publish the Esplora configuration and migration files using the `vendor:publish` Artisan command. The `esplora.php` configuration file will be placed in your application's `config` directory:

```
php artisan vendor:publish --provider="Esplora\Tracker\EsploraServiceProvider.php"
```

Finally, you should run your database migrations. Esplora will create database tables in which to store users visits:

```
php artisan migrate
```

Next, if you plan to utilize Esplora to tracking web requests, you should add middleware to your `web` middleware group within your application's `app/Http/Kernel.php` file:

```
'web' => [
    \App\Http\Middleware\EncryptCookies::class,
    \Illuminate\Cookie\Middleware\AddQueuedCookiesToResponse::class,
    \Illuminate\Session\Middleware\StartSession::class,
    // \Illuminate\Session\Middleware\AuthenticateSession::class,
    \Illuminate\View\Middleware\ShareErrorsFromSession::class,
    \App\Http\Middleware\VerifyCsrfToken::class,
    \Illuminate\Routing\Middleware\SubstituteBindings::class,

    //new Esplora:
    \Esplora\Tracker\Middleware\Tracking::class,
],
```

Or set for a specific route:

```
use Esplora\Tracker\Middleware\Tracking;

Route::get('about', function (){
  // code
})->middleware(Tracking::class);
```

Configuration
-------------

[](#configuration)

After publishing Esplora's assets, its primary configuration file will be located at `config/esplora.php`. This configuration file allows you to configure the request tracking options for your application. Each configuration option includes a description of its purpose, so be sure to explore this file thoroughly.

Executing Goals
---------------

[](#executing-goals)

Goals allow you to track important events on the site: clicks on buttons, views of certain pages, downloading files, submitting forms, and many others. You can define a target as completed with a simple call:

```
use Esplora\Tracker\Facades\Tracker;

Tracker::goal('Dark theme', [
    'enabled' => false,
]);
```

Batch Import
------------

[](#batch-import)

With many visits, the number of `Insert` queries to the database can take up a lot of server resources. To do this, you can use an intermediate Redis store, from which information will then be inserted in batches.

```
php artisan esplora:insert
```

You may define the time of recording to permanent storage using a [schedule](https://laravel.com/docs/8.x/scheduling) of scheduled tasks in the `schedule` method of your application's `App\Console\Kernel` class. For example, every 10 minutes:

```
$schedule->command('esplora:insert')->everyTenMinutes();
```

Data Pruning
------------

[](#data-pruning)

Without pruning, the `esplora_visits` and `esplora_goals` tables can accumulate records very quickly. To mitigate this, you should schedule the `model:prune` Artisan command to run daily:

```
use Esplora\Tracker\Models\Visit;
use Esplora\Tracker\Models\Goal;

$schedule->command('model:prune', [
    '--model' => [Visit::class, Goal::class],
])->daily();
```

License
-------

[](#license)

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

###  Health Score

31

—

LowBetter than 68% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity26

Limited adoption so far

Community12

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 93.3% 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 ~32 days

Recently: every ~39 days

Total

10

Last Release

1475d ago

Major Versions

0.0.3 → v1.0.x-dev2021-07-24

PHP version history (2 changes)0.0.1PHP ^7.4|^8.0

0.0.8PHP ^8.0

### Community

Maintainers

![](https://www.gravatar.com/avatar/3c47797b11041f37c2eec74b09bc6619c8997467d690797ebad0e6ab7cb232b7?d=identicon)[tabuna](/maintainers/tabuna)

---

Top Contributors

[![tabuna](https://avatars.githubusercontent.com/u/5102591?v=4)](https://github.com/tabuna "tabuna (83 commits)")[![taylorotwell](https://avatars.githubusercontent.com/u/463230?v=4)](https://github.com/taylorotwell "taylorotwell (4 commits)")[![SadElephant](https://avatars.githubusercontent.com/u/7434276?v=4)](https://github.com/SadElephant "SadElephant (2 commits)")

###  Code Quality

TestsPHPUnit

### Embed Badge

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

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

###  Alternatives

[wireui/wireui

TallStack components

1.8k1.3M16](/packages/wireui-wireui)[livewire/volt

An elegantly crafted functional API for Laravel Livewire.

4195.3M84](/packages/livewire-volt)[ramonrietdijk/livewire-tables

Dynamic tables for models with Laravel Livewire

21147.4k](/packages/ramonrietdijk-livewire-tables)

PHPackages © 2026

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