symfony/webhook
Symfony Webhook component for sending and consuming webhooks. Helps build webhook endpoints, verify and parse incoming requests, and dispatch outgoing webhooks with consistent signatures and payload handling across integrations.
symfony/webhook is Symfony-native, it integrates seamlessly with Laravel via adapters like spatie/laravel-webhook-server or fruitcake/laravel-webhook-handler. The package’s event-driven architecture (e.g., RemoteEvent, RequestParserInterface) maps cleanly to Laravel’s event system and queue workers, enabling a unified webhook infrastructure.symfony/http-client, symfony/serializer). Feasible with:
spatie/laravel-webhook-server) to abstract Symfony components.HttpClient for outgoing webhooks, wrapped with Symfony’s WebhookSender.Messenger can be bridged to Laravel Queues via custom listeners (e.g., ShouldQueue events).webhook_events table for retries/auditing).VerifyCsrfToken, ThrottleRequests) for security/rate limiting.| Risk | Mitigation Strategy |
|---|---|
| Symfony dependency bloat | Use minimal adapters (e.g., spatie/laravel-webhook-server) and avoid direct Symfony components. |
| PHP 8.1+ requirement | Upgrade Laravel to 9.x/10.x (LTS) if on older versions (PHP 7.4/8.0). |
| Learning curve | Leverage Symfony’s documentation and Laravel’s event/queue patterns for familiarity. |
| Custom parser complexity | Start with pre-built parsers (Stripe/GitHub) before extending for custom payloads. |
| Queue integration gaps | Build a Laravel Queue listener to bridge Symfony’s Messenger retries. |
| Performance overhead | Benchmark payload parsing and retry logic under load; optimize with caching. |
spatie/laravel-webhook-server) and document Symfony-specific quirks.fruitcake/laravel-webhook-handler) may suffice.HttpClient + Symfony’s WebhookSender for retries/signing, or build a custom facade.Messenger) may conflict with Laravel’s synchronous routes. Plan for hybrid sync/async workflows.spatie/laravel-webhook-server as a Symfony-to-Laravel bridge.HttpClient with Symfony’s WebhookSender for retry logic.Messenger to Laravel Queues via a custom job listener.symfony/webhook, spatie/laravel-webhook-server (or fruitcake/laravel-webhook-handler).symfony/http-client, symfony/serializer (if not using Laravel’s alternatives).webhook_events table for retry tracking and auditing (e.g., id, payload, status, retries).jobs) for async processing.spatie/laravel-webhook-server.Messenger (bridged to Laravel Queues).| Component | Compatibility Notes |
|---|---|
| Laravel Events | Symfony’s RemoteEvent can trigger Laravel events via a custom listener. |
| Laravel Queues | Symfony’s Messenger retries can be mapped to Laravel Queues using a job listener. |
| Laravel Middleware | Works with existing middleware (e.g., VerifyCsrfToken, ThrottleRequests). |
| Laravel Validation | Use Laravel’s Form Request validation alongside Symfony’s RequestParser. |
| Laravel HTTP Client | Replace Symfony’s HttpClient with Laravel’s HttpClient for outgoing webhooks. |
| Database | No strict requirements, but queue tables and audit logging may need schema updates. |
symfony/webhook + spatie/laravel-webhook-server.WebhookReceiver in Laravel’s routes/web.php./stripe-webhook, /github-webhook).StripeWebhookParser) or custom parsers for niche payloads.WebhookSender using Laravel’s HttpClient.SendWebhookJob).Messenger to Laravel Queues using a custom ShouldQueue event listener.log channel or a dedicated audit table.failed_events_total, processing_time_ms) via Laravel Telescope or Prometheus.spatie/laravel-webhook-server abstract Symfony-specific code.How can I help you explore Laravel packages today?