PHPackages                             albofish/footstep - 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. albofish/footstep

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

albofish/footstep
=================

A simple registration attribution tracking solution for Laravel 5.2+ (UTM Parameters and Referrers)

0.2.10-beta(8y ago)04.4kMITPHPPHP ~5.5|~7.0

Since Feb 18Pushed 8y ago1 watchersCompare

[ Source](https://github.com/Albofish/Footstep)[ Packagist](https://packagist.org/packages/albofish/footstep)[ Docs](https://github.com/albofish/footstep)[ RSS](/packages/albofish-footstep/feed)WikiDiscussions master Synced 3d ago

READMEChangelog (1)Dependencies (5)Versions (22)Used By (0)

🐾 Footstep for Laravel 5.2+ (UTM and Referrer Tracking)
=======================================================

[](#feet-footstep-for-laravel-52-utm-and-referrer-tracking)

[![Footstep for Laravel 5.2+ (UTM and Referrer Tracking)](readme-header.jpg)](readme-header.jpg)

[![Latest Version on Packagist](https://camo.githubusercontent.com/90a741a0d9f103ba7c3e4336ad355dd0cde29194dbc34502a3d74b846f9430ab/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f616c626f666973682f666f6f74737465702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/albofish/footstep)[![Software License](https://camo.githubusercontent.com/55c0218c8f8009f06ad4ddae837ddd05301481fcf0dff8e0ed9dadda8780713e/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f6c6963656e73652d4d49542d627269676874677265656e2e7376673f7374796c653d666c61742d737175617265)](LICENSE.md)[![Total Downloads](https://camo.githubusercontent.com/c1b9f33ed0006e751f8d04b56e5d20b74451fd84a63b074d9dfda49da0032fae/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f64742f616c626f666973682f666f6f74737465702e7376673f7374796c653d666c61742d737175617265)](https://packagist.org/packages/albofish/footstep)

Footstep is a simple registration attribution tracking solution for Laravel 5.2+

> “I know I waste half of my advertising dollars...I just wish I knew which half.” ~ *Henry Procter*.

Footstep is a fork of the [kyranb/Footprints](https://github.com/kyranb/Footprints) package re-engineered to track one-off events that do not culminate in a user registering or signing in.

Install
-------

[](#install)

Via Composer

```
$ composer require albofish/footstep dev-master
```

Add the service provider and (optionally) alias to their relative arrays in config/app.php:

```
    'providers' => [
        ...
        Albofish\Footstep\FootstepServiceProvider::class,
    ],

...

    'aliases' => [
        ...
        'Footstep'   => Albofish\Footstep\FootstepFacade::class,
    ],
```

Publish the config and migration files:

```
php artisan vendor:publish --provider="Albofish\Footstep\FootstepServiceProvider"
```

Add the `TrackRegistrationAttribution` trait to the model you wish to track attributions for. For example:

```
namespace App;

use Illuminate\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Model;
use Albofish\Footstep\TrackRegistrationAttribution;

class User extends Model
{
    use Authenticatable, TrackRegistrationAttribution;

    /**
     * The database table used by the model.
     *
     * @var string
     */
    protected $table = 'users';

}
```

Go over the configuration file, most notably the model you wish to track:

connection name (optional - if you need a separated tracking database):

`'connection_name' => 'mytrackingdbconnection'`

model name:

`'model' => 'App\User'`

authentication guard:

`'guard' => 'web'`

the column name:

`'model_column_name' => 'user_id'`

and attribution duration (in seconds)

`'attribution_duration' => 2628000`

also you can define some route what you don't want to track:

`'landing_page_blacklist' => ['genealabs/laravel-caffeine/drip', 'admin']`

if you want to use on multiple subdomain with a wildcard cookie, you can set your custom domain name:

`'cookie_domain' => .yourdomain.com`

this boolean will allow you to write the tracking data to the db in your queue (optional):

`'async' => true`

Add the `\Albofish\Footstep\Middleware\CaptureAttributionDataMiddleware::class` middleware to `App\Http\Kernel.php` after the `EncryptCookie` middleware like so:

```
    /**
     * The application's global HTTP middleware stack.
     *
     * These middleware are run during every request to your application.
     *
     * @var array
     */
    protected $middleware = [
        \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
        \App\Http\Middleware\EncryptCookies::class,
        \Albofish\Footstep\Middleware\CaptureAttributionDataMiddleware::class,
    ];
```

Usage
-----

[](#usage)

#### How does Footstep work?

[](#how-does-footstep-work)

Footstep tracks the UTM parameters and HTTP refererers from all requests to your application that are sent by un-authenticated uers. Not sure what UTM parameters are? [Wikipedia](https://en.wikipedia.org/wiki/UTM_parameters) has you covered:

> UTM parameters (UTM) is a shortcut for Urchin Traffic Monitor. This text tags allow users to track and analyze traffic sources in analytical tools (f.e. Google Analytics). By adding UTM parameters to URLs, you can identify the source and campaigns that send traffic to your website. When a user clicks a referral link / ad or banner, these parameters are sent to Google Analytics (or other analytical tool), so you can see the effectiveness of each campaign in your reports

> Here is example of UTM parameters in a URL: [www.wikipedia.org/?utm\_source=domain.com&amp;utm\_medium=banner&amp;utm\_campaign=winter15&amp;utm\_content=blue\_ad&amp;utm\_term=headline\_v1](http://www.wikipedia.org/?utm_source=domain.com&utm_medium=banner&utm_campaign=winter15&utm_content=blue_ad&utm_term=headline_v1)

###### There are 5 dimensions of UTM parameters:

[](#there-are-5-dimensions-of-utm-parameters)

- utm\_source = name of the source (usually the domain of source website)
- utm\_medium = name of the medium; type of traffic (f.e. cpc = paid search, organic = organic search; referral = link from another website etc.)
- utm\_campaign = name of the campaign, f.e. name of the campaign in Google AdWords, date of your e-mail campaign, etc.
- utm\_content = to distinguish different parts of one campaign; f.e. name of AdGroup in Google AdWords (with auto-tagging you will see the headline of - your ads in this dimension)
- utm\_term = to distinguish different parts of one content; f.e.keyword in Google AdWords

#### What data is tracked for each visit?

[](#what-data-is-tracked-for-each-visit)

- `landing_page`
- `referrer_url`
- `referrer_domain`
- `utm_source`
- `utm_campaign`
- `utm_medium`
- `utm_term`
- `utm_content`
- `created_at` (date of visit)

##### Get all of a user's visits before registering.

[](#get-all-of-a-users-visits-before-registering)

```
$user = User::find(1);
$user->visits;
```

##### Get the attribution data of a user's initial visit before registering.

[](#get-the-attribution-data-of-a-users-initial-visit-before-registering)

```
$user = User::find(1);
$user->initialAttributionData();
```

##### Get the attribution data of a user's final visit before registering.

[](#get-the-attribution-data-of-a-users-final-visit-before-registering)

```
$user = User::find(1);
$user->finalAttributionData();
```

Change log
----------

[](#change-log)

Please see the commit history for more information what has changed recently.

Testing
-------

[](#testing)

Haven't got round to this yet - PR's welcome ;)

```
$ composer test
```

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

[](#contributing)

If you run into any issues, have suggestions or would like to expand this packages functionality, please open an issue or a pull request :)

License
-------

[](#license)

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

###  Health Score

28

—

LowBetter than 54% of packages

Maintenance20

Infrequent updates — may be unmaintained

Popularity17

Limited adoption so far

Community13

Small or concentrated contributor base

Maturity53

Maturing project, gaining track record

 Bus Factor1

Top contributor holds 52.5% 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 ~25 days

Recently: every ~59 days

Total

21

Last Release

3223d ago

### Community

Maintainers

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

---

Top Contributors

[![kyranb](https://avatars.githubusercontent.com/u/5426926?v=4)](https://github.com/kyranb "kyranb (31 commits)")[![gyurobenjamin](https://avatars.githubusercontent.com/u/3200573?v=4)](https://github.com/gyurobenjamin "gyurobenjamin (11 commits)")[![henriklippke](https://avatars.githubusercontent.com/u/4739705?v=4)](https://github.com/henriklippke "henriklippke (7 commits)")[![JeroenJochems](https://avatars.githubusercontent.com/u/1180505?v=4)](https://github.com/JeroenJochems "JeroenJochems (5 commits)")[![JayBizzle](https://avatars.githubusercontent.com/u/340752?v=4)](https://github.com/JayBizzle "JayBizzle (2 commits)")[![albofish](https://avatars.githubusercontent.com/u/2026297?v=4)](https://github.com/albofish "albofish (2 commits)")[![raoulduke](https://avatars.githubusercontent.com/u/881473?v=4)](https://github.com/raoulduke "raoulduke (1 commits)")

---

Tags

trackingUTMattribution trackingfootprintsutm parametersuser trackingfootstep

###  Code Quality

TestsPHPUnit

Code StylePHP\_CodeSniffer

### Embed Badge

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

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

###  Alternatives

[kyranb/footprints

A simple registration attribution tracking solution for Laravel (UTM Parameters and Referrers)

207354.2k](/packages/kyranb-footprints)[zumba/amplitude-php

PHP SDK for Amplitude

409.5M5](/packages/zumba-amplitude-php)[php-coord/php-coord

PHPCoord is a PHP library to aid in handling coordinates. It can convert coordinates for a point from one system to another and also calculate distance between points.

110914.5k12](/packages/php-coord-php-coord)[cornford/googlitics

An easy way to integrate Google Analytics with Laravel.

3310.2k](/packages/cornford-googlitics)[suarez/laravel-utm-parameter

A little helper to store and handle utm-parameter

1513.8k](/packages/suarez-laravel-utm-parameter)[aedart/athenaeum

Athenaeum is a mono repository; a collection of various PHP packages

245.2k](/packages/aedart-athenaeum)

PHPackages © 2026

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