Styling the UI
The package ships no compiled stylesheet — the two Tailwind source registrations every screen needs, the icon set, dark mode, and embedding under a strict Content-Security-Policy.
Localization
Seven shipped languages under the webhooks namespace, one file per surface plus the number separators, how to override a single string, and how to add a locale.
Querying the tables yourself
Why a plain where('created_at', …) against the delivery log is silently wrong on both engines and the shipped scopes that bind the instant correctly per dialect, plus the three columns that refuse a hand-written row — one of them on only one engine.
Scheduled maintenance
What the package schedules against the default connection, how to notice when one of those jobs stops, and why a database-per-tenant host must switch it off and run the commands inside its own tenant loop.
Testing your integration
Assert the fan-out with Bus::fake(), drive a real request end to end, and what the package's own suite needs if you are working on the package itself.
Upgrading from 0.x
Version 1.0.0 is a ground-up rewrite — the new sender, the new default signature, the receive adapter that keeps your existing consumers verifying, and the reorganized config.
Coming from another webhook package
A superset of a send-only and a receive-only webhook package on either engine — what replaces what, and the idempotent backfill that carries an existing webhook_calls history across whatever its columns are called.
Upgrading from 1.x
2.0.0 moves the package namespace to Pushery\Webhooks. What composer handles, the six things it does not, and why no database migration is needed.
Upgrading from 2.x
3.0.0 renames the backlog import and drops a column nothing ever wrote. Three changes, one of which can duplicate an imported history if you skip it.
Searching the logs
The full-text index over the delivery and call logs is opt-in and takes three steps, none of which happens by flipping search.enabled — Scout is a suggestion, not a dependency, a ready-made searchable model has to be pointed at, and the payload is behind a fourth switch of its own.