POST form responses to your own endpoint
Every completed response is sent as JSON to a URL you control, signed so you can prove it came from us. This is the escape hatch for anything we do not integrate with natively, and it is on the free plan.
Included on the free plan — 500 responses a month, one seat, no card required.
Four steps, start to finish
This is a native integration, so there is a Connect button in the builder and nothing to install.
Add your endpoint URL
In the form's Integrations tab, paste the HTTPS URL that should receive responses.
Set a signing secret
Add a secret so your handler can verify the payload came from Zunoform and was not altered in transit. Treat an unsigned or badly signed request as hostile.
Verify the signature before you trust the body
Check the signature first, then parse. Doing it in the other order means an attacker who guesses your URL gets their JSON parsed by your code.
Handle the payload and return quickly
Acknowledge the request, then do slow work asynchronously. An endpoint that blocks for thirty seconds while it calls three other APIs will look like a failure and be retried.
What arrives on the other side
A JSON POST per completed response, carrying the form and response identifiers, the submission timestamp, and the answers keyed by field. File uploads are included as URLs rather than binary attachments, so a handler that expects multipart data will need to fetch them. Deliveries are retried on failure instead of dropped, which means your endpoint should be idempotent on the response identifier — a retry after a timeout can arrive when your first attempt actually succeeded.
When it fires, and what happens if it fails
Every action on this page fires on a completed response, not on a partial one. The response is stored in Zunoform first and delivered from a queue, so a failure on the far side is retried rather than dropped. One thing to plan for: responses collected before you switch the integration on are not replayed. Delivery starts from the moment it is enabled, and anything earlier stays in your dashboard for CSV export.
Questions people ask
What happens if my server is down?
The delivery is retried. The response is stored in Zunoform before any delivery is attempted, so an outage on your side delays the webhook rather than losing the answer.
How do I know the request is really from Zunoform?
Configure a signing secret and verify the signature on every request. Without that, your endpoint is a public URL anyone can post to.
Should I use a webhook or Zapier?
A webhook if you have somewhere to run code and want no third party in the path. Zapier if you would rather map fields in a UI. Both are on the free plan on our side; Zapier's own task limits are billed by Zapier.
Other things a response can do
Better forms.
Better data.
Build your first form in under 60 seconds. Free forever for personal use, no credit card required.