Webhooks
Outbound workspace webhooks POST signed JSON to your HTTPS URL when subscribed events fire. They are not API polling, not payment-provider inbound callbacks, and not platform billing webhooks.
Settings → Integrations → Webhooks · /app/w/{workspace}/webhooks · plan api_access · webhooks.view / webhooks.manage
The Settings hub item appears only when api_access is on and the actor has webhooks.view. Queue worker required. HTTPS in production.
Three webhook families
Section titled “Three webhook families”| Family | Where you configure it | Not |
|---|---|---|
| Tenant outbound | This page — Veldriq → your URL | Payment dashboards |
| Tenant online payments inbound | Settings → Online payments · POST /webhooks/fsm-payments/{provider} |
This endpoints list |
| PLAN1 / platform billing inbound | Platform payment gateways | Job invoices / tenant webhooks |
SMS/WhatsApp inbound use /webhooks/fsm-communications/…. Do not paste those URLs here.
Create an outbound endpoint
Section titled “Create an outbound endpoint”- Plan feature
api_access. Permissionwebhooks.manage. - Settings hub → Webhooks (route is
/webhooks, not/settings/webhooks). - Add endpoint. Endpoint URL must start with
https://(max 2048). Optional Label. - Events — tick the keys you need.
- Save. Copy the signing secret now (
whsec_…). It is shown once. Active endpoints receive matching events asynchronously.
Test: Test on the endpoint. History: Recent deliveries (last 50). Failed deliveries are retried as implemented — inspect the log before opening a support ticket.
Do not point webhooks at author infrastructure. Test with a URL you control. Do not paste real secrets into this documentation.
Envelope
Section titled “Envelope”JSON body with id, type, created_at, data. Headers include X-Signature, X-Webhook-Id, X-Webhook-Event. Signing is HMAC of the raw JSON body, not encryption.
Subscribed groups include members, CRM, requests/jobs, dispatch/execution, finance (estimate.changes_requested, invoices, payments, credit notes), agreements/PM, portal submissions, communications intents, service_report.generated. webhook.test is the Test button — not a selectable production event.
What-if
Section titled “What-if”If Add endpoint is missing: api_access off or missing webhooks.manage.
If deliveries stay failed: your URL must be public HTTPS; worker must run; inspect Recent deliveries.
Related: REST API, Webhook troubleshooting.