What
Build a frontend page/section for organizations to create, list, and delete their own webhook subscriptions.
Why
The backend already has a full webhook API surface — webhook.controller.ts, webhook.routes.ts, webhook.service.ts — with auth and tenant-isolation middleware recently added. grep -rli webhook frontend/src turns up only an unrelated string match in PayrollScheduler.tsx. There is currently no way for an org admin to actually use this feature from the product itself.
Scope
In scope:
- New page (e.g. under Settings/Org Settings) listing an org's existing webhook subscriptions
- Form to create a new subscription (target URL, event types)
- Delete/revoke action for an existing subscription
- Loading, empty, and error states
- Wire to the existing backend webhook endpoints
Out of scope:
- Any backend changes to the webhook API itself
- Webhook delivery-log/debugging UI (view past deliveries) — can be a follow-up
Acceptance Criteria
Technical Context
- Backend:
backend/src/controllers/webhook.controller.ts, backend/src/routes/webhook.routes.ts, backend/src/services/webhook.service.ts
- Frontend: add under
frontend/src/pages/ following existing patterns (e.g. Settings.tsx)
- Related: webhook storage itself is being made persistent in a companion backend issue — coordinate error handling accordingly if that lands first
What
Build a frontend page/section for organizations to create, list, and delete their own webhook subscriptions.
Why
The backend already has a full webhook API surface —
webhook.controller.ts,webhook.routes.ts,webhook.service.ts— with auth and tenant-isolation middleware recently added.grep -rli webhook frontend/srcturns up only an unrelated string match inPayrollScheduler.tsx. There is currently no way for an org admin to actually use this feature from the product itself.Scope
In scope:
Out of scope:
Acceptance Criteria
Technical Context
backend/src/controllers/webhook.controller.ts,backend/src/routes/webhook.routes.ts,backend/src/services/webhook.service.tsfrontend/src/pages/following existing patterns (e.g.Settings.tsx)