PHP code example of adriengras / umami-php
1. Go to this page and download the library: Download adriengras/umami-php 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/ */
adriengras / umami-php example snippets
use AdrienGras\Umami\UmamiApi;
$umami = new UmamiApi(
baseUrl: 'https://umami.example.com',
apiToken: null, // optional: a reporting Bearer token, if you already have one
);
$websiteId = '01234567-89ab-cdef-0123-456789abcdef';
// Page view
$umami->tracking->pageview(
websiteId: $websiteId,
url: '/pricing',
title: 'Pricing',
referrer: 'https://google.com',
hostname: 'example.com',
userAgent: $request->getHeader('User-Agent'),
);
// Custom event
$umami->tracking->event(
websiteId: $websiteId,
name: 'signup',
data: ['plan' => 'pro'],
userAgent: $request->getHeader('User-Agent'),
);
// Attach a stable identity to the session
$umami->tracking->identify(
websiteId: $websiteId,
distinctId: 'user-42',
data: ['email' => '[email protected] '],
userAgent: $request->getHeader('User-Agent'),
);
$result = $umami->auth->login('admin', 's3cr3t-password');
// $result->token, $result->user
// ... make reporting calls ...
$umami->auth->logout(); // forgets the token client-side
use AdrienGras\Umami\Stats\Period;
use AdrienGras\Umami\Enums\MetricType;
// epoch milliseconds
$period = Period::between(startAt: 1_700_000_000_000, endAt: 1_700_086_400_000);
$summary = $umami->stats->stats($websiteId, $period);
$topPaths = $umami->stats->metrics($websiteId, MetricType::Path, $period);
$series = $umami->stats->pageviews($websiteId, $period);
$active = $umami->stats->active($websiteId);
$realtime = $umami->stats->realtime($websiteId); // current activity window
$period = Period::between(startAt: 1_700_000_000_000, endAt: 1_700_086_400_000);
$records = $umami->eventData->list($websiteId, $period);
$props = $umami->eventData->properties($websiteId, $period);
$rows = $umami->eventData->events($websiteId, $period, 'signup'); // event name is
$page = $umami->websites->list(pageSize: 100);
$website = $umami->websites->get($websiteId);
$created = $umami->websites->create(name: 'My Site', domain: 'example.com');
$umami->websites->update($created['id'], name: 'Renamed');
$umami->websites->delete($created['id']);
use AdrienGras\Umami\Enums\UserRole;
$users = $umami->users->list(pageSize: 100); // GET /api/admin/users
$user = $umami->users->create(
username: 'jane',
password: 'at-least-8-chars',
role: UserRole::User,
);
$umami->users->update($user['id'], role: UserRole::ViewOnly);
$umami->users->delete($user['id']);
use AdrienGras\Umami\Enums\TeamRole;
$team = $umami->teams->create(name: 'Marketing');
// Membership
$umami->teams->addMember($team['id'], $user['id'], TeamRole::Member);
$umami->teams->updateMember($team['id'], $user['id'], TeamRole::Manager);
$umami->teams->removeMember($team['id'], $user['id']);
// Join an existing team with its access code
$umami->teams->join($team['accessCode']);
use AdrienGras\Umami\Enums\ReportType;
use AdrienGras\Umami\Stats\Filters;
// Saved reports
$saved = $umami->reports->create(
websiteId: $websiteId,
type: ReportType::Funnel,
name: 'Checkout funnel',
parameters: ['window' => 3_600_000, 'steps' => [/* ... */]],
);
$reports = $umami->reports->list($websiteId, ReportType::Funnel);
// Ad-hoc generation (one method per report type)
$funnel = $umami->reports->funnel($websiteId, [
'startDate' => '2026-01-01',
'endDate' => '2026-01-31',
'window' => 3_600_000,
'steps' => [
['type' => 'path', 'value' => '/'],
['type' => 'event', 'value' => 'signup'],
],
], new Filters(country: 'FR'));
$utm = $umami->reports->utm($websiteId, ['startDate' => '2026-01-01', 'endDate' => '2026-01-31']);
use AdrienGras\Umami\Exceptions\UmamiApiException;
use AdrienGras\Umami\Exceptions\BotFilteredException;
try {
$umami->tracking->pageview(websiteId: $websiteId, userAgent: $ua);
} catch (BotFilteredException $e) {
// Umami returned 200 with `{"beep":"boop"}` — the hit was dropped as a bot.
} catch (UmamiApiException $e) {
// Any other API error (4xx/5xx).
}
bash
composer