Webhooks integration
Send every completed quiz to your own endpoint as JSON.
What it does
A webhook posts the full result of a completed quiz to a web address you choose, the moment someone finishes. It is the most flexible way to move leads into your own systems, and it is what Zapier uses under the bonnet.
The request
When a quiz is completed, InsightSquirrel sends a single POST request with a JSON body and a Content-Type: application/json header. The body looks like this:
{
"ownerId": "acc_...",
"quizId": "qz_...",
"quizTitle": "How healthy is your marketing?",
"quizSlug": "how-healthy-is-your-marketing",
"responseId": "rsp_...",
"totalScore": 72,
"maxScore": 100,
"topCategory": "Growth ready",
"outcomeTitle": "Growth ready",
"contact": {
"email": "[email protected]",
"name": "Sam Lee",
"phone": null
},
"completedAt": "2026-09-02T10:24:11.000Z"
}
| Method | POST, Content-Type application/json |
| When | The moment a respondent finishes the quiz |
| Delivery | One attempt, 10 second timeout. No automatic retries. Each attempt is logged as success or failed with the last error. |
| Success | Any 2xx response. Return one quickly, then do slow work afterwards. |
| Security | Public HTTPS only (private hosts are blocked). No signature header, so keep your URL secret and unguessable. |
What data is sent
- The contact's name, email and phone (whatever you collected)
- The quiz title and its web address
- The score and the maximum score
- The result they were given (and their top category)
- When they completed it
How to set it up
- In InsightSquirrel, go to Integrations and add a Webhook.
- Paste the public HTTPS address of your endpoint.
- Choose whether it fires for every quiz or just one.
- Publish a quiz and complete it once to send a live test.
Set this up in InsightSquirrel
Common questions
Does it retry if my endpoint is down?
No. InsightSquirrel makes a single delivery attempt with a 10 second timeout, then records the result as success or failed with the last error, which you can see against the integration. Make sure your endpoint is reliable and responds quickly.
Is the request signed?
There is no signature header today. Treat your webhook address as a secret: use a long, unguessable URL over HTTPS, and reject anything sent to a URL you did not publish.
What response should my endpoint return?
Return a 2xx status code as soon as you have accepted the data. Anything else is recorded as a failed delivery. Do your slow work after responding.
Can I point it at localhost?
No. Only public http(s) addresses are allowed; localhost and private network addresses are blocked.
More integrations
All product names, logos and brands are the property of their respective owners. Use of these names does not imply endorsement or affiliation.