# Webhooks

## ☁️ What is are Webhooks ?

Webhooks are a great way to post the respondent and his answers to any HTTP based API endpoint as soon the respondent has been recorded in the ngSurvey database.

## 🔅 Webhooks properties

* **`Webhook URL`** of the REST API or HTTP server that should receive the post of the respondent JSON payload.
* **`Payload transform template`** used to change the structure of the posted JSON payload into another custom object structure.

## 🔤 Post format

Respondent and his answers are sent as a JSON formatted payload using an HTTP post verb. The default JSON payload below can be customized using a [payload transform template](https://docs.ngsurvey.com/form-management/tasks/task-items/webhook/webhooks-payload-transform).

```javascript
{
  respondent: {
    id: string;
    surveyId: string;
    panelistId: string;
    contextUsername: string
    resumeUId: string;
    resumePageId: string;
    startDate: Date;
    voteDate: Date;
    iPSource: string;
    changeUID: string;
    progressSaveDate: Date;
    languageCode: string;
    timeToEnd: number;
    validated: boolean;        
  },
  answers: [{
      respondentId: string,
      value:string,
      answerId": string,
      answerText": string,
      questionId": string,
      questionAlias": string,
      questionText": string,
      sectionNumber": number
  }],
  visitedPages: [{
    id: string;
    respondentId: string;
    visitTime: string;
  }],
  dataAttributes: [{
    securityItemId: string;
    respondentId: string;
    attributeName: string;
    attributeValue: string;
  }],
  querystring: string
}
```

{% hint style="info" %}
Encrypted answers with [restricted](https://docs.ngsurvey.com/data-encryption/data-classification/restricted) data classification will be sent as encrypted PGP message.&#x20;
{% endhint %}
