Webhooks

  • Built in
  • Free plan
  • Developers

Send every response to your own endpoint as a signed JSON request. Retries, delivery logs and a stable payload shape make it safe to build on.


How it works

Every submission, delivered to your code

Add an endpoint URL to a form and Onlyform POSTs a JSON body for each response. Requests are signed so you can verify they came from us.

  • Signed requests

    Every request carries an HMAC signature header computed with your webhook secret.

  • Retries with backoff

    Non-2xx responses are retried for 24 hours with exponential backoff; every attempt is logged.

  • Stable payload

    The payload shape is versioned. New fields are added, existing ones never change meaning.

Setting it up

Three steps

Once per form. You can add several endpoints to one form.

  1. 1

    Open Integrations

    In the form, go to the Integrations tab and choose Webhooks.

  2. 2

    Add your endpoint

    Paste the URL, copy the signing secret into your service, and choose which events to receive.

  3. 3

    Send a test

    Fire a test delivery and inspect the request and your response in the delivery log.

Reference

What the payload contains

Top-level fields on every delivery. Answers are keyed by question id with the label alongside.

FieldWhat it holdsType
eventresponse.completed or response.partialText
response.idA unique id for the submissionText
response.submitted_atISO timestamp, UTCDatetime
response.answersAnswers keyed by question idObject
form.idThe form that was submittedText

If something looks wrong

Troubleshooting

The 3 things behind almost every support ticket on this connection.

Deliveries are failing

Open the delivery log on the form to see the status code and body your endpoint returned. Anything other than a 2xx is retried for 24 hours.

How do I verify the signature?

Compute an HMAC-SHA256 of the raw body with your secret and compare it to the signature header. The docs have examples in Node, Python and PHP.

Can I receive partial responses?

Yes. Enable the partial event on the endpoint and you receive a delivery when a respondent leaves a form unfinished.

Build on every response

Available on every plan. Add an endpoint, verify the signature, and you are live.