NovinkaZverejnili sme 50+ Laravel balíkov ako open source
Custom AI apps, agents and automation — Roundly ConsultingRoundly
Všetky balíky
Plausible for Laravel

Zaznamenávanie udalostí

Konverzie sledujte na strane servera — aj tam, kam JavaScript na frontende nedosiahne: API volania, webhooky, úlohy vo fronte. Plausible potrebuje user-agent a IP návštevníka na počítanie unikátnych návštevníkov, preto ich pred zaznamenaním zadajte cez fromRequest() alebo setVisitor():

use RoundlyConsulting\Plausible\DataTransferObjects\Revenue;
use RoundlyConsulting\Plausible\Facades\Plausible;
use RoundlyConsulting\Plausible\Requests\Events\CaptureEventRequest;

// Lift the visitor from the current request, send a pageview in one call
Plausible::events()->fromRequest(request())->pageview('https://my-site.com/blog/x');

// A custom event (goal) in one call — the site defaults to plausible.site
Plausible::events()->fromRequest(request())->event(
    'Signup',
    url: 'https://my-site.com/register',
    props: ['plan' => 'pro'],
    revenue: Revenue::of('49.00', 'EUR'),   // optional
    site: null,                              // optional override
);

// A custom event, fired on the queue so it never blocks the response
Plausible::events()
    ->fromRequest(request())
    ->captureQueued(CaptureEventRequest::make(
        site: 'my-site.com',
        url: 'https://my-site.com/signup',
        name: 'Signup',
        props: ['plan' => 'pro'],
    ));

// The explicit, synchronous form still works
$response = Plausible::events()
    ->setVisitor(userAgent: request()->userAgent(), ipAddress: request()->ip())
    ->capture(CaptureEventRequest::make(
        site: 'my-site.com',
        url: 'https://my-site.com/blog/some-post',
        referrer: 'https://affiliate-site.com',
        props: ['author' => 'jane'],
    ));

fromRequest() prevezme user-agent a IP z requestu; setVisitor() ich berie explicitne — napríklad tie, ktoré ste si uložili pri pôvodnej návšteve:

// In a webhook handler or a job there is no browser request in scope —
// pass the identifiers you stored with the original visit
Plausible::events()
    ->setVisitor($order->user_agent, $order->ip_address)
    ->capture(CaptureEventRequest::make(
        site: 'my-site.com',
        url: 'https://my-site.com/checkout/complete',
        name: 'Payment Settled',
    ));

Návštevník sa posiela v hlavičkách User-Agent a X-Forwarded-For. Zaznamenanie bez neho vyhodí RoundlyConsulting\Plausible\Exceptions\UniqueVisitorIdentifierRequired. API kľúč netreba: Events API je bez autentifikácie a balík tam váš kľúč nikdy nepošle — stačí PLAUSIBLE_URL.

CaptureEventRequest

ParameterPredvolenéÚčel
site—Web (doména), ku ktorému udalosť patrí. Povinné.
url—URL stránky, na ktorej udalosť nastala. Povinné.
namepageviewNázov udalosti — pageview alebo ľubovoľný názov vlastného cieľa.
referrernullURL odkazujúcej stránky, posiela sa len ak je nastavená.
props[]Vlastné vlastnosti udalosti, posielajú sa len ak nie sú prázdne.
revenuenullDTO Revenue — pozri Tržby.
interactivetrueHodnota false odošle udalosť ako neinteraktívnu.

Zobrazenia stránok a fronta

  • pageview($url, $site = null) — zaznamená zobrazenie stránky a použije nakonfigurovaný predvolený web; ak chýba oboje, vyhodí MissingConfiguration.
  • event($name, url:, props:, revenue:, site:, referrer:, interactive:) — obdoba pageview() pre vlastné udalosti: rovnako použije predvolený web a vráti Response.
  • capture($request) — odošle synchrónne a vráti Response.
  • captureQueued($request) — odošle do fronty RoundlyConsulting\Plausible\Jobs\CaptureEventJob s návštevníkom uloženým ako obyčajné reťazce, takže úloha zostane serializovateľná a odpoveď sa nikdy nezdrží.

Hromadné zaznamenanie

Pri hromadných alebo historických importoch pošlite veľa udalostí naraz — synchrónne alebo ako jednu dávku úloh vo fronte:

$events = [
    CaptureEventRequest::make(site: 'my-site.com', url: 'https://my-site.com/a', name: 'import'),
    CaptureEventRequest::make(site: 'my-site.com', url: 'https://my-site.com/b', name: 'import'),
];

Plausible::events()->fromRequest(request())->captureMany($events);        // list<Response>
$batch = Plausible::events()->fromRequest(request())->captureManyQueued($events); // Illuminate\Bus\Batch

captureMany() odošle udalosti postupne a vráti odpovede v rovnakom poradí. captureManyQueued() odošle jednu CaptureEventJob na udalosť ako Laravel job batch s názvom plausible:capture, takže aplikácia potrebuje nastavené dávkovanie úloh (tabuľku job_batches).

Prejavte lásku k open source

Tento balík je zadarmo pod licenciou MIT. Ak vám šetrí čas, jednorazový príspevok alebo členstvo na Patreone nám pomôže ho ďalej udržiavať, testovať a dokumentovať.

Ďalšie spôsoby podpory vrátane kryptomien

Odoslaním daru súhlasíte s našimi podmienkami prijímania darov.

Chcete to zabudovať do svojho produktu?

Naše balíky integrujeme do zákazkových Laravel a AI riešení. Napíšte nám, na čom pracujete, a ozveme sa do 48 hodín.