Point your form
at anything.

Full HTTP control. POST, GET, or PUT. JSON or form-encoded. Custom headers. Templated body. Your API, your Zapier endpoint, your CI/CD trigger, your CRM. Whatever you've got.

★★★ Data stored in Europe 99.9% uptime Spam never fires the webhook
Start free trial

7-day free trial. No payment method required.

Sound familiar?

Your API needs custom headers and the simplified UI can't do it.

Authorization tokens, X-API-Key headers, specific Content-Type overrides. Every SaaS webhook tool gives you a simplified UI that falls short the moment your API has real requirements.

Zapier works, but it breaks when you rename a field.

Four steps, a filter, and a Zap that silently fails when field names change. Native webhook support eliminates the middleware. Your form fires directly to your endpoint.

You need a specific JSON payload and the schema has to be exact.

Triggering a CI/CD pipeline, a CRM intake endpoint, or an internal API requires a precise body structure. A body template with variable substitution gives you that control.

Configure the request. Runs on every real submission.

1

Configure the request

Set the URL, HTTP method (POST/GET/PUT/PATCH/DELETE), content type (JSON or form-encoded), and any custom headers your endpoint requires (Authorization, X-API-Key, anything).

2

Write the body template

Use {{field_name}} syntax to inject submitted values into any JSON structure. Nest them, combine them, shape the payload exactly as your downstream system expects.

3

Submit fires the request

Each real submission triggers the HTTP call. The execution log captures the full response (status code, body, headers), so you can debug integration mismatches without guessing.

Real HTTP control. Not a simplified wrapper.

Full header control

Add Authorization, Bearer tokens, X-API-Key, Content-Type, or any custom header your endpoint needs. No restrictions on which headers you can set.

POST, GET, PUT, PATCH, DELETE

Choose the HTTP method. Some CI/CD systems and legacy APIs only accept GET requests. Not locked into POST.

JSON and form-encoded

Send data as application/json or application/x-www-form-urlencoded. Both formats support the same {{field_name}} template syntax.

Templated body

Construct exactly the payload your downstream system expects. Reference any submitted field, nest them in objects, combine them in arrays. No field name mismatches.

Full response logged

Execution log captures HTTP status code, response body, and headers for every attempt. Debug your endpoint integration without tailing logs on the other side.

Spam blocked before the call

Spam submissions never reach your webhook endpoint. Your API rate limits, quotas, and processing pipelines stay clean.

Ready to connect your form to your stack?

Get started free

Configure the template. Fires the exact request you need.

StaticForm dashboard

app.staticform.app
Custom webhook action configuration in StaticForm

Click to zoom

Body template

body_template.json
{
  "lead_name":  "{{form.name}}",
  "lead_email": "{{form.email}}",
  "company":    "{{form.company}}",
  "source":     "contact_form",
  "message":    "{{form.message}}",
  "submitted":  "{{timestamp:UTC}}"
}

Fired request

execution log
POST https://api.yourcrm.com/leads
Authorization: Bearer sk-•••••••••
Content-Type: application/json

{
  "lead_name":  "Sarah Chen",
  "lead_email": "sarah@example.com",
  "company":    "Acme Corp",
  "source":     "contact_form",
  "message":    "Interested in your pricing...",
  "submitted":  "2025-01-15T14:07:00Z"
}

→ 201 Created

get started

Your next real lead is
waiting to arrive.

Set up a form in 5 minutes. Spam blocked automatically. Every real submission stored, delivered, and logged.

7-day free trial Cancel anytime Data stored in EU Spam never counted

Ready to get started?

Add forms to your site in minutes