Download the PHP package techrays-labs/laravel-webhooker without Composer

On this page you can find all versions of the php package techrays-labs/laravel-webhooker. It is possible to download/install these versions without Composer. Possible dependencies are resolved automatically.

FAQ

After the download, you have to make one include require_once('vendor/autoload.php');. After that you have to import the classes with use statements.

Example:
If you use only one package a project is not needed. But if you use more then one package, without a project it is not possible to import the classes with use statements.

In general, it is recommended to use always a project to download your libraries. In an application normally there is more than one library needed.
Some PHP packages are not free to download and because of that hosted in private repositories. In this case some credentials are needed to access such packages. Please use the auth.json textarea to insert credentials, if a package is coming from a private repository. You can look here for more information.

  • Some hosting areas are not accessible by a terminal or SSH. Then it is not possible to use Composer.
  • To use Composer is sometimes complicated. Especially for beginners.
  • Composer needs much resources. Sometimes they are not available on a simple webspace.
  • If you are using private repositories you don't need to share your credentials. You can set up everything on our site and then you provide a simple download link to your team member.
  • Simplify your Composer build process. Use our own command line tool to download the vendor folder as binary. This makes your build process faster and you don't need to expose your credentials for private repositories.
Please rate this library. Is it a good library?

Informations about the package laravel-webhooker

Latest Version on Packagist Total Downloads GitHub Stars GitHub Forks Latest Version GitHub Workflow Status GitHub License

Laravel Webhooker

A Laravel-native Webhook Reliability Engine for outbound and inbound webhook management with intelligent retry, replay, circuit breaker, and a built-in dashboard.

The Problem

Webhooks are critical infrastructure, but building reliable webhook delivery is hard. You need retry logic, signature verification, attempt logging, failure recovery, and operational visibility. Most teams either build fragile one-off solutions or rely on external SaaS services.

Laravel Webhooker gives you production-grade webhook infrastructure as a Composer package. Zero external dependencies. No SaaS billing. Just install, configure, and ship.

Features

Core

Observability

Control

Developer UX

Hardening

Scaling & Reliability (v2.0)

Dashboard

REST API (v1.0.0)

Event Transforms (v1.0.0)

Event Filtering (v1.0.0)

Event Schema Registry (v1.0.0)

Real-time WebSockets (v1.0.0)

Plugin System (v1.0.0)

Requirements

Installation

Publish the configuration file:

Run the migrations:

Quick Start: Outbound Webhooks

Register an endpoint

Dispatch an event

Dispatch with idempotency key

Broadcast to all active outbound endpoints

Dispatch to tagged endpoints

The event is persisted immediately and delivered asynchronously via your queue. If delivery fails, it retries automatically with exponential backoff.

Quick Start: Inbound Webhooks

Register an inbound endpoint

Inbound webhooks are received at:

Each endpoint gets a unique route_token (e.g., ep_a8f3kx9m2b7q) auto-generated on creation. The full URL is displayed in the dashboard for easy copy-paste.

The package automatically:

  1. Checks IP allowlist (if enabled)
  2. Verifies the HMAC signature via the X-Webhook-Signature header
  3. Rejects invalid or missing signatures with 401
  4. Deduplicates events via the X-Webhook-Event-ID header
  5. Persists the payload
  6. Queues it for async processing

Custom inbound processing

Bind your own processor in a service provider:

Dashboard

The built-in dashboard provides operational visibility into your webhook events.

Access it at /webhooks (configurable prefix).

The dashboard includes:

Authorization

The dashboard is protected by a Laravel Gate. Define it in your AuthServiceProvider:

Disable the dashboard

Circuit Breaker

The circuit breaker prevents wasting queue resources on consistently failing endpoints.

States:

The circuit breaker can be bypassed with --force on the replay command.

Endpoint Management

Enable/Disable

Tagging

Secret Rotation

After rotation, both old and new secrets are accepted during a configurable grace period (default: 24 hours). Expired previous secrets are cleaned up by the webhook:secret:cleanup command.

Retention & Pruning

By default, webhook events are retained for 30 days. Run the prune command regularly:

Or with a custom retention period:

Schedule it in your application:

Retry Configuration

The default retry strategy uses exponential backoff:

This produces delays of: 10s, 20s, 40s, 80s, 160s.

Per-endpoint retry

Custom retry strategy

Implement the RetryStrategy contract and bind it in your service provider:

Rate Limiting

Prevent overwhelming destination servers:

Per-endpoint override via the rate_limit_per_minute column on webhook_endpoints.

Payload Validation

Validate outbound payloads before dispatch:

Invalid payloads throw InvalidWebhookPayloadException.

IP Allowlist (Inbound)

Restrict inbound webhooks to known IPs:

Per-endpoint allowlists can be set via the allowed_ips JSON column.

Storage Driver Abstraction

Laravel Webhooker uses a pluggable storage layer based on Laravel's Manager pattern. The default driver is eloquent.

Custom storage drivers

Extend the WebhookStorageManager to register your own drivers:

Dead-Letter Queue

Events that exhaust all retries can be automatically moved to a dead-letter queue for inspection and manual retry.

