HTTPS webhooks (integrations)
This guide is for a Manager or Primary Owner who configures outbound HTTPS webhooks under Settings → Operations. Webhooks are not email: your server POSTs JSON to URLs you control (Zapier, Make, n8n, or custom workers). Staff notifications and visitor auto-replies are covered in Notifications.
The product does not ship a native HubSpot or Salesforce connector. Patterns for mapping JSON into CRMs live in CRM & tools.
Webhooks never run before a submission row exists. They are separate from SMTP and do not replace staff mail.
submission_created— After intake validates the payload, inserts the row, and attempts staff notification and visitor auto-reply (when enabled). See Notifications — intake order for the full pipeline.status_changed— Only after a dashboard user saves a new lead status throughupdate_status.php(not part of the initial form submit).- A failed webhook POST does not delete the submission; errors are logged. The lead remains in Inbox & leads.
Important. You cannot reorder “save → email → webhook” from the UI. You enable or disable each webhook row and its event toggles.
Up to ten rows. Each stores a public URL, optional bearer secret, event toggles, optional registry form-key filters, and optional status filters for status_changed.
- Create or copy an HTTPS endpoint that accepts
POSTwithContent-Type: application/json. - Open Settings → Operations, scroll to Webhooks, and paste the URL.
- Set a Bearer secret when your receiver checks
Authorization: Bearer …; the plain secret is stored inwf_config/private.phpafter save. - Enable On new submission for
submission_createdor On status change forstatus_changed(or both when appropriate). - Use status filters so only selected pipeline stages trigger automation when you defer CRM sync until after human review.
- Use form key restrictions when only certain registry keys should hit a destination.
The master switch prevents accidental traffic while URLs are half-built.
- Turn Webhooks enabled on only after every row is tested.
- Save the Operations form.
- Submit a test lead and confirm your receiver logged JSON with keys such as
event,submission_id,form_name,status,submitted_at,page_url,ip_address, andfields. - When a POST fails, read PHP’s error log for lines prefixed with
[wckd-forms webhook]before changing receiver code.
Use this when CRM or Slack should react only after qualification in the inbox.
- Change a lead’s status in the dashboard for a row that matches your webhook filters.
- Inspect the receiver log and confirm
eventisstatus_changedandprevious_statusmatches the old label.
event—submission_createdorstatus_changedsubmission_id,form_name,status,submitted_at,page_url,ip_addressfields— object of submitted column values (strings)previous_status— present only forstatus_changed
Field-by-field mapping examples: CRM & tools.
- No POST arrives: master webhooks switch is off, the row lacks On new submission, or the URL failed host validation (localhost and private IPs are rejected).
- 401 from receiver: bearer mismatch between Operations and your worker.
- CRM sees raw leads too early: leave On new submission off for that URL and enable On status change with tight status filters instead.
- Expecting webhooks to send email: use Notifications for staff mail and auto-reply.
- Notifications: staff mail, auto-reply, routing (not webhooks).
- Operations: where webhook rows and the master switch live.
- CRM & tools: map JSON into external systems.
- Inbox & leads: where
status_changedoriginates.