Filter Forms
Form Destinations

HTTP Webhook Destination

Send approved submissions to your own API endpoints via HTTP webhooks

Overview

HTTP webhooks allow you to send approved form submissions to your own API endpoints. This is perfect for integrating Filter Forms with your existing systems, CRMs, or custom applications.

Setting Up HTTP Destination

  1. Navigate to your form's settings
  2. Click on "Destinations" in the left sidebar
  3. Select "HTTP Webhook" from the available destination types
  4. Enter your webhook URL (must be HTTPS)
  5. Optionally add custom headers for authentication
  6. Click "Save"

Webhook Payload

When a submission is approved, Filter Forms sends a POST request to your webhook URL with the following JSON payload:

json

Payload Fields

  • formId: Unique identifier for the form
  • formTitle: Display name of the form
  • submissionData: Object containing all form field values (keys are field IDs, values are user responses)
  • submittedAt: ISO 8601 timestamp when the submission was received

Custom Headers

You can add custom headers to authenticate your webhook requests:

  1. Click "Add Header" in the HTTP destination settings
  2. Enter header name (e.g., "Authorization")
  3. Enter header value (e.g., "Bearer your-secret-token")
  4. Add multiple headers as needed

Common header examples:

  • Authorization: Bearer your-api-token
  • X-API-Key: your-api-key
  • Content-Type: application/json (automatically included)

Request Details

  • Method: POST
  • Content-Type: application/json
  • Timeout: 30 seconds
  • Retries: Up to 3 attempts with exponential backoff
  • User-Agent: FilterForms-Webhook/1.0

Response Handling

Your endpoint should respond with:

  • Success: HTTP status code 200-299
  • Failure: HTTP status code 400+ (submission will be retried)

Example successful response:

json

Security Best Practices

  1. Always use HTTPS - Filter Forms only allows HTTPS webhook URLs
  2. Validate webhook signature - Use custom headers to authenticate requests
  3. Verify payload structure - Check that required fields exist before processing
  4. Implement idempotency - Use submissionId to prevent duplicate processing
  5. Rate limiting - Implement rate limiting on your endpoint to prevent abuse

Testing Your Webhook

  1. Use a service like webhook.site to test webhook payloads
  2. Submit a test form submission
  3. Verify the payload structure matches your expectations
  4. Update your actual endpoint URL once tested

Monitoring and Debugging

Filter Forms provides webhook delivery status in your dashboard:

  • Delivery Status: Success, Failed, or Pending Retry
  • Response Code: HTTP status code from your endpoint
  • Response Time: How long your endpoint took to respond
  • Error Message: If delivery failed, the error details

Common Integration Examples

CRM Integration

javascript

Slack Notification

javascript

Troubleshooting

Webhook not receiving requests?

  • Verify your endpoint is publicly accessible
  • Check that you're using HTTPS (not HTTP)
  • Review your server logs for incoming requests
  • Test with webhook.site to verify Filter Forms is sending requests

Requests timing out?

  • Ensure your endpoint responds within 30 seconds
  • Move slow operations (like email sending) to background jobs
  • Return a success response immediately, then process asynchronously

Getting errors?

  • Check the error message in the Filter Forms dashboard
  • Verify your endpoint returns proper HTTP status codes
  • Ensure JSON payload parsing is working correctly
  • Check custom header authentication logic