NueForm

Webhooks API

रियल-टाइम रिस्पॉन्स नोटिफिकेशन के लिए प्रति-फॉर्म और ग्लोबल webhooks कॉन्फ़िगर करें।

Webhooks आपको फॉर्म में नई सबमिशन आने पर रियल-टाइम HTTP POST नोटिफिकेशन प्राप्त करने की सुविधा देते हैं। NueForm दो स्तरों के webhooks सपोर्ट करता है:

  • फॉर्म webhooks -- प्रति फॉर्म एक URL जो उस विशिष्ट फॉर्म की सबमिशन प्राप्त करता है।
  • ग्लोबल webhooks -- अधिकतम 5 URLs जो आपके सभी फॉर्म की सबमिशन प्राप्त करते हैं।

Webhooks के लिए Pro plan या उससे ऊपर का प्लान आवश्यक है। फ्री प्लान पर webhook endpoints का उपयोग करने का प्रयास 403 error लौटाएगा।

सभी request और response bodies snake_case फ़ील्ड नामों का उपयोग करते हैं।

Get Form Webhook

GET/api/v1/forms/:id/webhooks

किसी विशिष्ट फॉर्म के लिए कॉन्फ़िगर किए गए webhook URL को प्राप्त करता है।

Path Parameters

idstringआवश्यक

फॉर्म ID

यदि कोई webhook कॉन्फ़िगर नहीं है, तो webhook_url का मान null होगा।

Response

json
{
  "webhook_url": "https://example.com/hooks/nueform"
}

Code Examples

bash
curl -X GET "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/webhooks" \
  -H "Authorization: Bearer YOUR_API_KEY"

Set Form Webhook

PUT/api/v1/forms/:id/webhooks

किसी विशिष्ट फॉर्म के लिए webhook URL सेट या क्लियर करता है। जब कोई सबमिशन प्राप्त होती है, तो NueForm इस URL पर रिस्पॉन्स डेटा के साथ एक HTTP POST भेजेगा।

Path Parameters

idstringआवश्यक

फॉर्म ID

Request Body

urlstring or nullआवश्यक

Webhook URL। एक वैध URL होना चाहिए। webhook हटाने के लिए null सेट करें।

Request Example

json
{
  "url": "https://example.com/hooks/nueform"
}

Webhook हटाने के लिए:

json
{
  "url": null
}

Response

json
{
  "webhook_url": "https://example.com/hooks/nueform"
}

Code Examples

bash
curl -X PUT "https://api.nueform.io/api/v1/forms/665a1b2c3d4e5f6a7b8c9d0e/webhooks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://example.com/hooks/nueform" }'

List Global Webhooks

GET/api/v1/webhooks

आपके अकाउंट के लिए कॉन्फ़िगर किए गए सभी ग्लोबल webhooks प्राप्त करता है। ग्लोबल webhooks आपके सभी फॉर्म की प्रत्येक सबमिशन के लिए फायर होते हैं।

Response

json
{
  "webhooks": [
    {
      "url": "https://example.com/hooks/all-forms",
      "enabled": true
    },
    {
      "url": "https://backup.example.com/hooks/nueform",
      "enabled": false
    }
  ]
}

Code Examples

bash
curl -X GET "https://api.nueform.io/api/v1/webhooks" \
  -H "Authorization: Bearer YOUR_API_KEY"

Set Global Webhooks

PUT/api/v1/webhooks

सभी ग्लोबल webhooks को दिए गए array से बदलता है। आप अधिकतम 5 ग्लोबल webhooks कॉन्फ़िगर कर सकते हैं। प्रत्येक webhook को व्यक्तिगत रूप से enable या disable किया जा सकता है।

Request Body

webhooksarrayआवश्यक

Webhook objects का array (अधिकतम 5)

Request Example

json
{
  "webhooks": [
    {
      "url": "https://example.com/hooks/all-forms",
      "enabled": true
    },
    {
      "url": "https://slack-webhook.example.com/nueform",
      "enabled": true
    },
    {
      "url": "https://backup.example.com/hooks/nueform",
      "enabled": false
    }
  ]
}

Response

json
{
  "webhooks": [
    {
      "url": "https://example.com/hooks/all-forms",
      "enabled": true
    },
    {
      "url": "https://slack-webhook.example.com/nueform",
      "enabled": true
    },
    {
      "url": "https://backup.example.com/hooks/nueform",
      "enabled": false
    }
  ]
}

Code Examples

