Webhook Dynamic Redirect

By default, a webhook integration delivers leads asynchronously (queued, retried in the background). With Wait for Response on, the lead is posted to your endpoint synchronously at submission and the visitor is redirected to a URL your endpoint returns. The optional Dynamic Redirect Advanced Settings layer adds conditional routing on response fields, a loading screen, timeout/fallback, and the ability to forward returned values on the URL.

This is the generic version of the same feature LeadByte and LeadProsper have - it works with any endpoint that returns JSON.

How your endpoint returns data

Your webhook can return whatever JSON you want. The redirect URL is read from a top-level key you choose (default redirect_url):

{
  "redirect_url": "https://buyer.com/thanks",
  "status": "ACCEPTED",
  "data": {
    "buyer_phone": "5551234"
  }
}

Basic setup (V1 - the default)

Funnel → Lead Delivery → your webhook integration.

  1. Wait for Response - turn on. (Off = the webhook stays fully async, unchanged.)
  2. Response Redirect Field - the top-level key in your response that holds the URL. Defaults to redirect_url  . (This is a flat top-level lookup - the redirect URL must sit at the root of the response.)
  3. Fallback Redirect URL (optional) - where to send the visitor when the response has no valid URL. Leave blank to continue the funnel's normal flow.

Submit → wait for your endpoint → redirect to the returned URL (or fallback). Existing webhooks are untouched unless you turn this on.


Dynamic Redirect Advanced Settings (opt-in)

Because webhook dynamic redirect has live users, the richer behavior is behind an explicit toggle - Dynamic Redirect Advanced Settings (it appears once Wait for Response is on). With it off, everything works exactly as the basic setup above. Both Wait for Response and this toggle must be on for the advanced behavior to run.

Response fields — reading values from the response (JSONPath)

This reads values out of your endpoint's response, not the data the visitor typed on the form. Because webhook responses are arbitrary and often nested, response fields use JSONPath. Each row has two boxes:

  • Left box = a nickname you choose. Referenced later as response:<name>   and used as the query-param name when appending to the URL.
  • Right box = the JSONPath to that value in your response.
You want to capture… Left (name) Right (JSONPath)
Accept/reject status status   status  
Buyer phone (nested) buyer_phone   data.buyer_phone  
Company name (nested) company   data.company_name  
First item in an array first   results[0].id  

The exact paths depend entirely on your endpoint's response - do a test post, look at the JSON that comes back, and copy the path to each value. (A leading $.   is optional.)

Note: the basic Response Redirect Field (above) is a top-level key; the advanced Response fields here support JSONPath for nested values. If your redirect URL is nested, capture it as a response field and route to it with a rule.

Important: these read the response side. To send the lead's own submitted data to your endpoint, use the integration's field mapping/payload, not here.

Append response values to the URL

Turning on Append response values to URL reveals a checklist of your response fields. Tick the ones you want forwarded - each ticked field is added to the redirect URL as a query param.

  • Param name = the field's nickname; value = what came back.
  • Example: with status   and buyer_phone   ticked, and your endpoint returning redirect_url  : https://buyer.com/thanks  , status  : ACCEPTED  , data.buyer_phone  : 5551234  , the visitor lands on:
https://buyer.com/thanks?status=ACCEPTED&buyer_phone=5551234

So yes - it captures the values that come back and forwards them on the URL. Qualifiers:

  • Applies only to the redirect URL your endpoint returns - not the Fallback, not a routing-rule URL.
  • Empty values are skipped.
  • Existing params are never overwritten.

Routing rules

Conditions on your response fields, checked top to bottom - first match wins. Each routes to a step, child page, another funnel, or a custom URL.

response:status  equals  REJECTED  →  Custom URL: https://…/not-a-fit

Routing priority

  1. Routing rules, in order.
  2. If nothing matched and the response has a valid redirect URL → that URL (with any appended params).
  3. Otherwise → the Fallback.

Loading screen

A branded "reviewing your results" spinner + Loading message while your endpoint responds.

Timeout

How long to wait, 1-30s (default 15). On timeout the fallback fires; the lead is still saved.

Fallback

On timeout or no match with no usable URL: Continue the normal flow, show a Message, route to a step/page/funnel, or a Custom URL.


Notes & gotchas

  • The lead is always saved, even if your endpoint errors or times out.
  • Basic behavior is the default - Advanced Settings only affects webhooks where you explicitly turn it on (and Wait for Response must also be on).
  • Redirect field = top-level key; Response fields = JSONPath (nested-friendly).
  • Works with any JSON-returning endpoint, on the hosted page and embedded forms.
Did this answer your question? Thanks for the feedback There was a problem submitting your feedback. Please try again later.