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
-
Under what conditions does Softr populate response.data vs response.record?
-
Could this be related to:
-
Conditional Form block vs standard form?
-
Ending type (currently “Refresh form”)?
-
Form configuration?
-
-
Has anyone successfully accessed Make webhook responses in submit-form-success recently?