Repository navigation
1.0.0
First stable release. Completes the post-MVP feature set that positions the
addon for the Statamic marketplace, and makes it installable and verifiable
on a current Statamic 6 install (Laravel 13).
Added
Integrations & Insights
- [new] Integration presets — a guided "pick a destination → fill a URL → done"
flow that builds a fully-configured outbound webhook from a recipe, so users
never hand-write a payload template. Ships Slack, Discord, Microsoft Teams,
Zapier, Make, n8n and Generic JSON, with a native gallery and setup form. - [new] "Send webhook" entry action — a native CP action that fires a chosen
enabled outbound webhook for the selected entries through the same delivery
pipeline as automatic triggers. - [new] Failure alerting & circuit breaker — throttled email + Slack alerts when
a delivery fails after all retries, and automatic disabling of a hook after
N consecutive terminal failures (consecutive_failures, configurable
threshold). Surfaced as native "Circuit breaker" / "Failure alerts" sections
on the Settings screen. - [new] Insights dashboard — delivery volume, success-rate trend, latency
percentiles (p50/p95/p99), error breakdown and top-failing endpoints, with
day-range and per-webhook filters. Self-contained charts (no charting
dependency) using the CP's own Tailwind tokens.
Storage
- [new] Flat-file (YAML) storage driver — webhook configuration (outbound,
inbound, rules, templates) can live as human-readable, git-versionable YAML
undercontent/webhooks/instead of database tables. Delivery records and
logs always stay in the database. Records keep a stable integer id so the
delivery/log history resolves under either driver. - [new]
webhook-manager:storage:migrate— copies config between theeloquent
andflatdrivers id-for-id (with--dry-run). - [new] Control-Panel storage switch (Settings → Storage) — shows the active
driver and record counts, and switches drivers (migrate + activate) without
any.env/shell access.
Tooling
- [new] Persistent local playground (
scripts/setup-playground.sh): a fresh
Statamic 6 site with the addon wired in as a Composer path repo, SQLite, a
CP super-user and seeded sample records (outbound webhook, inbound endpoint,
payload template) plus apagescollection soentry.*triggers fire. - [new] End-to-end smoke test (
scripts/smoke-test.sh): installs a throwaway
Statamic project, renders a payload template and delivers it to a local
receiver through the realDeliveryEngine, asserting theDeliveryis
recorded as a success. - [new] CI workflow (
.github/workflows/tests.yml): PHP 8.2/8.3/8.4 × Statamic 6. - [new]
composer testscript;supportblock and author email incomposer.json. - [new]
MARKETPLACE.mdlisting copy. - [new] Brand logo asset (
art/logo.svg) for the marketplace listing.
Fixed
- [fix] Install failed on a fresh Statamic 6 project (Laravel 13). The Statamic 6
skeleton now ships Laravel 13, butorchestra/testbenchwas capped at
^9|^10(Laravel 12), socomposer require --dev/composer updatecould not
resolve against a Laravel 13 host. Widened to^9|^10|^11(testbench 11 =
Laravel 13) andphpunit/phpunitto^10.5|^11|^12.
Changed
- Feature toggles are now enforced in the CP navigation. Disabling
inbound,rules,templates,debug_tools(oroutbound) in
config/webhook-manager.phphides that module's sidebar entry; previously
the toggles were only surfaced on the Settings screen. - Documentation accuracy: README status line, config comments and several
model/request docblocks described inbound, rules and templates as "stubs"
/ "no-op" / "returns 501" — these modules are in fact fully implemented and
test-covered. Updated the copy to match the shipping behaviour. .devcontainer/post-create.shnow delegates toscripts/setup-playground.sh.
Removed
- Dead
Jobs/DispatchRuleActionsJobplaceholder (emptyhandle(), never
dispatched — the rule engine runs synchronously viaRuleEngine).