Send Submissions Elsewhere with a Webhook
Let another system know when someone submits
A webhook sends each submission to an address you choose as a POST request carrying the submission data. Whatever is listening at that address can then do something with it — write to another system, start a process of your own, post into a channel.
The webhook fires after the contact has been created, so what you receive includes the resulting contact and any booking, not just the raw answers.
This is the most technical action on the screen. You need somewhere to receive the request.
Before You Begin
- A URL that accepts POST requests with a JSON body
- Access to that endpoint's logs, or a testing service that shows you what arrived
Steps
Look at the payload before you build anything
Open the form's row menu in My Forms and choose API Payload. That shows you the shape of the data a submission produces for this specific form, including your field names.
Read it before writing any receiving code. Guessing the shape and correcting afterwards is the slow way round.
Set up something to receive the request
You need an endpoint that accepts a POST with a JSON body and returns a success response.
For a first test, a webhook testing service that displays whatever it receives is ideal — you can see the real payload before committing to an implementation.
Enable the webhook on the form
In Manage Form Actions, switch on Enable a Webhook Post and put your full address in the Webhook URL field, including https://.
Save and submit a test
Save the screen, then submit the form once.
The webhook fires as part of the action sequence, shortly after the submission — it is not subject to any of the delays on this screen.
Check what the receiving end said
Zyntro stores the response from your endpoint, and any error, against the completion. So if nothing appears at your end, the record of the attempt is still on the Zyntro side.
Open View Completions for the form and look at the submission you just made to see what came back.
Handle it properly at your end
Two habits worth adopting:
Return a success response quickly. Acknowledge receipt, then do your slow work afterwards. An endpoint that holds the connection open while it processes will eventually time out.
Expect the same submission more than once. Build your receiver so that processing a submission twice is harmless — usually by keying on the submission's identifier.
Info: Unlike the email, SMS and call actions, the webhook has no delay setting. It fires as part of the action sequence straight after the submission.
Warning: A failing webhook does not lose you the submission. The completion is stored before any action runs, so a dead URL, a timeout or a rejected request affects only the webhook. The contact still exists, the answers are still filed, and your other actions still run.
Common questions
The answers, identifiers for the form, contact and completion, the merge-tag values, and appointment details if the submission produced a booking. Use API Payload on the form's row menu to see it with your own field names in place.
One webhook URL per form. To fan out to several systems, point the webhook at something of your own that distributes it — or use a workflow, which can react to the same form.submitted event.
Treat it as a single attempt. If your endpoint must not miss submissions, make sure it is reliable, and reconcile against View Completions, which holds every submission regardless of what the webhook did.
A workflow if what you want to do is inside Zyntro — it is easier to build and to change. A webhook when another system needs to know.
Result
Each submission now posts to your endpoint, and the response is recorded against the completion so you can confirm it was accepted.