Skip to main content

Using Webhooks

Use Webhooks to trigger requests to your own application when you get a new Survey Response.

Written by Sonika Mehta

Webhooks are automated messages sent from Zonka Feedback when a new survey response (or partial response) is added.

Webhooks are always sent as an HTTP POST request to the webhook URLs you've configured via your Webhooks integration. The details of the activity that triggered the webhook are sent as the body of the HTTP request in JSON format.

Event Types

We support the following event types. Zonka Feedback now offers a new, cleaner webhook payload along with the legacy payload for backward compatibility. If you are setting up a new webhook, we recommend using the new events. Legacy events are available so that your existing integrations continue to work without any changes.

Type

Description

response.added

Triggered when a new response is received for a survey. The event JSON includes all details of the response, including respondent details, scores, AI insights (sentiment, urgency, intent, emotion), and each survey question with the answer provided by the respondent.

partial.response.added

Triggered when a partial (incomplete) response is captured for a survey. The payload structure is the same as response.added, containing only the answers captured so far.

response.added (legacy)

Triggered when a new response is received for a survey. Sends the older payload format, retained for existing integrations built on the previous webhook structure.

partial.response.added (legacy)

Triggered when a partial response is captured. Sends the older payload format.

Note: If you have existing webhooks created before this update, they will continue to receive the legacy payload. To receive the new payload, create a new webhook and select the non-legacy event.


New Payload — Example Response

The new payload is leaner and more consistent. It removes internal flags and duplicate keys, adds event metadata (eventType and eventId), and simplifies contact and response attributes.

{
"id": "6a5514a896b91ca4c812a678",
"surveyId": "69fde27e4fcfc10ae574571e",
"surveyName": "TicketClosure Survey",
"surveyLanguage": "en_US",
"receivedDate": "2026-07-13T16:39:01.000Z",
"timeZone": "Asia/Kolkata",
"eventType": "response.added",
"eventId": "6a5514a896b91ca4c812a680",
"respondentDetails": {
"name": "Steve Waugh",
"emailAddress": "steve.waugh@yahoo.com",
"mobile": "+918989898989",
"externalId": "DE7911"
},
"locationId": "63b51a77891bf7000844b630",
"locationName": "Mumbai",
"tags": [
{
"name": "Bad Experience"
}
],
"geoLocation": "INDIA",
"webDevice": "Desktop",
"browser": "Chrome",
"ratedUserId": "69fde2887b2f37900de805a9",
"ratedUserName": "Andrew Strauss",
"channel": "Online",
"sentiment": "neutral",
"urgency": "Medium",
"intent": [
"Complaint"
],
"emotion": [
"Concerned"
],
"CSAT": 5,
"NPS": 10,
"CES": 1,
"responseURL": "https://platform.zonkafeedback.com/responseinbox/6a5514a896b91ca4c812a678",
"contactAttributes": [
{
"variableId": "contact_number",
"value": "9890",
"type": "Number"
}
],
"responseAttributes": [
{
"variableId": "booking_pnr",
"value": "PR24WT"
}
],
"surveyResponse": [
{
"questionId": "69fde2887b2f37900de805a9",
"questionLabel": "How was your experience with us?",
"answer": "overjoyed"
},
{
"questionId": "699ebc50e1d1b8d9970bfae4",
"questionLabel": "The company made it easy for me to handle my issues",
"answer": "Strongly Disagree"
},
{
"questionId": "60d30beeef7c44000837994a",
"questionLabel": "How likely are you to recommend flying with us to your friends, family, and colleagues?",
"answer": "10"
},
{
"questionId": "6a3e5c412e4e74aeacea3b91",
"questionLabel": "Enter Date of travel",
"answer": "2026-07-31"
}
]
}

New Payload — Field Reference

Field

Description

id

Unique ID of the response.

surveyId / surveyName / surveyLanguage

Details of the survey the response belongs to.

receivedDate

Date and time (UTC) when the response was received.

timeZone

Time zone of the account/location.

eventType

The event that triggered this webhook, e.g. response.added or partial.response.added.

eventId

Unique ID of this webhook event — useful for de-duplication on your end.

respondentDetails

Respondent's name, email address, mobile number, and external ID (if captured).

locationId / locationName

Location the response was captured at.

tags

Tags applied to the response.

geoLocation / webDevice / browser

Where and how the response was submitted.

ratedUserId / ratedUserName

The team member rated in the response (if applicable).

channel

Distribution channel of the survey (e.g. Online, Email, SMS).

sentiment / urgency / intent / emotion

AI-generated insights for the response.

CSAT / NPS / CES

Scores for the response, where applicable.

responseURL

Direct link to view the response in the Response Inbox.

contactAttributes

Contact attributes captured with the response, each with variableId, value, and type.

responseAttributes

Response attributes (hidden/URL variables), each with variableId and value.

surveyResponse

Array of questions answered, with questionId, questionLabel, and answer.


Legacy Payload — Example Response

Existing webhooks created on the older events (marked legacy in the Event dropdown) receive the payload below.

Example Response

{
"id": "609d545970b5b6000801567c",
"surveyId": "60659f8aecfaff0008e447e9",
"surveyName": "Customer Experience Survey",
"surveyLanguage": "en_US",
"receivedDate": "2021-05-13T22:01:22.000Z",
"respondentId": "",
"respondentDetails": {
"name": "Robert David",
"emailAddress": "robertdavid@zonkafeedback.com"
},
"locationId": "",
"locationName": "",
"takenByUserId": "",
"takenByUserName": "",
"ratedUserId": "",
"ratedUserName": "",
"channel": "Online",
"channelDetails": "",
"integrationDetails": "",
"NPS": 8,
"responseURL": "",
"surveyResponseData": [
{
"questionId": "60659fc5ecfaff0008e448ca",
"questionLabel": "Email",
"answer": "robertdavid@zonkafeedback.com"
},
{
"questionId": "60659fd0b1e71d0007ffaff2",
"questionLabel": "Full Name",
"answer": "Robert David"
},
{
"questionId": "60659fd8ecfaff0008e448e3",
"questionLabel": "Comments",
"answer": "The service was good."
},
{
"questionId": "60659fefb1e71d0007ffb027",
"questionLabel": "How likely are you to recommend us to a friend or colleague?",
"answer": "8"
}
]
}

Getting Started with Webhooks

Here's how you can get started with using Webhooks.

  1. Navigate to Settings > Developers > Webhook

  2. Click on 'Add Webhook'

  3. Enter the following details:

    • Name: Name of the webhook

    • Event: Response Received

      • When a new survey response is received for the specified survey

    • Target URL:

      1. URL where the JSON for the survey response is to be sent

      2. This can be a Target URL in any CRM, HRMS or any other 3rd party system that accepts webhook event data

    • Survey: Specify the survey whose response will trigger this webhook

    • Additional Parameters: You can specify any additional key:value pairs as comma-separated which can be added to the response JSON that will be sent.

  4. Save the Webhook


Webhook Logs

When webhooks are triggered they a log is saved for successful or any unsuccessful requests. To view the Webhook Logs, follow these steps.

  • Go to Settings > Developers > Webhook

  • Click on 'View Logs'

For any further questions about Webhooks, please contact us at hello@zonkafeedback.com.

Did this answer your question?