HTTP Webhook

    Send submission data to any URL the moment a form is submitted. Use this to trigger backend workflows, update a CRM, write to a database, or connect to services not natively supported.

    Setup

    1. In Formboost, open your form → Integrations tab → Webhook
    2. Enter your endpoint URL
    3. Choose the HTTP method: POST, GET, PUT, or PATCH
    4. Optionally add custom headers (JSON format — see below)
    5. Save

    Custom Headers

    Add headers as a JSON object. Useful for authentication or content-type requirements:

    1{
    2  "Authorization": "Bearer YOUR_TOKEN",
    3  "X-API-Key": "YOUR_API_KEY"
    4}

    Example Payload

    Formboost sends a JSON body (for POST, PUT, PATCH) or query parameters (for GET):

    1{
    2  "event": "form.submission",
    3  "eventId": "sub_3b241101-e2bb-4255-8caf-4136c566a962",
    4  "sentAt": "2026-08-24T12:00:00.120Z",
    5  "form": {
    6    "name": "Contact Form",
    7    "alias": "contact"
    8  },
    9  "submission": {
    10    "name": "John Doe",
    11    "email": "[email protected]",
    12    "message": "Hello, I'd like to learn more.",
    13    "submittedAt": "2026-08-24T12:00:00.000Z"
    14  }
    15}

    This is the same envelope the Zapier and n8n destinations send. A consumer written against one works against all three.

    FieldMeaning
    eventform.submission, or form.submission.test for a test delivery
    eventIdsub_<submission id>, stable across retries — use it as an idempotency key to drop duplicates. A test delivery gets a test_<uuid> id instead
    sentAtWhen this attempt left Formboost. Changes on every retry
    form.name / form.aliasThe form's display name and its endpoint alias
    submission.submittedAtWhen the form was actually filled in. Unchanged by retries, so it can be much earlier than sentAt
    submission.*Your own form fields, exactly as submitted — not renamed or reordered

    Changed in August 2026

    The body used to be flat, with your fields at the top level alongside fb_formId, fb_formName and fb_dashboardUrl. Those keys are gone and your fields now live under submission.

    If your endpoint reads req.body.email, it must now read req.body.submission.email. fb_dashboardUrl has no replacement — use form.alias plus eventId to identify a submission.

    Reserved Keys

    Only one name is reserved: submittedAt. A form field with that name is dropped in favour of the real timestamp, because consumers rely on it being a date.

    Everything Formboost adds lives under event, eventId, sentAt and form, so a field of your own called name, id or event cannot collide with ours — yours is inside submission.

    Testing

    Use a service like webhook.site to inspect the exact payload Formboost sends before wiring it to your production endpoint:

    1. Open webhook.site and copy the unique URL
    2. Paste it into the webhook URL field in Formboost and save
    3. Submit your form (or click Send Test in the Integrations tab)
    4. Inspect the full request — headers, body, and all field values — on webhook.site

    Retry Behavior

    Formboost delivers each submission once. If your endpoint returns a non-2xx status code or times out, the delivery is not retried — the failure is recorded, with the status code and error, in your dashboard under Integrations → Delivery Logs.

    Because there is no retry, your endpoint should accept the payload quickly and do any slow work asynchronously. If you need at-least-once delivery, queue the payload on your side as soon as you receive it.

    Troubleshooting

    ProblemFix
    No request receivedConfirm the URL is publicly accessible (not localhost)
    401 / 403 errorsCheck the Authorization header value in your custom headers
    Payload missing fieldsEnsure field name attributes in your HTML form are set correctly
    Fields suddenly undefinedThe body changed in August 2026 — your fields are under submission now, not at the top level
    TimeoutYour endpoint must respond within 10 seconds; offload heavy work asynchronously
    Reserved key conflictOnly submittedAt is reserved — rename a form field of that name

    Notes

    • Webhook URLs must be publicly accessible. Local development servers (localhost, 127.0.0.1) will not work.
    • Formboost sends Content-Type: application/json for all non-GET requests.
    • Delivery logs showing all attempts and response codes are available in your dashboard under Integrations → Delivery Logs.