finds.dev← search

// the find

spatie/laravel-stripe-webhooks

★ 523 · PHP · MIT · updated Jun 2026

Handle Stripe webhooks in a Laravel application

A thin Laravel wrapper around Spatie's own laravel-webhook-client that handles Stripe signature verification, deduplication, and event routing to jobs or listeners. If you're already using Laravel and need to handle Stripe webhooks without rolling your own signature verification and DB logging, this gets you there in about 15 minutes. It's intentionally narrow — it receives and routes, nothing more.

Signature verification is on by default and has to be explicitly disabled, which is the right default for payment webhooks. Automatic DB logging of every webhook call means you have a retry path when your job handler blows up — dispatch ProcessStripeWebhookJob against any stored WebhookCall id. Stripe Connect multi-secret support via config key suffixes is handled cleanly without requiring separate routes or controllers. The profile abstraction lets you swap in custom shouldProcess logic without forking the package.

The package is a thin facade over laravel-webhook-client, so you're taking on two dependencies when the actual webhook-client layer does the heavy lifting — if that upstream package breaks or changes its API, you feel it here too. Event routing is string-keyed config (`charge_failed` -> job class), which means a typo silently drops events with no warning at startup. No built-in handling for Stripe's event ordering problem — if payment_intent.succeeded arrives before payment_intent.created due to retry timing, your job handlers are on their own. At 523 stars for a package that solves a near-universal Laravel+Stripe problem, adoption is surprisingly low, which probably reflects that most teams just copy-paste the 20 lines of signature verification rather than pull in a dependency.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →