Об этом проекте
Laravel Metrics Plausible — это библиотека PHP, обворачивающая Plausible Analytics Stats API v2 и предоставляющая понятный, нативный для Laravel интерфейс для получения и управления аналитическими данными.
Основные возможности
- Получение агрегированных итоговых данных (посетители, просмотры страниц, показатель отказов и т. д.)
- Запрос данных временных рядов с настраиваемыми диапазонами дат и измерениями (почасово, ежедневно, ежемесячно)
- Детализация по страницам, страницам входа/выхода, источникам, каналам, UTM-параметрам, странам, регионам, городам, устройствам, браузерам и операционным системам
- Доступ к конверсиям целей, кастомным событиям и количеству посетителей в реальном времени
- Управление сайтами и целями Plausible (просмотр списка, создание, удаление)
- Построение кастомных запросов с помощью query builder, который повторяет структуру API payload
- Обработка аутентификации, ограничений частоты запросов (rate-limit) и общих ошибок API с помощью специальных исключений
- Работа как с Plausible Cloud, так и с self-hosted Community Edition
- Конфигурация хранится в базе данных с помощью spatie/laravel-settings, что исключает необходимость в конфигурационных файлах
Установка
1. Добавьте пакет: composer require jeffersongoncalves/laravel-metrics-plausible
2. Запустите миграции для создания таблицы настроек: php artisan migrate
Конфигурация
После миграции переменные окружения заполняют настройки:
PLAUSIBLE_API_KEY — API-ключ из Plausible Settings → API Keys
PLAUSIBLE_SITE_ID — домен сайта (например, example.com)
PLAUSIBLE_BASE_URL — базовый URL Plausible (по умолчанию https://plausible.io, измените для self-hosted)
Настройки также можно обновить программно с помощью класса PlausibleSettings.
Обзор использования
Все взаимодействия выполняются через фасад Plausible.
Агрегированные итоговые показатели:
$stats = Plausible::aggregate();
$stats->visitors(); // 1234
$stats->pageviews(); // 4321
Временные ряды:
$rows = Plausible::timeseries(DateRange::Last30Days, Dimension::TimeDay);
foreach ($rows as $row) {
echo $row->label . ': ' . $row->visitors();
}
Детализация (страницы, источники, страны, устройства и т. д.) доступна через специальные методы, такие как Plausible::pages(), Plausible::countries(), Plausible::devices().
Посетители в реальном времени:
$visitors = Plausible::realtimeVisitors();
Пользовательские запросы:
$query = Plausible::query()
->metrics(Metric::Visitors, Metric::Pageviews)
->dateRange(DateRange::Last7Days)
->dimensions(Dimension::Page)
->filter('is', Dimension::Country, ['BR', 'PT'])
->orderBy(Metric::Visitors, 'desc')
->limit(50);
$rows = Plausible::rows($query);
Управление сайтами:
Plausible::sites();
Plausible::createSite('example.com', 'America/Sao_Paulo');
Plausible::deleteSite('example.com');
Управление целями:
Plausible::goals();
Plausible::createEventGoal('Signup');
Plausible::deleteGoal(1);
Перечисления (Enums)
Metric — Visitors, Visits, Pageviews, BounceRate, VisitDuration, Events и т. д.
DateRange — Day, Last7Days, Last30Days, Last12Months, Year, All и т. д.
Dimension — Page, Hostname, Source, Referrer, Device, Browser, Country, City, TimeHour, TimeDay и т. д.
Обработка ошибок
- AuthenticationException: отсутствует/недействителен API-ключ или ID сайта, либо получен ответ 403.
- RateLimitException: ответ HTTP 429.
- PlausibleException: общие сбои API (базовый класс для указанных выше).
Тестирование и разработка
Запустите набор тестов с помощью composer test, отформатируйте код с помощью composer format и выполните статический анализ с помощью composer analyse.
Лицензия
Распространяется под лицензией MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.