Conditional Form submit-form-success not exposing webhook response body despite valid Make response

Hi all - I’m running into something quite strange with Softr forms + Make webhooks and would really appreciate any insight.

Expected behaviour (based on docs)

According to Softr docs, the submit-form-success event should include the webhook response in:

e.detail.response.data

Docs reference:

What I’m seeing

I have a Softr form connected to a Make webhook.

Make returns a valid JSON response:

{
“status”: “success”,
“name”: “Joe Bloggs”,
“first_name”: “Joe”,
“last_name”: “Bloggs co”,
“email”: “``joe@blogs.com``”,
“phone”: “+447999888777”,
“contact_id”: “recR89b3zAVnXtEHp”
}

I can confirm this is received correctly:

  • visible in DevTools → Network → Response

  • HTTP status = 200

  • content-type = application/json

However, in Softr custom code:

window.addEventListener(‘submit-form-success-contact-details-form-landlord’, (e) => {
console.log(e.detail);
});

I get:

{
“payload”: {
“name”: “Joe Bloggs”,
“email”: “``joe@blogs.com``”,
“phone”: “+447999888777”,
“org_name”: “MarketOffer”,
“Web Terms & Privacy”: true,
“role”: “Landlord”
},
“response”: {
“record”: {
“id”: “”,
“fields”: {}
},
“triggerResponse”: null
},
“ending”: {
“type”: “SUCCESS_MESSAGE”,
“action”: “REFRESH”
}
}

Important context

  • This is a webhook-based form (Make), not Airtable-linked

  • A different form in the same app (Airtable-linked) does populate response.record

  • The webhook response is definitely returned (confirmed via Network tab

My Code

function formSubmitSuccess(div, signal) {
    return new Promise((resolve, reject) => {
      const eventName = `submit-form-success-${div.id}`;

      const handler = (event) => {
        console.log("formSubmitSuccess event", event)
        console.log("formSubmitSuccess event.detail", event.detail)
        console.log("formSubmitSuccess event.detail.response", event.detail.response)
        const payload = event?.detail?.payload ?? null;
        const response = event?.detail?.response ?? null;

        cleanup();
        resolve({ payload, response });
      };

      const onAbort = () => {
        cleanup();
        reject(new Error(`Aborted: ${eventName}`));
      };

      function cleanup() {
        window.removeEventListener(eventName, handler);
        signal?.removeEventListener("abort", onAbort);
      }

      window.addEventListener(eventName, handler);


      if (signal) {
        if (signal.aborted) return onAbort();
        signal.addEventListener("abort", onAbort, { once: true });
      }
    });
  }

Questions

  1. Under what conditions does Softr populate response.data vs response.record?

  2. Could this be related to:

    • Conditional Form block vs standard form?

    • Ending type (currently “Refresh form”)?

    • Form configuration?

  3. Has anyone successfully accessed Make webhook responses in submit-form-success recently?