Skip to main content

Upgrading from 0.x

Version 1.0.0 is a ground-up rewrite; treat it as a new major.

  • No third-party webhook-engine dependency. The delivery engine is now entirely in-house. Sending moved to the fluent Pushery\Webhooks\Server\PendingWebhook builder.
  • Standard Webhooks is now the default signature. Deliveries carry webhook-id / webhook-timestamp / webhook-signature: v1,<base64> over {id}.{timestamp}.{rawBody} — replacing 0.x's single Webhook-Signature: t=<unix>,v1=<hex> header. Any Standard Webhooks SDK verifies them. Your existing consumers keep working: that 0.x dialect ships on as the Pushery\Webhooks\Core\Signing\StripeStyleScheme receive adapter, so an app that receives 0.x-format traffic verifies it by setting scheme => StripeStyleScheme::class on the source. (Do not reach for StripeScheme — it pins Stripe's own Stripe-Signature header and will not verify a Webhook-Signature one.)
  • The 0.x Webhooks\Signing\SignatureVerifier is removed. The 0.x helper you shipped to consumers is gone: a consumer now verifies with any Standard Webhooks SDK (in any language), or, while it is still on the old format, with StripeStyleScheme during the migration window.
  • Config was reorganized under core / server / platform / client / dashboard (plus pulse / search / otel). Re-publish config/webhooks.php and move your settings into the new tree; the old flat keys are gone.
  • New capabilities: inbound receiving, a self-service portal, endpoint health scoring, per-endpoint payload transforms, and an observability dashboard — all opt-in.
  • Migrations were recut. Re-publish and review the migrations before upgrading a populated database.

Because this is a new major, review your integration end to end rather than expecting a drop-in bump.

The full history is in the CHANGELOG.