PHPackages                             dominservice/laravel-fingerprint-tracking - 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. [Security](/categories/security)
4. /
5. dominservice/laravel-fingerprint-tracking

ActiveLibrary[Security](/categories/security)

dominservice/laravel-fingerprint-tracking
=========================================

Fingerprint, browser tracking and lightweight page movement tracking for Laravel.

1.0.0(3d ago)02↓100%MITPHPPHP ^8.1

Since Jul 5Pushed 3d agoCompare

[ Source](https://github.com/dominservice/laravel-fingerprint-tracking)[ Packagist](https://packagist.org/packages/dominservice/laravel-fingerprint-tracking)[ Docs](https://github.com/dominservice/laravel-fingerprint-tracking)[ RSS](/packages/dominservice-laravel-fingerprint-tracking/feed)WikiDiscussions master Synced today

READMEChangelog (1)Dependencies (7)Versions (2)Used By (0)

Laravel Fingerprint Tracking
============================

[](#laravel-fingerprint-tracking)

[![Latest Version on Packagist](https://camo.githubusercontent.com/07f6da037cc19f65f18883d814315657df298c1df0781831d343d8a02b82279b/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f646f6d696e736572766963652f6c61726176656c2d66696e6765727072696e742d747261636b696e672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/dominservice/laravel-fingerprint-tracking)[![Total Downloads](https://camo.githubusercontent.com/0d063ae8d5c57ce13876a513aabafedb9b7bea0fd36a64e7fa79bddc6d95b6e0/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f646f6d696e736572766963652f6c61726176656c2d66696e6765727072696e742d747261636b696e672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/dominservice/laravel-fingerprint-tracking)[![License](https://camo.githubusercontent.com/7ed9ff788c8427fdff34f88f4f749ab9c983006ef236f804574b40d01c3fe4a6/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f6c2f646f6d696e736572766963652f6c61726176656c2d66696e6765727072696e742d747261636b696e672e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/dominservice/laravel-fingerprint-tracking)

*A lightweight Laravel package for browser fingerprinting, movement tracking, public form correlation and seamless cooperation with `dominservice/invis-captcha`.*

Version Matrix
--------------

[](#version-matrix)

LaravelSupported?Notes**10.x**✅Requires PHP ≥ 8.1**11.x**✅Streamlined structure supported**12.x**✅Same wiring as 11**13.x**✅Requires the PHP version supported by Laravel 13---

✨ Features
----------

[](#-features)

ModulePurposeToggle**Browser fingerprint**Creates a stable browser fingerprint and stores it in a cookie.`enabled`**Tracking endpoint**Records public events such as `page_view` or custom events.`enabled`**Form correlation**Injects hidden `fingerprint` and `tracking_event_ulid` fields into selected forms.`tracking.attach_hidden_fields`**Ready event**Emits a browser event when tracking is initialized.always on**invis-captcha bridge**Shares fingerprint and event correlation with `dominservice/invis-captcha`.automatic**Optional geo enrichment**Can enrich events with IPRegistry security/geo data.`geo.enabled`**Public-safe identifiers**Exposes only ULIDs publicly, never incremental database IDs.always on---

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

[](#installation)

You can install the package via composer:

```
composer require dominservice/laravel-fingerprint-tracking
```

After installing, publish the package files:

```
php artisan vendor:publish --provider="Dominservice\\FingerprintTracking\\FingerprintTrackingServiceProvider"
php artisan migrate
```

Published assets will be available at:

`public/vendor/laravel-fingerprint-tracking/fingerprint-tracking.js`

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

[](#configuration)

The configuration file `config/fingerprint-tracking.php` allows you to customize:

- package enable/disable switch
- fingerprint cookie name and lifetime
- route prefix and middleware
- authenticated subject morph strategy (`id`, `uuid`, `ulid`, `string`)
- whether authenticated users should be bound automatically to tracked events
- automatic page-view tracking
- automatic hidden-field attachment
- target form selector
- optional IPRegistry enrichment

The config is safe for plain Laravel and for projects using `dominservice/laravel-config`.

---

Framework-specific wiring
-------------------------

[](#framework-specific-wiring)

### Laravel ≤ 10 (classic structure)

[](#laravel--10-classic-structure)

No custom middleware alias is required for the base package.

Load the asset in your public layout:

```
@fingerprintTracking
```

### Laravel ≥ 11 (streamlined structure)

[](#laravel--11-streamlined-structure)

Load the asset exactly the same way:

```
@fingerprintTracking
```

The package registers its own route automatically through the service provider.

---

Basic Usage
-----------

[](#basic-usage)

### 1. Add the Blade directive to your layout

[](#1-add-the-blade-directive-to-your-layout)

```
@fingerprintTracking
```

### 2. Mark forms that should receive correlation fields

[](#2-mark-forms-that-should-receive-correlation-fields)

```

```

The package will inject:

- `fingerprint`
- `tracking_event_ulid`

### 3. Trigger custom tracking events when needed

[](#3-trigger-custom-tracking-events-when-needed)

```
window.DominserviceFingerprintTracking.track('form_view', {
    section: 'checkout'
});
```

### 4. Read the synchronized tracking context in protected requests

[](#4-read-the-synchronized-tracking-context-in-protected-requests)

```
$event = $request->attributes->get('fingerprint_tracking_event');
$payload = $request->attributes->get('fingerprint_tracking_payload');
```

---

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

[](#how-it-works)

1. The frontend generates a browser fingerprint.
2. The package sends a public tracking event to `POST /fingerprint-tracking/events`.
3. The server stores the fingerprint and the event internally using numeric IDs plus public ULIDs.
4. The public response exposes only ULIDs.
5. Selected forms receive the current fingerprint and `tracking_event_ulid`.
6. If an authenticated user already exists, the event can be bound through a configurable auth morph.
7. Later protected submits can resolve the same event again and enrich it with verification metadata.

---

Public Endpoint
---------------

[](#public-endpoint)

Default public endpoint:

`POST /fingerprint-tracking/events`

Example response:

```
{
  "status": "OK",
  "fingerprint_ulid": "01JZC9E6D9V4M1Y3X6V8S2Q0AA",
  "tracking_event_ulid": "01JZC9E6F2Q3T6Z8R1N4B7M9CC"
}
```

The package intentionally does **not** expose incremental database IDs.

---

Integration with invis-captcha
------------------------------

[](#integration-with-invis-captcha)

This package is designed to cooperate with `dominservice/invis-captcha`.

Recommended layout order:

```
@fingerprintTracking
@invisCaptcha
```

When both packages are present:

- fingerprint tracking starts as early as the public page loads,
- `invis-captcha` waits for the tracking package readiness promise,
- `invis-captcha` includes `fingerprint` and `tracking_event_ulid` in its signal payload,
- `invis.verify` resolves the stored tracking event by ULID,
- the request fingerprint, JWT fingerprint and stored fingerprint are cross-checked,
- the event is updated with `invis_score`, verification timestamp and request counters,
- authenticated users can be attached automatically through the configured auth morph,
- selected forms receive:
    - `invis_token`
    - `fingerprint`
    - `tracking_event_ulid`

The integration also emits:

- `dominservice:fingerprint-tracking:ready`
- `dominservice:invis:before-token`

so advanced projects can hook into the flow without patching package internals.

---

Security Notes
--------------

[](#security-notes)

- Public responses expose ULIDs, not incremental IDs.
- The browser fingerprint is not treated as a trusted identity on its own.
- Auth binding uses a configurable morph relation, so projects can follow integer IDs, UUIDs, ULIDs or generic string identifiers.
- The package is intended for correlation, enrichment and abuse mitigation support.
- For stronger bot protection, use it together with `dominservice/invis-captcha`.

---

Compatibility and Support
-------------------------

[](#compatibility-and-support)

- Works in standalone Laravel projects.
- Safe to use in projects with `dominservice/laravel-config`.
- Intended to be reusable in broader ecosystems such as DominPress modules.
- Does not assume a specific user primary-key format.

###  Health Score

39

—

LowBetter than 84% of packages

Maintenance99

Actively maintained with recent releases

Popularity3

Limited adoption so far

Community2

Small or concentrated contributor base

Maturity42

Maturing project, gaining track record

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

3d ago

### Community

Maintainers

![](https://www.gravatar.com/avatar/9d67c041316385020aafb7eef9f11971d6fad80a11a44f4078273bda6890722d?d=identicon)[dominservice](/maintainers/dominservice)

---

Tags

laravelsecuritytrackinganalyticsFingerprint

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/dominservice-laravel-fingerprint-tracking/health.svg)

```
[![Health](https://phpackages.com/badges/dominservice-laravel-fingerprint-tracking/health.svg)](https://phpackages.com/packages/dominservice-laravel-fingerprint-tracking)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3355.3M346](/packages/psalm-plugin-laravel)[api-platform/laravel

API Platform support for Laravel

58173.9k16](/packages/api-platform-laravel)[laravel/cashier

Laravel Cashier provides an expressive, fluent interface to Stripe's subscription billing services.

2.6k30.1M148](/packages/laravel-cashier)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k15.1M134](/packages/laravel-pulse)[roots/acorn

Framework for Roots WordPress projects built with Laravel components.

9762.4M133](/packages/roots-acorn)[simplestats-io/laravel-client

Server-side analytics for Laravel that follows the full funnel from visit to registration to payment, attributed to the channel that drove it. Revenue, MRR, churn and ad-spend profit (ROAS/CAC) per channel. GDPR compliant, ad-blocker proof.

5022.3k](/packages/simplestats-io-laravel-client)

PHPackages © 2026

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