PHPackages                             parabellumkoval/webhooks - 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. [Admin Panels](/categories/admin)
4. /
5. parabellumkoval/webhooks

ActiveLibrary[Admin Panels](/categories/admin)

parabellumkoval/webhooks
========================

Admin webhook management with manual, event-driven and scheduled triggers.

040PHP

Since Dec 21Pushed 4mo agoCompare

[ Source](https://github.com/parabellumKoval/webhooks)[ Packagist](https://packagist.org/packages/parabellumkoval/webhooks)[ RSS](/packages/parabellumkoval-webhooks/feed)WikiDiscussions main Synced 1mo ago

READMEChangelogDependenciesVersions (1)Used By (0)

parabellumkoval/webhooks
========================

[](#parabellumkovalwebhooks)

Модуль для управления вебхуками фронтенда из админки Backpack. Поддерживает ручные действия, запуск по событиям домена и расписание.

Возможности
-----------

[](#возможности)

- 📦 Виджет `/admin/cache-management` с кнопками прогрева разных частей фронтенда.
- ⚙️ Единая структура конфигурации `config/webhooks.php` (юниты, события, расписания).
- 🧩 Event-mode: привязка Laravel событий к вебхукам. Каждый юнит может подписываться на любое количество событий, данные события передаются на фронт.
- 🔁 Placeholder &amp; batching: поддержка URL вида `/api/_categories/refresh/:slug` с автоматической подстановкой slug и объединением массовых изменений в один запрос.
- ⏰ Schedule-mode: запуск выбранных юнитов по cron (например, автообновление списков на главной каждый 30 минут).
- 📊 Мониторинг: статус последнего запуска хранится в кеше (`webhooks.latest.{unit_key}`) и показывается в виджете.
- 🔌 CLI-инструменты: `php artisan frontend:test-connection`, `frontend:test-job-behavior`, `frontend:debug-url` работают с новой конфигурацией.

Конфигурация
------------

[](#конфигурация)

Файл `config/webhooks.php` (можно опубликовать `php artisan vendor:publish --tag=webhooks-config`). Пример юнита:

```
'units' => [
    'refresh_categories' => [
        'title' => 'Обновить категории',
        'desc' => 'Перегенерация слуг и дерева категорий',
        'url' => [
            '/api/_categories/refresh/slugs',
            '/api/_categories/refresh/list',
        ],
        'button' => 'Обновить категории',
        'icon' => 'la-list-alt',
        'color' => 'btn-info',
        'events' => ['categories.changed'],
    ],
    'refresh_category_slug' => [
        'title' => 'Категория по slug',
        'desc' => 'Срабатывает только по событиям',
        'url' => '/api/_categories/refresh/:slug',
        'visible_in_widget' => false,
        'events' => ['categories.changed'],
        'payload' => [
            'placeholder_key' => 'slug',
            'batch' => [
                'url' => '/api/_categories/refresh/slugs',
                'body_key' => 'slugs',
            ],
        ],
        'event_buffer' => [
            'delay' => 5,
            'max_items' => 40,
        ],
    ],
],
```

Основные секции:

- `units.*.events` — список внутренних событий (keys из `events` блока), на которые реагирует юнит.
- `units.*.schedules` — ключи расписаний (`schedules` блок).
- `events` — маппинг внутренних событий на реальные Laravel события + резолвер полезной нагрузки.
- `schedules` — cron-выражения и список юнитов, которые должны запускаться.

События
-------

[](#события)

KeyLaravel eventРезолверЧто триггерит`settings.updated``Backpack\Settings\Events\SettingsGroupChanged``SettingsGroupChangedResolver`Сохранение любой группы настроек`currency_rates.updated``Backpack\Store\app\Events\CurrencyRateChanged``CurrencyRateChangedResolver`CRUD курсов валют`categories.changed``Backpack\Store\app\Events\CategoryChanged``CategoryChangedResolver`Создание/редактирование/удаление категорий`homepage.lists.updated``Backpack\Store\app\Events\ProductListChanged``ProductListChangedResolver`Изменения списков товаров`homepage.articles.updated``Backpack\Articles\app\Events\ArticleChanged``ArticleChangedResolver`Сохранение/удаление статей`homepage.video_reviews.updated``Backpack\Reviews\app\Events\ReviewChanged``ReviewChangedResolver`Видео отзывыЛюбой юнит может подписаться на несколько событий (например, категории реагируют на `categories.changed` и одновременно запускаются CRON-ом).

Расписания
----------

[](#расписания)

`schedules` секция описывает cron для автоматического запуска юнитов. Пример:

```
'schedules' => [
    'homepage-lists-half-hour' => [
        'cron' => '*/30 * * * *',
        'units' => ['refresh_homepage_lists'],
        'description' => 'Обновить списки каждые 30 минут',
    ],
],
```

При выполнении `php artisan schedule:run` Laravel вызывает `WebhookDispatcher`, который ставит соответствующие задания в очередь.

Виджет `/admin/cache-management`
--------------------------------

[](#виджет-admincache-management)

- Использует представление `webhooks::widgets.frontend_cache_refresh`.
- Отображаются только юниты, у которых `visible_in_widget = true`.
- Кнопка вызывает `POST /admin/frontend-cache-refresh` с `unit_key`.
- Статусы подгружаются AJAX-ом каждые 30 секунд (`GET /admin/frontend-cache-refresh/status`).

CLI и отладка
-------------

[](#cli-и-отладка)

- `php artisan frontend:test-connection` — проверка всех настроенных вебхуков.
- `php artisan frontend:debug-url /api/_fetcher/homepage-main-lists/refresh` — подробный вывод по одному URL.
- `php artisan frontend:test-job-behavior /api/_fetcher/homepage-main-lists/refresh` — повторяет HTTP-клиент, который использует очередь.
- Логи: `tail -f storage/logs/laravel.log | grep Webhook`.

Интеграция с фронтендом
-----------------------

[](#интеграция-с-фронтендом)

Бэкенд всегда отправляет POST-запросы на относительные эндпоинты, дополняя их базовым `FRONT_URL`. В теле:

```
{
  "timestamp": 1736424474,
  "origin": "event", // manual | schedule
  "unit": "refresh_categories",
  "event": "categories.changed",
  "items": [ {"slug": "odezhda"} ],
  "slugs": ["odezhda","obuv"], // если настроен batch
  "meta": {"schedule": "homepage-lists-half-hour"}
}
```

Ответ фронтенда должен быть JSON со статусом 200. При ошибках статус и тело логируются и отображаются в виджете.

###  Health Score

21

—

LowBetter than 19% of packages

Maintenance53

Moderate activity, may be stable

Popularity10

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity12

Early-stage or recently created project

 Bus Factor1

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

### Community

Maintainers

![](https://www.gravatar.com/avatar/1a9edb05ebf647a1976e4dbf92497c0186607984165f62b97b6498a01e9141ab?d=identicon)[parabellumKoval](/maintainers/parabellumKoval)

---

Top Contributors

[![parabellumKoval](https://avatars.githubusercontent.com/u/27732309?v=4)](https://github.com/parabellumKoval "parabellumKoval (2 commits)")

### Embed Badge

![Health badge](/badges/parabellumkoval-webhooks/health.svg)

```
[![Health](https://phpackages.com/badges/parabellumkoval-webhooks/health.svg)](https://phpackages.com/packages/parabellumkoval-webhooks)
```

###  Alternatives

[jeroennoten/laravel-adminlte

Easy AdminLTE integration with Laravel

4.0k4.8M43](/packages/jeroennoten-laravel-adminlte)[dmstr/yii2-adminlte-asset

AdminLTE backend theme asset bundle for Yii 2.0 Framework

1.1k1.8M67](/packages/dmstr-yii2-adminlte-asset)[dwij/laraadmin

LaraAdmin is a Open source Laravel Admin Panel / CMS which can be used as Admin Backend, Data Management Tool or CRM boilerplate for Laravel with features like CRUD Generation, Module Manager, Media, Menus, Backups and much more

1.6k68.7k](/packages/dwij-laraadmin)[filament/spatie-laravel-media-library-plugin

Filament support for `spatie/laravel-medialibrary`.

1764.8M125](/packages/filament-spatie-laravel-media-library-plugin)[bezhansalleh/filament-exceptions

A Simple &amp; Beautiful Pluggable Exception Viewer for FilamentPHP's Admin Panel

193195.9k13](/packages/bezhansalleh-filament-exceptions)[filament/infolists

Easily add beautiful read-only infolists to any Livewire component.

1220.8M36](/packages/filament-infolists)

PHPackages © 2026

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