Integrations

Webhooks

Send form submissions to any URL via webhooks.

The Webhook integration sends form submission data as JSON to any URL. It supports Standard Webhooks signing for payload verification.

Features

  • POST form data as JSON to any endpoint
  • Standard Webhooks signature verification
  • URL validation
  • Configurable HTTP method, headers, and SSL verification
  • Checkbox-based field selection and metadata fields

Setup

No environment variables needed. Webhooks are configured per-form through the integration UI.

Payload Format

Each webhook sends a structured JSON payload:

{
    "type": "submission_created",
    "timestamp": "2025-01-15T10:30:00+00:00",
    "data": {
        "form": {
            "id": "01HX...",
            "name": "Contact Form",
            "key": "contact-form"
        },
        "submission": {
            "id": "01HX...",
            "fields": {
                "name": "Jane Doe",
                "email": "jane@example.com"
            }
        },
        "metadata": {
            "ip": "192.168.1.1",
            "user_agent": "Mozilla/5.0...",
            "submitted_at": "2025-01-15T10:30:00+00:00"
        }
    }
}

The metadata key is only included if metadata fields are selected in the integration config. The fields key only contains the fields selected in the "Fields to Send" checkbox list.

Signature Verification

Webhooks are signed using the Standard Webhooks specification. The receiving server can verify the signature using the webhook-id, webhook-timestamp, and webhook-signature headers.

Receiving server
$payload = file_get_contents('php://input');
$headers = getallheaders();

$webhookId = $headers['webhook-id'];
$timestamp = $headers['webhook-timestamp'];
$signature = $headers['webhook-signature'];

// Verify using Standard Webhooks library
$wh = new \StandardWebhooks\Webhook($secret);
$wh->verify($payload, [
    'webhook-id' => $webhookId,
    'webhook-timestamp' => $timestamp,
    'webhook-signature' => $signature,
]);

Configuration Options

OptionDefaultDescription
URL--Target webhook URL (required)
HTTP MethodPOSTHTTP method (POST, PUT, or PATCH)
Content Typeapplication/jsonRequest content type
Sign RequeststrueEnable Standard Webhooks HMAC-SHA256 signing
Webhook SecretAuto-generatedSecret used for request signing
Verify SSLtrueVerify SSL certificates (disable only for testing)
Timeout30Request timeout in seconds
Custom Headers[]Additional HTTP headers to include
Selected Fields[]Form field codes to include (empty = all fields)
Selected Metadata[]Metadata keys to include (submission_id, submitted_at, ip, user_agent)
Copyright © 2026