PHPackages                             vizuh/october-clicktrail - 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. [Templating &amp; Views](/categories/templating)
4. /
5. vizuh/october-clicktrail

ActiveOctober-plugin[Templating &amp; Views](/categories/templating)

vizuh/october-clicktrail
========================

See which campaign, keyword, click ID and landing page created each form submission. First-touch/last-touch attribution for October CMS.

v0.1.0(yesterday)00[3 issues](https://github.com/vizuh/clicktrail-october/issues)MITPHPPHP &gt;=8.1CI passing

Since Aug 24Pushed todayCompare

[ Source](https://github.com/vizuh/clicktrail-october)[ Packagist](https://packagist.org/packages/vizuh/october-clicktrail)[ RSS](/packages/vizuh-october-clicktrail/feed)WikiDiscussions main Synced today

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

English | [Português](README.pt-BR.md) | [Deutsch](README.de.md) | [中文](README.zh-CN.md)

**vizuh/october-clicktrail**

See which campaign, keyword, click ID and landing page created each form submission in October CMS.

[![CI](https://github.com/vizuh/clicktrail-october/actions/workflows/ci.yml/badge.svg)](https://github.com/vizuh/clicktrail-october/actions/workflows/ci.yml)[![Packagist Version](https://camo.githubusercontent.com/b7915d28c3bab2c5618b5f73422ed9889aa70b7ad607b173bb0e7da7b26ef162/68747470733a2f2f696d672e736869656c64732e696f2f7061636b61676973742f762f76697a75682f6f63746f6265722d636c69636b747261696c)](https://packagist.org/packages/vizuh/october-clicktrail)[![License: MIT](https://camo.githubusercontent.com/08cef40a9105b6526ca22088bc514fbfdbc9aac1ddbf8d4e6c750e3a88a44dca/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c6963656e73652d4d49542d626c75652e737667)](LICENSE)

Index
-----

[](#index)

- [Why](#why)
- [Installation](#installation)
- [Quick start](#quick-start)
- [Components](#components)
- [Attribution capture](#attribution-capture)
- [Settings](#settings)
- [Consent](#consent)
- [Delivery](#delivery)
- [How it differs](#how-it-differs)
- [Testing](#testing)
- [License](#license)

Why
---

[](#why)

Not another analytics dashboard. ClickTrail stamps every October form submission with the marketing touch that produced it — deterministic first-touch / last-touch attribution computed by the shared [`clicktrail/php-sdk`](https://github.com/vizuh/clicktrail-php) core, validated against the same golden fixtures as every other ClickTrail integration.

Requires October CMS 3 (Laravel 10 base), PHP 8.1+ and `clicktrail/php-sdk` (^0.1@dev).

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

[](#installation)

The repository root **is** the plugin folder. Clone or copy it into an October project:

```
cd /plugins
mkdir -p vizuh && cd vizuh
git clone https://github.com/vizuh/clicktrail-october clicktrail
php artisan october:up
```

Then enable **ClickTrail** under Settings and enter your Site ID.

Quick start
-----------

[](#quick-start)

Add the tracker to your layout head and the hidden fields to any October form:

```
{# layouts/default.htm — inside  #}
{% component 'clickTrailTracker' %}

{# any October form #}

    {% component 'attributionHidden' %}
    ...

```

A visitor arrives from a paid search ad, browses, then submits the form. The POST now carries the full first-touch context:

```
ct_utm_source=google          ← first touch, immutable
ct_utm_medium=cpc             ← even after later direct visits
ct_gclid=EAIaIQobChMI...      ← click ID captured with advertising consent
ct_landing_page=https://example.com/promo
ct_initial_referrer=https://www.google.com/
ct_consent_state=granted

```

Every subsequent direct visit changes nothing — first touch stays, stored last touch persists. That merge law lives in the shared SDK, tested, not promised.

Components
----------

[](#components)

### `clickTrailTracker` — first-party loader

[](#clicktrailtracker--first-party-loader)

```
{% component 'clickTrailTracker' %}
```

Renders exactly one script tag — the ClickTrail loader served from your own configured endpoint, tagged with your Site ID. No third-party scripts, ever.

### `attributionHidden` — attribution fields on any form

[](#attributionhidden--attribution-fields-on-any-form)

```
{% component 'attributionHidden' %}
```

Renders one hidden input per collected attribute, mirroring the GTM attribution-variable field list: visitor/session/event IDs, `utm_*`, ad click IDs (`gclid`, `fbclid`, `msclkid`, `ttclid`, ...), landing page, initial referrer and consent state. Values come from the merged pair held in the session; the field values never decide attribution logic themselves.

Attribution capture
-------------------

[](#attribution-capture)

Page displays and October AJAX framework requests are observed automatically (`cms.page.beforeDisplay` / `ajax.beforeRun`). Each request is read as one touch and merged into session state by the shared `TouchMerger`. No glue code needed.

Settings
--------

[](#settings)

All options live under Settings → ClickTrail:

SettingDefaultPurposeSite IDemptyIdentifies this site to your ClickTrail accountAPI endpointemptyWhere payloads are sent; also serves the loaderConsent resolver classemptyCustom `ConsentResolverInterface` implementation returning the normalized snapshot; empty = all signals "unknown"Attribution persistence requires `analytics_storage`onStore nothing without granted analytics consentAd click-ID storage requires `advertising_storage`onStrip gclid/fbclid/... from storage without advertising consentForward hashed lead data (`ad_user_data`)offExtra gate for hashed-lead forwarding; still needs `ad_user_data` grantedFirst-party proxyoffServe the ClickTrail loader from your own domainConsent
-------

[](#consent)

ClickTrail does not replace your consent platform — it obeys it. The normalized consent contract (capabilities, snapshot shape, behavior matrix) lives in [`docs/consent-compatibility-plan.md`](../../docs/consent-compatibility-plan.md).

- Provider: implement `Vizuh\ClickTrail\Classes\Consent\ConsentResolverInterface` (returns the current `ClickTrail\Consent\ConsentSnapshot`) and register it under Settings → Privacy → Consent resolver class. Real CMP adapters are deferred; the WordPress plugin reads WP Consent API directly.
- On unknown consent: **do not store or send**. Suppressed actions are recorded with `suppressionReason()` into diagnostics.
- The resolved snapshot is persisted alongside the attribution state and travels with every submission (`consent` key on each payload).

Delivery
--------

[](#delivery)

Canonical payloads are serialized against the stored attribution pair by the shared SDK (`schema_version`-stamped, dotted `attribution.*` keys). A scheduled queue-flush hook is registered and ready; the persisted-event transport ships once the clicktrail-php parity gate passes.

How it differs
--------------

[](#how-it-differs)

Typical analytics setupClickTrail for OctoberSessions and pages in a dashboardCampaign, keyword, click ID and landing page on **each submission record**Client-side tags you maintain yourselfTwo Twig components, one first-party scriptAttribution logic duplicated per platformOne deterministic engine, fixture-tested across WordPress, GTM and PHP integrationsTesting
-------

[](#testing)

GitHub Actions CI lints all PHP files on every push ([workflow](https://github.com/vizuh/clicktrail-october/blob/main/.github/workflows/ci.yml)).

License
-------

[](#license)

MIT — Copyright (c) 2026 Vizuh OÜ. See [LICENSE](LICENSE).

###  Health Score

36

—

LowBetter than 79% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community8

Small or concentrated contributor base

Maturity32

Early-stage or recently created project

 Bus Factor1

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

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/20295730?v=4)[Hugo ](/maintainers/Atroci)[@Atroci](https://github.com/Atroci)

---

Top Contributors

[![Atroci](https://avatars.githubusercontent.com/u/20295730?v=4)](https://github.com/Atroci "Atroci (10 commits)")[![dependabot[bot]](https://avatars.githubusercontent.com/in/29110?v=4)](https://github.com/dependabot[bot] "dependabot[bot] (1 commits)")

---

Tags

analyticsattributionclickstreamcmsconsent-managementconversion-trackingfirst-party-datagdprlaravellead-generationmarketing-analyticsoctober-cmsoctober-pluginphptwigutm

### Embed Badge

![Health badge](/badges/vizuh-october-clicktrail/health.svg)

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

###  Alternatives

[helsingborg-stad/municipio

A bootstrap theme for creating municipality sites.

4028.6k10](/packages/helsingborg-stad-municipio)[pressbooks/pressbooks

Pressbooks is an open source book publishing tool built on a WordPress multisite platform. Pressbooks outputs books in multiple formats, including PDF, EPUB, web, and a variety of XML flavours, using a theming/templating system, driven by CSS.

45844.8k1](/packages/pressbooks-pressbooks)[october/rain

October Rain Library

1601.7M104](/packages/october-rain)[pressbooks/pressbooks-book

This theme is named after Canadian media theorist Marshall McLuhan, who coined the phrase “the medium is the message.” It is designed for academic writing and is also suitable for fiction. Headings are set in Cormorant Garamond, and body type is set in Lora.

226.7k](/packages/pressbooks-pressbooks-book)[elgg/elgg

Elgg is an award-winning social networking engine, delivering the building blocks that enable businesses, schools, universities and associations to create their own fully-featured social networks and applications.

1.7k17.3k100](/packages/elgg-elgg)[mediawiki/maps

Adds various mapping features to MediaWiki

85155.1k3](/packages/mediawiki-maps)

PHPackages © 2026

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