PHPackages                             snb4crazy/webhook-manager-laravel - 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. [Queues &amp; Workers](/categories/queues)
4. /
5. snb4crazy/webhook-manager-laravel

ActiveLibrary[Queues &amp; Workers](/categories/queues)

snb4crazy/webhook-manager-laravel
=================================

Queue-aware webhook sender and signature verifier for Laravel apps.

v0.1.0(yesterday)00MITPHPPHP ^8.2

Since Jul 6Pushed yesterdayCompare

[ Source](https://github.com/snb4crazy/webhook-manager-laravel)[ Packagist](https://packagist.org/packages/snb4crazy/webhook-manager-laravel)[ RSS](/packages/snb4crazy-webhook-manager-laravel/feed)WikiDiscussions master Synced today

READMEChangelogDependencies (9)Versions (6)Used By (0)

webhook-manager-laravel
=======================

[](#webhook-manager-laravel)

[![License](https://camo.githubusercontent.com/884ea7df05c5f5e84f2dfd4867a5989b828e74f742df9c2ad7091202f7effdd9/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6963656e73652f736e62346372617a792f776562686f6f6b2d6d616e616765722d6c61726176656c)](LICENSE)[![Latest Release](https://camo.githubusercontent.com/84d696d9ce9f0735730ec10ebbc8db83f6bad1d38e17f9bc54a8e4562fd058cd/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f762f72656c656173652f736e62346372617a792f776562686f6f6b2d6d616e616765722d6c61726176656c3f736f72743d73656d766572)](https://github.com/snb4crazy/webhook-manager-laravel/releases)[![PHP](https://camo.githubusercontent.com/ccaa43fc634d348cffccb1d8db7b55d9f17c5d46944bc99a15c3c982724b387d/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f5048502d382e322532422d3737374242343f6c6f676f3d706870266c6f676f436f6c6f723d7768697465)](https://www.php.net/)[![Laravel](https://camo.githubusercontent.com/8343e04c7a4e6f6009fcaea5a48b2636fd8b099c309e8e2740079d30a8bec89f/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4c61726176656c2d31302532302537432532303131253230253743253230313225323025374325323031332d626c75653f6c6f676f3d6c61726176656c266c6f676f436f6c6f723d7768697465)](https://laravel.com/)[![Last Commit](https://camo.githubusercontent.com/f2ce376d60b615305fd81f68c7b51bf860ff1b69b70b5c3794dfb99a4f3633ba/68747470733a2f2f696d672e736869656c64732e696f2f6769746875622f6c6173742d636f6d6d69742f736e62346372617a792f776562686f6f6b2d6d616e616765722d6c61726176656c)](https://github.com/snb4crazy/webhook-manager-laravel/commits/main)

Queue-aware webhook delivery package for Laravel with HMAC signing, signature verification, retries, and delivery logs.

Features
--------

[](#features)

- `Webhook::send(...)` for outbound webhook delivery
- `Webhook::verify(...)` for inbound signature verification
- `Webhook::retry(...)` for manual replay
- Timestamped SHA-256 HMAC signature header (`t=,v1=`)
- Queue-driven delivery with configurable retries/backoff
- `webhook_deliveries` table for observability and replay workflows

Requirements
------------

[](#requirements)

DependencyVersionPHP8.2+Laravel10-13Installation
------------

[](#installation)

### Option A: Before Packagist (GitHub VCS)

[](#option-a-before-packagist-github-vcs)

Use this until the package is published on Packagist.

1. Add repository source in your app `composer.json`:

```
{
  "repositories": [
    {
      "type": "vcs",
      "url": "https://github.com/snb4crazy/webhook-manager-laravel"
    }
  ]
}
```

2. Require the package from the `master` branch:

```
composer require snb4crazy/webhook-manager-laravel:dev-master
```

### Option B: After Packagist (recommended)

[](#option-b-after-packagist-recommended)

Once `v0.1.0` is tagged and synced to Packagist:

```
composer require snb4crazy/webhook-manager-laravel:^0.1
```

Then run the same setup steps:

1. Publish config + migrations and migrate:

```
php artisan vendor:publish --tag=webhook-manager-config
php artisan vendor:publish --tag=webhook-manager-migrations
php artisan migrate
```

2. If queue delivery is enabled (default), run a queue worker:

```
php artisan queue:work
```

Configuration
-------------

[](#configuration)

Set package options in `.env`:

```
WEBHOOK_MANAGER_ENABLED=true
WEBHOOK_MANAGER_SECRET=your-shared-secret
WEBHOOK_MANAGER_SIGNATURE_HEADER=X-Webhook-Signature
WEBHOOK_MANAGER_TIMESTAMP_TOLERANCE=300

WEBHOOK_MANAGER_QUEUE=true
WEBHOOK_MANAGER_QUEUE_CONNECTION=database
WEBHOOK_MANAGER_QUEUE_NAME=webhooks
WEBHOOK_MANAGER_MAX_ATTEMPTS=3
WEBHOOK_MANAGER_CONNECT_TIMEOUT=5
WEBHOOK_MANAGER_TIMEOUT=10
WEBHOOK_MANAGER_LOG_CHANNEL=
WEBHOOK_MANAGER_STORE_RESPONSE_BODY=false
```

Quick start
-----------

[](#quick-start)

### Send a webhook

[](#send-a-webhook)

```
use WebhookManager\Laravel\Facades\Webhook;

Webhook::send(
    url: 'https://receiver.example.com/hooks/orders',
    payload: [
        'event' => 'order.created',
        'order_id' => $order->id,
        'total' => $order->total,
    ],
    options: [
        'event' => 'order.created',
        'secret' => config('services.partner.webhook_secret'),
        'headers' => ['X-Webhook-Source' => config('app.name')],
        'max_attempts' => 5,
        'queue' => true, // set false to send synchronously
    ],
);
```

### Verify an incoming webhook

[](#verify-an-incoming-webhook)

```
use Illuminate\Http\Request;
use WebhookManager\Laravel\Facades\Webhook;

public function __invoke(Request $request)
{
    $signature = (string) $request->header('X-Webhook-Signature');

    abort_unless(
        Webhook::verify($request->getContent(), $signature, config('services.partner.webhook_secret')),
        401,
        'Invalid webhook signature.'
    );

    // Process verified payload...
}
```

### Retry a failed delivery

[](#retry-a-failed-delivery)

```
use WebhookManager\Laravel\Facades\Webhook;

Webhook::retry($deliveryId);
// or Webhook::retry($deliveryModel);
```

Delivery logs
-------------

[](#delivery-logs)

Each call to `Webhook::send()` creates/updates a row in `webhook_deliveries`:

- `status`: `pending`, `delivered`, `failed`
- `attempts`, `max_attempts`, `last_attempt_at`, `delivered_at`
- `response_status`, `last_error`, optional `response_body`
- stored `payload`, `headers`, and generated `signature`

This table is useful for admin screens, incident investigation, and manual replay tools.

User stories
------------

[](#user-stories)

StoryHow to do it with this packageAs a SaaS provider, I need to notify customers when an event happens.Call `Webhook::send($url, $payload, ['event' => '...'])` from your domain event listener/job.As a receiver, I need to trust only authentic webhook calls.Validate `X-Webhook-Signature` with `Webhook::verify($rawBody, $signature, $secret)`.As an operator, I need to recover from transient outages.Keep queue mode enabled, tune `WEBHOOK_MANAGER_MAX_ATTEMPTS`, and use `Webhook::retry($deliveryId)` for manual replay.As a support engineer, I need auditability for deliveries.Query the `webhook_deliveries` table for failures, response codes, and attempt history.Recommended badges
------------------

[](#recommended-badges)

Already included above:

- License
- Latest release
- PHP support
- Laravel support
- Last commit

Useful additions once available:

- **CI status** (`github/actions/workflow/status/...`) after adding GitHub Actions
- **Code coverage** (Codecov/Coveralls) after publishing coverage reports
- **Packagist version/downloads** after package publication on Packagist

Testing
-------

[](#testing)

```
composer test
```

License
-------

[](#license)

MIT

###  Health Score

38

—

LowBetter than 83% of packages

Maintenance100

Actively maintained with recent releases

Popularity0

Limited adoption so far

Community6

Small or concentrated contributor base

Maturity40

Maturing project, gaining track record

 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.

###  Release Activity

Cadence

Unknown

Total

1

Last Release

1d ago

### Community

Maintainers

![](https://avatars.githubusercontent.com/u/4397652?v=4)[Serhii](/maintainers/snb4crazy)[@snb4crazy](https://github.com/snb4crazy)

---

Top Contributors

[![snb4crazy](https://avatars.githubusercontent.com/u/4397652?v=4)](https://github.com/snb4crazy "snb4crazy (31 commits)")

---

Tags

laravelqueueretrywebhookhmac

###  Code Quality

TestsPHPUnit

### Embed Badge

![Health badge](/badges/snb4crazy-webhook-manager-laravel/health.svg)

```
[![Health](https://phpackages.com/badges/snb4crazy-webhook-manager-laravel/health.svg)](https://phpackages.com/packages/snb4crazy-webhook-manager-laravel)
```

###  Alternatives

[psalm/plugin-laravel

Psalm plugin for Laravel

3355.4M352](/packages/psalm-plugin-laravel)[laravel/scout

Laravel Scout provides a driver based solution to searching your Eloquent models.

1.7k57.2M659](/packages/laravel-scout)[laravel/horizon

Dashboard and code-driven configuration for Laravel queues.

4.2k99.8M338](/packages/laravel-horizon)[laravel/pulse

Laravel Pulse is a real-time application performance monitoring tool and dashboard for your Laravel application.

1.7k16.3M144](/packages/laravel-pulse)[illuminate/auth

The Illuminate Auth package.

9328.5M1.3k](/packages/illuminate-auth)[api-platform/laravel

API Platform support for Laravel

58174.6k18](/packages/api-platform-laravel)

PHPackages © 2026

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