Help Center/Webhook configuration
Integrations

Webhook Configuration

Webhooks let you send form submission data instantly to any URL — your backend, Zapier, n8n, Make, or any automation tool. Every time someone submits your form, CraftForm sends an HTTP POST request with all the response data.

What are webhooks?

A webhook is an HTTP POST request that CraftForm sends to a URL of your choice the moment a form is submitted. Unlike polling (where you check for new data every few minutes), webhooks are instant — the data arrives at your endpoint within seconds of submission.

Webhooks are available on the free plan. You can configure up to 3 webhook endpoints per form on the free plan, and unlimited endpoints on PRO.

How to configure a webhook

1

Open your form settings

In the form builder, click the "Settings" tab in the top navigation, then select "Integrations" in the left sidebar.

2

Click "Add Webhook"

Under the Webhooks section, click the "Add Webhook" button. A panel slides in from the right.

3

Enter your endpoint URL

Paste the URL where you want to receive submissions. This can be any publicly accessible HTTPS URL. HTTP URLs are not accepted for security reasons.

4

Choose events (optional)

By default, webhooks fire on "form.submitted". You can also enable "form.started" (respondent began the form) and "form.partial" (respondent dropped off — PRO only).

5

Add a secret (recommended)

Enter a secret string. CraftForm will include an HMAC-SHA256 signature in the X-CraftForm-Signature header so you can verify the request is authentic.

6

Save and test

Click "Save Webhook", then click "Send Test" to fire a sample payload to your endpoint. Use webhook.site (free) to inspect the request in real time.

JSON payload format

Every webhook POST includes a JSON body with the full submission. Here's an example:

{
  "event": "form.submitted",
  "form_id": "clx7abc123",
  "form_title": "Contact Us",
  "submitted_at": "2025-03-28T14:23:01.000Z",
  "response_id": "resp_xyz789",
  "respondent_ip": "203.0.113.42",
  "answers": [
    {
      "field_id": "q1",
      "field_title": "What is your name?",
      "field_type": "short_text",
      "value": "Jane Smith"
    },
    {
      "field_id": "q2",
      "field_title": "Your email address",
      "field_type": "email",
      "value": "jane@example.com"
    },
    {
      "field_id": "q3",
      "field_title": "How did you hear about us?",
      "field_type": "multiple_choice",
      "value": "Google Search"
    },
    {
      "field_id": "q4",
      "field_title": "Message",
      "field_type": "long_text",
      "value": "I'd love to learn more about your PRO plan."
    }
  ],
  "metadata": {
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7)...",
    "referrer": "https://craftform.co/pricing",
    "hidden_fields": {
      "utm_source": "google",
      "utm_campaign": "spring-2025"
    }
  }
}
eventAlways "form.submitted" for submissions.
form_idUnique ID of your form in CraftForm.
response_idUnique ID for this specific submission.
answersArray of all answered questions with field ID, title, type, and value.
metadata.hidden_fieldsAny hidden field values passed via URL parameters.

Testing your webhook with webhook.site

webhook.site gives you a free unique URL that captures and displays all incoming HTTP requests. It's the fastest way to inspect your webhook payload without writing any backend code.

  1. 1. Open webhook.site — you get a unique URL instantly.
  2. 2. Copy that URL.
  3. 3. Paste it as your webhook endpoint in CraftForm.
  4. 4. Click "Send Test" in CraftForm.
  5. 5. Switch back to webhook.site — you'll see the full request headers and JSON body.

Common use cases

Zapier

Use CraftForm's webhook as a Zapier Catch Hook trigger to connect to 6,000+ apps.

n8n

Point to an n8n Webhook node to build powerful self-hosted automations.

Make (Integromat)

Use a Make Webhook module to receive submissions and automate any workflow.

Custom backend

Build your own processing logic in Node.js, Python, or any language that can handle HTTP requests.