bash
curl -X PUT "https://api.nueform.io/api/v1/webhooks" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "webhooks": [
      { "url": "https://example.com/hooks/all-forms", "enabled": true },
      { "url": "https://backup.example.com/hooks/nueform", "enabled": false }
    ]
  }'

Get Webhook Secret

GET/api/v1/webhooks/secret

आपका webhook signing secret प्राप्त करता है। यदि अभी तक कोई secret मौजूद नहीं है, तो एक स्वचालित रूप से जनरेट होता है। Secret 32 random bytes से निकाली गई 64-character hex string है।

इस secret का उपयोग X-NueForm-Signature header में HMAC-SHA256 signature को validate करके यह सत्यापित करने के लिए करें कि आने वाले webhook requests वास्तव में NueForm से हैं।

Signatures सत्यापित करना

जब NueForm एक webhook भेजता है, तो इसमें एक X-NueForm-Signature header शामिल होता है जिसमें request body का HMAC-SHA256 hex digest होता है। प्रामाणिकता सुनिश्चित करने के लिए अपने webhook handler में इसे verify करें।

Response

json
{
  "secret": "a1b2c3d4e5f6a7b8c9d0e1f2a3b4c5d6e7f8a9b0c1d2e3f4a5b6c7d8e9f0a1b2"
}

Signature Verification Examples

javascript
const crypto = require("crypto");

function verifyWebhookSignature(body, signature, secret) {
  const expected = crypto
    .createHmac("sha256", secret)
    .update(body)
    .digest("hex");
  return crypto.timingSafeEqual(
    Buffer.from(signature),
    Buffer.from(expected)
  );
}

Code Examples

bash
curl -X GET "https://api.nueform.io/api/v1/webhooks/secret" \
  -H "Authorization: Bearer YOUR_API_KEY"

Regenerate Webhook Secret

POST/api/v1/webhooks/secret

एक नया webhook signing secret जनरेट करता है, जो मौजूदा secret को बदल देता है। रीजनरेशन के बाद, सभी webhook deliveries नए secret से sign की जाएंगी।

रीजनरेट करने के बाद, अपने webhook receivers को तुरंत नए secret से अपडेट करें। पुराने secret से sign किए गए requests verification में विफल होंगे।

Response

json
{
  "secret": "f0e1d2c3b4a5968778695a4b3c2d1e0f9a8b7c6d5e4f3a2b1c0d9e8f7a6b5c4d"
}

Code Examples

bash
curl -X POST "https://api.nueform.io/api/v1/webhooks/secret" \
  -H "Authorization: Bearer YOUR_API_KEY"

Webhook Payload Format

जब कोई फॉर्म सबमिशन प्राप्त करता है, NueForm आपके कॉन्फ़िगर किए गए webhook URLs पर निम्नलिखित payload के साथ एक POST request भेजता है।

event फ़ील्ड event type की पहचान करता है, और response object में सभी answers सहित पूर्ण सबमिशन डेटा होता है।

Headers

Content-Typeapplication/json

Request body content type

X-NueForm-Signaturestring

Request body का HMAC-SHA256 hex digest

X-NueForm-Eventstring

Event type (जैसे, response.submitted)

Payload Example

json
{
  "event": "response.submitted",
  "form_id": "665a1b2c3d4e5f6a7b8c9d0e",
  "form_title": "Customer Feedback Survey",
  "response": {
    "id": "667a1b2c3d4e5f6a7b8c9d01",
    "submitted_at": "2026-02-27T15:42:00.000Z",
    "completed_at": "2026-02-27T15:45:30.000Z",
    "answers": [
      {
        "question_id": "66a1b2c3d4e5f6a7b8c9d001",
        "question_title": "What is your name?",
        "value": "Jane Smith"
      }
    ]
  }
}

Error Responses

Webhook endpoints द्वारा लौटाए जाने वाले मानक error responses।

Error Codes

400Bad Request

अमान्य URL format, अधिकतम 5 ग्लोबल webhooks से अधिक, या आवश्यक फ़ील्ड्स अनुपस्थित

401Unauthorized

API key अनुपस्थित या अमान्य

403Forbidden

Webhooks के लिए Pro plan या उससे ऊपर का प्लान आवश्यक है

404Not Found

फॉर्म नहीं मिला

500Server Error

Internal server error

Error Example

json
{
  "error": "Webhooks require a Pro plan or higher"
}
अंतिम अपडेट: 6 अप्रैल 2026