Webhooks Guide

Build complex, logic-driven forms without code

Table of Contents

Configuration

Setting Up Your Webhook Endpoint

Connect FormFlow to your existing CRM, Slack workspace, or custom API by defining a secure HTTPS endpoint. When a respondent submits a form, FormFlow instantly POSTs a structured JSON payload to your server.

Navigate to your form dashboard, click Integrations in the left sidebar, and select Webhooks. Enter your endpoint URL (e.g., https://api.acmecorp.io/v1/leads). Toggle Enable Retry Logic to automatically retry failed deliveries up to 5 times with exponential backoff. You can also attach a custom authorization header using the X-FormFlow-Signature field to verify incoming requests.

Step 1: Define Trigger

Choose whether the webhook fires on form submission, payment completion, or conditional branch exit. Default is submission.

Step 2: Map Headers

Add custom headers for API keys or tenant IDs. FormFlow supports up to 8 custom key-value pairs per webhook rule.

Step 3: Test & Activate

Click Send Test Payload to verify connectivity. Monitor delivery logs in the Activity tab for 200 OK responses.

Open Webhook Settings View API Reference
Data Structure

JSON Payload Examples

Every webhook dispatch contains a consistent envelope structure. Field values are sanitized, nested arrays are flattened for CSV compatibility, and file uploads are replaced with secure download URLs.

Event: form.submitted

{
  "event": "form.submitted",
  "form_id": "ff_8a2c91b4",
  "timestamp": "2024-11-15T14:32:10Z",
  "metadata": {
    "ip_address": "72.194.12.5",
    "user_agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64)",
    "utm_source": "google_ads"
  },
  "fields": {
    "full_name": "Elena Rostova",
    "company": "Veridian Dynamics",
    "budget_range": "$15k–$25k",
    "preferred_contact": "email",
    "compliance_acknowledged": true
  }
}

Event: payment.completed

{
  "event": "payment.completed",
  "form_id": "ff_8a2c91b4",
  "timestamp": "2024-11-15T14:35:42Z",
  "payment": {
    "provider": "stripe",
    "transaction_id": "pi_3OqZ9xK4L2mNpQ7r",
    "amount_cents": 24900,
    "currency": "USD",
    "status": "captured"
  },
  "fields": {
    "billing_address": "402 Innovate Blvd, Austin, TX 78701",
    "invoice_number": "INV-2024-0892"
  }
}

All payloads include a signature query parameter generated via HMAC-SHA256. Verify this signature server-side before processing data to prevent spoofed requests. FormFlow guarantees at-least-once delivery and maintains a 14-day retry queue for non-2xx responses.