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",
  "user_id": 42,
  "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
  • user_id: ID of the logged-in user who submitted the form (null if submitted anonymously by a non-authenticated visitor)
  • 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
  • User Attribution: Track which logged-in users submit forms for multi-user accounts

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, or user_id if submitted by anonymous visitor).

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.

Q: When is user_id included in the webhook payload?

A: The user_id field is included when a logged-in FormRobin user submits a form. For anonymous public submissions, this field will be null. This is useful for multi-user accounts to track which team member submitted a form.


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.