The webhook connector sends the full SubmissionEnvelope as a JSON POST (or PUT/PATCH) to any HTTP endpoint.
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
url |
string |
Yes | — | Destination URL (must be valid) |
method |
string |
No | "POST" |
POST, PUT, or PATCH |
headers |
Record<string, string> |
No | {} |
Custom headers sent with every request |
config.url using config.methodContent-Type: application/json is always setconfig.headers are merged in (can override defaults)SubmissionEnvelope as JSONSuccessful responses are truncated to 5,000 characters for logging purposes. This does not affect delivery.
Slack webhooks expect a specific payload format. Use a middleware service (like Zapier or a small Worker) to transform the SubmissionEnvelope into Slack's block format, or point the webhook at a custom backend that handles the transformation.
Similar to Slack, Discord webhooks have their own payload format. Point at a transformer endpoint or use a service like Zapier:
Zapier's "Webhooks by Zapier" trigger accepts any JSON payload. Point the webhook URL directly at your Zapier catch hook:
If you have your own API, receive submissions directly:
Save the form.id from the response.
SubmissionEnvelope with the payload, submissionId, formName, and metadata fields.