Setting Up Webhooks for Form Submissions

Connect FormRobin to any application by automatically sending form submission data to your webhook endpoint in real-time.

What Are Webhooks?

Webhooks allow FormRobin to automatically send form submission data to your custom URL endpoint whenever someone submits a form. This enables you to:

  • Connect FormRobin to custom applications
  • Trigger automated workflows
  • Send data to your own database or CRM
  • Build custom integrations with any web service
  • Process submissions in real-time

Plan Requirement: Webhooks are available on Individual tier (LTD) and higher plans.

How Webhooks Work

  1. User submits a form on FormRobin
  2. FormRobin processes the submission
  3. FormRobin sends a POST request to your webhook URL
  4. Your server receives the submission data as JSON
  5. Your application processes the data

💡 Note: Webhooks send data in real-time, typically within seconds of form submission.

Setting Up Webhooks

Step 1: Prepare Your Webhook Endpoint

Before configuring webhooks in FormRobin, you need a URL endpoint that can:

  • Accept POST requests
  • Process JSON payloads
  • Respond within 10 seconds
  • Use HTTPS (recommended for security)

Step 2: Configure Webhook URL in FormRobin

  1. Log in to FormRobin
  2. Click the hamburger menu (☰) in top right
  3. Select Settings
  4. Click Webhook from the settings menu
  5. Enter your webhook URL (must be a valid URL)
  6. Click Save

Important: The webhook URL applies to ALL forms in your account. Every form submission will be sent to this URL.

Webhook Payload Structure

FormRobin sends form submission data as a JSON payload in this format:

{
  "id": "abc123",
  "form_id": "xyz789",
  "completed_at": "2024-10-21T12:34:56Z",
  "form_field_responses": [
    {
      "form_field_id": "field1",
      "label": "Email Address",
      "value": "user@example.com"
    },
    {
      "form_field_id": "field2",
      "label": "Full Name",
      "value": "John Doe"
    }
  ],
  "utm_source": "google",
  "utm_medium": "cpc",
  "utm_campaign": "fall-campaign",
  "utm_term": null,
  "utm_content": null,
  "referrer_url": "https://example.com/page",
  "landing_page_url": "https://forms.formrobin.com/your-form",
  "device_type": "desktop",
  "browser_name": "Chrome",
  "browser_version": "118.0",
  "operating_system": "Windows",
  "ip_address": "192.168.1.1",
  "created_at": "2024-10-21T12:34:56Z",
  "updated_at": "2024-10-21T12:34:56Z"
}

Payload Field Descriptions

  • id: Unique submission ID
  • form_id: ID of the form that was submitted
  • form_field_responses: Array of all field responses with labels and values
  • completed_at: Timestamp when submission was completed
  • utm_*: UTM tracking parameters (if source tracking enabled)
  • referrer_url: URL the user came from
  • landing_page_url: Form URL
  • device_type: Device category (desktop, mobile, tablet)
  • browser_name: Browser used for submission
  • browser_version: Browser version number
  • operating_system: User's OS
  • ip_address: User's IP address
  • created_at: Record creation timestamp
  • updated_at: Record update timestamp

HTTP Request Headers

FormRobin sends webhooks with these headers:

  • Content-Type: application/json
  • User-Agent: FormRobin-Webhooks/1.0

Responding to Webhooks

Your webhook endpoint should:

  • Respond with HTTP 200 (OK) status code
  • Respond within 10 seconds (timeout limit)
  • Process the data asynchronously if needed
  • Log received webhooks for debugging

Note: FormRobin does not retry failed webhooks. Ensure your endpoint is reliable and responds quickly.

Testing Your Webhook

  1. Set up a test endpoint (use tools like webhook.site or requestbin.com)
  2. Configure the test URL in FormRobin webhook settings
  3. Submit a test form
  4. Verify the payload is received at your endpoint
  5. Check that all expected data is included
  6. Verify your endpoint responds with 200 OK

Helpful Testing Tools

  • webhook.site - Free webhook testing and inspection
  • requestbin.com - Capture and inspect HTTP requests
  • ngrok.com - Expose local development server for testing

Security Best Practices

  • Use HTTPS: Always use secure URLs for webhook endpoints
  • Validate payloads: Verify data structure and content
  • Rate limiting: Protect your endpoint from abuse
  • Authentication: Consider adding authentication tokens to your webhook URL
  • IP whitelist: Restrict access to known FormRobin IPs if possible
  • Log all requests: Keep audit trail of received webhooks

Common Use Cases

  • CRM Integration: Automatically add leads to your CRM
  • Email Marketing: Add subscribers to your email list
  • Slack Notifications: Post form submissions to Slack channels
  • Database Storage: Save submissions to your own database
  • Order Processing: Trigger order fulfillment workflows
  • Analytics: Send data to custom analytics platforms

Webhook Limitations

  • One URL per account: All forms send to the same webhook URL
  • No retries: Failed webhooks are not automatically retried
  • 10-second timeout: Your endpoint must respond within 10 seconds
  • Tier 1+ only: Requires Individual tier or higher plan
  • No signature verification: FormRobin doesn't sign webhook payloads

Troubleshooting Webhooks

Issue: Webhook URL won't save.

Fix: Ensure you have Individual tier or higher plan. Verify the URL is valid and properly formatted (http:// or https://). Check that URL is under 255 characters.

Issue: Webhooks not being received.

Fix: Verify the webhook URL is correct in Settings ➜ Webhook. Test your endpoint with tools like webhook.site to confirm it's accessible. Check your server logs for incoming requests. Ensure your endpoint accepts POST requests.

Issue: Payload data is missing fields.

Fix: Check that form fields are configured correctly. Verify UTM tracking is enabled if you need UTM parameters. Some fields may be null if data isn't available (e.g., utm_term if not provided).

Issue: Webhook times out.

Fix: Ensure your endpoint responds within 10 seconds. Move slow processing to background jobs. Return 200 OK immediately and process data asynchronously.

Issue: Need different webhook URLs for different forms.

Fix: Use the form_id in the payload to route data appropriately within your webhook handler. Or consider using Zapier integration for more flexible per-form integrations.

FAQ

Q: Can I have different webhook URLs for different forms?
A: No, there's one webhook URL per account. Use the form_id in the payload to distinguish between forms in your webhook handler.

Q: Are webhooks sent for incomplete or abandoned forms?
A: No, webhooks only trigger when forms are successfully submitted and completed.

Q: What happens if my webhook endpoint is down?
A: FormRobin attempts to send the webhook once. If your endpoint is down or doesn't respond within 10 seconds, the webhook is lost. FormRobin does not retry.

Q: Can I see a log of sent webhooks?
A: Not currently in FormRobin. Implement logging on your webhook endpoint to track received requests.

Q: Do webhooks include file uploads?
A: File uploads are referenced in the payload but the actual files are not included. You'll need to use the FormRobin API to download files separately.


Need help setting up webhooks? Contact our support team - we're here to help!

Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.