What are Webhooks?
Webhooks send HTTP POST requests to your specified URL when someone submits your form. Use Cases:- Custom CRM integration
- Trigger automation workflows
- Update external databases
- Send data to your own server
- Real-time data sync
- Trigger third-party services
- Custom notification systems
How Webhooks Work
- User submits form → TopFormBuilder captures submission
- Webhook triggers → Sends POST request to your URL
- Your server receives → Processes submission data
- Response returned → Success or failure status
Setting Up Webhooks
Step 1: Prepare Your Endpoint
Before adding webhook in TopFormBuilder, prepare your receiving endpoint: Requirements:- Public HTTPS URL (SSL required)
- Accepts POST requests
- Returns HTTP 200 status on success
- Responds within 30 seconds (timeout)
Step 2: Add Webhook Integration
- Open your form in Form Builder
- Go to Settings tab
- Click Integrations section
- Click “Add Integration”
- Select “Webhook”
Step 3: Configure Webhook
Webhook URL (required)- Enter your endpoint URL
- Must start with
https:// - Example:
https://api.yoursite.com/webhooks/forms
- Add authentication headers
- Example:
Authorization: Bearer YOUR_TOKEN - Format:
Header-Name: Value(one per line)
- Shared secret for verification
- Used to sign requests
- Verify webhook authenticity
- Generate secure random string
- ☑ Auto-retry on failure (recommended)
- Retries up to 3 times
- Exponential backoff (1s, 5s, 15s delays)
- Default: 30 seconds
- Maximum wait for response
- Fails if no response within timeout
Step 4: Test Webhook
- Click “Test Webhook” button
- Sample data sent to your URL
- Check your server receives data
- Verify response status 200
- Review payload format
- Check URL is correct and accessible
- Verify server accepts POST requests
- Check firewall/security settings
- Review server logs for errors
Step 5: Save & Activate
- Click “Save Integration”
- Toggle “Active” to ON
- Webhook is now live!
Webhook Payload
Request Format
Method: POST Content-Type: application/json Body: JSON object with submission dataPayload Structure
Headers Sent
Standard Headers:Verifying Webhooks
Signature Verification (Recommended)
Verify webhook authenticity using HMAC signature: Signature Header:X-TFB-Signature Format: sha256=<signature>
Verification Steps:
- Extract signature from header
- Compute HMAC of request body using your secret key
- Compare signatures
- Accept request if signatures match
Handling Webhooks
Responding to Webhooks
Success Response:- Return 200 status immediately
- Process webhook asynchronously (queue/background job)
- Don’t make webhook wait for long operations
- Log webhook data for debugging
Processing Submissions
Example Processing Flow:- Receive webhook → Validate signature
- Parse JSON → Extract submission data
- Queue job → Add to background queue
- Return 200 → Acknowledge receipt quickly
- Process async → Handle data in background
Retry Logic
Automatic Retries:- Retry 1: After 1 second
- Retry 2: After 5 seconds
- Retry 3: After 15 seconds
- Max retries: 3 attempts
- HTTP status code ≠ 200
- Connection timeout (30s)
- Connection refused
- SSL errors
- 200 status returned (even if response body has errors)
- 400-499 client errors (invalid request)
- Uncheck “Retry Failed Requests” in settings
- Webhook only fires once
Webhook Events
Available Events
form.submission.created (default)- New form submission received
- Most common event
- Includes all submission data
- Submission edited/updated
- Includes updated data
- Submission deleted
- Includes submission ID only
Monitoring Webhooks
Webhook Logs
View webhook delivery history:- Go to Form → Integrations
- Click “View Logs” on webhook integration
- See all webhook deliveries
- Delivery ID
- Timestamp
- Status (success/failure)
- HTTP status code
- Response body
- Response time
- Retry attempts
- Last 24 hours
- Last 7 days
- Last 30 days
- All time
Retry Failed Webhooks
Manually retry failed deliveries:- Go to webhook logs
- Find failed delivery
- Click “Retry” button
- Webhook resent immediately
- Check new delivery status
Common Integrations
Zapier Alternative
Use webhooks to connect with thousands of apps:- Create Zapier Zap with “Webhooks by Zapier” trigger
- Copy webhook URL from Zapier
- Paste into TopFormBuilder webhook integration
- Connect to any Zapier-supported app
Make (Integromat) Alternative
Similar to Zapier:- Create Make scenario with “Webhooks” module
- Copy webhook URL
- Add to TopFormBuilder
- Build automation workflow
Custom CRM
Send leads directly to your CRM:Database Integration
Store submissions in your database:Security Best Practices
Do:- Use HTTPS only (never HTTP)
- Verify webhook signatures
- Whitelist TopFormBuilder IPs (optional)
- Rate limit webhook endpoint
- Log all webhook deliveries
- Use secrets for authentication
- Expose webhook URL publicly
- Skip signature verification
- Process webhooks synchronously (timeout risk)
- Return sensitive data in response
- Trust webhook data without validation
Troubleshooting
”Webhook delivery failed”
Problem: Webhook not reaching your server Solutions:- Verify URL is correct and accessible
- Check server is running
- Ensure HTTPS (not HTTP)
- Check firewall allows incoming requests
- Review server logs for errors
- Test with curl/Postman
”Timeout error”
Problem: Server not responding within 30 seconds Solutions:- Return 200 immediately
- Process webhook asynchronously
- Optimize server performance
- Increase server resources
”SSL certificate error”
Problem: Invalid SSL certificate Solutions:- Ensure valid SSL certificate installed
- Check certificate not expired
- Verify domain matches certificate
- Use trusted CA (not self-signed)
“Signature verification failed”
Problem: Signature doesn’t match Solutions:- Check secret key is correct
- Verify using raw request body (not parsed JSON)
- Check HMAC algorithm (SHA256)
- Ensure UTF-8 encoding
Next Steps
- Slack Integration - Team notifications
- Stripe Integration - Payment processing
- API Documentation - Programmatic access
- All Integrations - View all options
Need help? Contact [email protected]