Webhooks for form submissions

    POST every submission as JSON to any public HTTPS endpoint you control — your API, a serverless function, a CRM — with the headers it needs and a log of every delivery.

    Why Use This Integration

    ✓

    POST to any HTTPS endpoint you control

    ✓

    Custom headers for authenticating the request

    ✓

    Choose the HTTP method per endpoint

    ✓

    Send a test payload before going live

    ✓

    A delivery log with the status code of every attempt

    ✓

    The same envelope Zapier and n8n receive

    How It Works

    Formboost sends a POST request to your webhook URL whenever a form is submitted, carrying the submission data and metadata. Authenticate the request by adding custom headers — an Authorization header, for example — which Formboost sends with every delivery.

    Form submitted → Formboost sends webhook → Your backend receives data → Database updated → Email confirmation sent

    Setup in 5 Steps

    1

    Go to Formboost dashboard

    2

    Add your webhook endpoint URL (HTTPS, publicly reachable)

    3

    Add any custom headers your endpoint needs to authenticate the call

    4

    Send a test payload to confirm your endpoint accepts it

    5

    Handle the webhook payload in your backend

    The payload your endpoint receives

    One JSON object per submission. Your form's fields are spread into `submission`, with `submittedAt` added last so a field of the same name cannot overwrite it. `eventId` is stable per submission, so a consumer can drop a duplicate if it ever sees one twice. The same envelope is delivered to Zapier and n8n.

    POST https://your-app.example/hooks/formboost
    Content-Type: application/json
    User-Agent: Formboost-Webhook/1.0
    Authorization: Bearer <the header you configured>
    
    {
        "event": "form.submission",
        "eventId": "sub_9c1f…",
        "sentAt": "2026-09-16T10:21:07.412Z",
        "form": { "name": "Contact", "alias": "YOUR_ENDPOINT_ID" },
        "submission": {
            "name": "Jane Smith",
            "email": "jane@example.com",
            "message": "Hello — can we talk on Thursday?",
            "submittedAt": "2026-09-16T10:21:06.980Z"
        }
    }

    Delivery rules, stated plainly

    The URL must be public HTTPS; private and loopback addresses are refused, and redirects are not followed. Each delivery has a 15-second timeout. Any 2xx from your endpoint counts as delivered; anything else, or a timeout, is recorded as failed with the status code — Formboost does not retry automatically, so use the Send test button and the delivery log to get an endpoint right before going live.

    There is no signature header. Authenticate the call with a custom header — a bearer token or shared secret you set on the integration — and check it on your side. Test deliveries carry `event: form.submission.test` and are kept apart from real traffic in the log.

    Webhooks setup walkthrough

    In short

    A webhook is an HTTP request Formboost sends to a URL you choose the moment a submission clears screening, with the submission as JSON. Email tells you a form was filled in; a webhook lets something happen — a CRM contact created, a row appended, a workflow started, your own code run.

    Key takeaways

    • •Custom webhooks start on the Starter plan ($9/mo); Slack, Discord, Telegram and email delivery are on the free plan.
    • •The URL must be public HTTPS. Choose the method (POST by default; GET, PUT and PATCH are accepted) and add any headers the receiver needs.
    • •One attempt per submission with a 15-second timeout, logged with its status code. There is no automatic retry and no signature header — authenticate with a header you set.
    • •eventId is stable per submission, so a consumer that sees the same event twice can drop the duplicate.

    Where to point a webhook

    • •Your own backend — an API route or serverless function that writes to your database or sends a confirmation.
    • •A CRM or SaaS API — HubSpot, Pipedrive or any endpoint that accepts JSON, authenticated with a header.
    • •An automation platform — Zapier and n8n are first-class destinations with the same payload; Make and IFTTT are reachable through their webhook triggers.
    • •A capture tool while you build — webhook.site shows the exact request before you write a line of code.

    Setup (under 5 minutes)

    • •Open the form in your dashboard and go to Integrations → Webhook.
    • •Paste the endpoint URL. It has to be reachable from the public internet over HTTPS — localhost and private addresses are refused.
    • •Pick the HTTP method. POST is the default and what most receivers expect.
    • •Add custom headers as needed — an Authorization: Bearer … or X-API-Key header is how you authenticate against an API. Host, Content-Length, Connection and Transfer-Encoding are ignored if set.
    • •Save, then click Send test. The test carries event: form.submission.test and shows up in the delivery log like a real one.

    Inspect the payload before you build against it

    Open webhook.site, copy the unique URL it gives you, paste it as the webhook URL and send a test. You will see the method, every header and the JSON body exactly as your real endpoint will receive them. The envelope itself — event, eventId, sentAt, form, submission — is documented in the contract above and is identical for Zapier and n8n.

    Answer fast, work later

    Formboost waits up to 15 seconds for a 2xx and makes one attempt. Acknowledge first and do slow work afterwards:

    // Express example
    app.post("/hooks/formboost", (req, res) => {
      if (req.get("authorization") !== `Bearer ${process.env.FORMBOOST_HOOK_TOKEN}`) {
        return res.sendStatus(401);
      }
      res.sendStatus(200);            // acknowledge inside the timeout
      processSubmission(req.body);    // then do the real work asynchronously
    });

    A non-2xx or a timeout is recorded as a failed delivery with the status code in Integrations → Delivery log. Because there is no retry, fix the endpoint and use Send test to confirm before relying on it — the submission itself is always stored and visible in the dashboard regardless.

    Troubleshooting

    ProblemFix
    No request arrivesThe URL must be public HTTPS; localhost, private IPs and plain HTTP are refused. Check the delivery log for the recorded error.
    401 or 403 in the logThe header value the receiver expects is wrong or missing — re-enter it on the integration.
    Timeout in the logRespond within 15 seconds; move slow work after the acknowledgement.
    Fields missing from submissionEvery input needs a name attribute; unnamed inputs are not submitted by the browser.
    Redirect answered by the endpointRedirects are not followed — point the webhook at the final URL.

    Next steps

    Go deeper

    Frequently Asked Questions

    Common questions about Webhooks integration

    How does Webhooks integration work?

    Formboost sends a POST request to your webhook URL whenever a form is submitted, carrying the submission data and metadata. Authenticate the request by adding custom headers — an Authorization header, for example — which Formboost sends with every delivery.

    How do I set up Webhooks?

    Follow the setup steps below. The process is straightforward and typically takes just a few minutes to complete.

    Which plans include the Webhooks integration?

    The Webhooks integration is available from the Starter plan ($9/mo) upward. The Free plan includes email, Slack, Discord and Telegram delivery, one destination per form.

    Can I use multiple integrations at once?

    Yes, on Starter and above: Starter allows five destinations per form and Pro removes the limit, so one form can post to email and Webhooks at the same time. The Free plan sends each form to one destination.

    Connect Webhooks to your forms today

    It takes less than a minute to set up. No credit card required.