PHP code example of clicktrail / laravel

1. Go to this page and download the library: Download clicktrail/laravel library. Choose the download type require.

2. Extract the ZIP file and open the index.php.

3. Add this code to the index.php.
    
        
<?php
require_once('vendor/autoload.php');

/* Start to develop here. Best regards https://php-download.com/ */

    

clicktrail / laravel example snippets


// 1. Register capture on the route groups whose traffic should build
//    first/last-touch state (routes/web.php):
Route::middleware(['web', 'clicktrail.capture'])->group(function () {
    Route::get('/', fn () => view('welcome'));
});

// 2. A visitor arrives from Google Ads; the middleware merges the touch.
//    After the request:
session('clicktrail.attribution');
// JSON with first->source === 'google', first->clickIds['gclid'] set.
// Persisted ONLY when consent permits analytics storage; unknown = denied.

// 3. Inspect or merge from your own code via the helper:
$state = clicktrail()->capture($request);   // StoredState for this request
clicktrail()->pendingPayloads();            // [] means nothing queued yet

// 4. On conversion (form submit, order), queue delivery:
\ClickTrail\Laravel\Jobs\DeliverEventsJob::dispatch();
// batched POST to CLICKTRAIL_ENDPOINT with idempotency keys; retries after
// 200ms/1s/5s; nothing is sent during the request itself.

\ClickTrail\Laravel\Jobs\DeliverEventsJob::dispatch();
// flush() throws RetryableException on 429/5xx/network. Laravel re-runs the
// job via backoff([200ms, 1000ms, 5000ms]). A PermanentException fails the
// job and routes payloads to the failed-events table.

foreach (\ClickTrail\Laravel\Models\ClickTrailFailedEvent::get() as $row) {
    clicktrail()->restorePayloads(json_decode($row->payload, true));
}
// payloads are back in the BatchClient queue; the next DeliverEventsJob run
// sends them unchanged, same idempotency keys, no duplicates.

\ClickTrail\Laravel\Support\WebhookSignature::verify($payload, $request->header('X-ClickTrail-Signature'), $secret);
// === true only when the signature matches; constant-time, no timing leak
bash
php artisan vendor:publish --tag=clicktrail-config
bash
php artisan clicktrail:diagnose
bash
php tests/_runner.php                 # full suite, standalone (no kernel boot)
vendor/bin/phpunit --testdox          # PHPUnit pass (CI, PHP 8.3)