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
- User submits a form on FormRobin
- FormRobin processes the submission
- FormRobin sends a POST request to your webhook URL
- Your server receives the submission data as JSON
- 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
- Log in to FormRobin
- Click the hamburger menu (☰) in top right
- Select Settings
- Click Webhook from the settings menu
- Enter your webhook URL (must be a valid URL)
- 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
- Set up a test endpoint (use tools like webhook.site or requestbin.com)
- Configure the test URL in FormRobin webhook settings
- Submit a test form
- Verify the payload is received at your endpoint
- Check that all expected data is included
- 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!