Managing the DLQ

The WebhookMovedToDeadLetter event is fired when an event enters the DLQ.

Event Batching

Dispatch the same event to multiple endpoints as a tracked batch:

Endpoint Health History

Capture periodic health snapshots for trend analysis:

Schedule the snapshot command:

Access health history programmatically:

Multi-Database Support

Route reads to a replica and writes to the primary database:

All repository queries are automatically routed to the correct connection.

Table Partitioning

For high-volume installations, partition the webhook_events and webhook_attempts tables:

Publish the partition migration stubs:

Manage partitions via Artisan:

Supports MySQL (RANGE partitioning) and PostgreSQL (declarative partitioning).

Horizontal Scaling

For multi-worker deployments, enable distributed locking to prevent duplicate event processing:

When enabled, each webhook job acquires a distributed lock before processing. This ensures that even with multiple queue workers, each event is processed exactly once.

You can provide your own lock implementation by binding the WebhookLock contract:

Testing

Use the testing facade in your application's test suite:

Or use the trait:

Debug Mode

Enable verbose logging in development:

A runtime warning is logged if debug mode is enabled in a production environment.

Laravel Events

The package fires native Laravel events at key lifecycle points:

Event Fires When
WebhookSending Before outbound HTTP call
WebhookSent After successful delivery
WebhookFailed After a failed attempt
WebhookRetriesExhausted All retries used up
WebhookReplayRequested Replay triggered
InboundWebhookReceived Inbound payload arrives
InboundWebhookProcessed Inbound processing succeeds
InboundWebhookFailed Inbound processing fails
EndpointDisabled Endpoint disabled
EndpointEnabled Endpoint re-enabled
EndpointCircuitOpened Circuit breaker trips
EndpointCircuitClosed Circuit breaker recovers
EndpointSecretRotated Secret rotation completed
WebhookMovedToDeadLetter Event moved to dead-letter queue
WebhookBatchCompleted All events in a batch succeeded
WebhookBatchPartiallyFailed Batch completed with mixed results

CLI Commands

Command Description
webhook:prune Delete events older than retention period
webhook:replay {event_id} Re-dispatch a single event
webhook:replay --status= --endpoint= Bulk replay with filters
webhook:endpoint:list List all registered endpoints
webhook:endpoint:disable {id} Disable an endpoint
webhook:endpoint:enable {id} Enable an endpoint
webhook:health Show health status of all endpoints
webhook:circuit:status Show circuit breaker states
webhook:circuit:reset {endpoint_id} Reset circuit breaker
webhook:simulate {type} Simulate inbound webhook delivery
webhook:secret:rotate {endpoint_id} Rotate endpoint secret
webhook:secret:cleanup Remove expired previous secrets
webhook:dead-letter list\|retry\|purge\|count Manage dead-letter queue
webhook:health:snapshot Capture endpoint health snapshots
webhook:partition:create Create future table partitions
webhook:partition:drop Drop old table partitions

Configuration Reference

Upgrade Guide

Upgrading from v0.1.0 to v2.0.0

v2.0.0 introduces breaking changes to the WebhookRepository contract, DispatchWebhookJob, and ProcessInboundWebhookJob. If you have custom implementations of these contracts, you will need to update them.

  1. Run the new migrations:

  2. If you have a custom WebhookRepository implementation, add the new method signatures from the contract.

  3. If you dispatch jobs manually (outside the facade), update handle() calls to include the WebhookLock parameter.

  4. Review the new config sections added to config/webhooks.php and publish updated config if needed:

Roadmap

v0.1.0 (Released)

Core webhook engine: outbound/inbound delivery, retry, signatures, circuit breaker, dashboard, tagging, rate limiting, payload validation, IP allowlist, secret rotation, idempotency, testing facade, debug mode.

v2.0.0 (Released)

Future

Contributing

Contributions are welcome. Please follow these guidelines:

  1. Fork the repository
  2. Create a feature branch (feature/your-feature)
  3. Write tests for your changes
  4. Ensure all tests pass (vendor/bin/phpunit)
  5. Format code with Laravel Pint (vendor/bin/pint)
  6. Use conventional commits (feat:, fix:, refactor:, test:, docs:)
  7. Submit a pull request

License

MIT License. See LICENSE for details.


All versions of laravel-webhooker with dependencies

PHP Build Version
Package Version
Requires php Version ^8.1
illuminate/contracts Version ^10.0|^11.0|^12.0|^13.0
illuminate/database Version ^10.0|^11.0|^12.0|^13.0
illuminate/http Version ^10.0|^11.0|^12.0|^13.0
illuminate/queue Version ^10.0|^11.0|^12.0|^13.0
illuminate/routing Version ^10.0|^11.0|^12.0|^13.0
illuminate/support Version ^10.0|^11.0|^12.0|^13.0
illuminate/view Version ^10.0|^11.0|^12.0|^13.0
Composer command for our command line client (download client) This client runs in each environment. You don't need a specific PHP version etc. The first 20 API calls are free. Standard composer command

The package techrays-labs/laravel-webhooker contains the following files

Loading the files please wait ...