Problem Description :
I am developing a custom trigger/webhook node to replace a repetitive 3-node pattern I use in my workflows. My goal is to consolidate logic into a single node for better maintainability.
Current Workflow Pattern:
- Webhook Trigger: (Method: POST, Response Mode: ‘Respond to Webhook Node’).
- Code Node: Validates input, transforms data, and generates a response object.
- Respond to Webhook Node: Sends the final data back to the caller.
The Goal
I want to move the “Code Node” logic directly into the webhook() method of a custom node so that the node itself handles the request, processes the data, and returns the response in one step.
Implementation Attempt:
export class MyWebhook implements INodeType {
description: INodeTypeDescription = {
group: ['trigger'],
// code ommited
inputs: [],
outputs: ['main'],
webhooks: [
{
name: 'default',
httpMethod: 'POST',
responseMode: 'onReceived',
isFullPath: true,
path: '={{ `mywehook/${$parameter["path"]}`}}',
},
],
properties: [
{
displayName: 'Path',
name: 'path',
type: 'string',
default: '',
placeholder: '',
required: true,
description: 'The URL path to listen on',
},
],
};
async webhook(this: IWebhookFunctions): Promise<IWebhookResponseData> {
const bodyData = this.getBodyData()
const responseData = ... builds response;
return {
workflowData: [[{
json: {
params: bodyData,
},
}]],
webhookResponse: responseData,
noWebhookResponse: false,
}
}
}
The Issue:
Although the webhook triggers correctly and the workflow starts, I cannot get the node to return the responseData to the HTTP caller. The caller usually receives a default “Workflow started” message or a timeout, but not the webhookResponse data.
I have tried toggling responseMode and noWebhookResponse in several combinations, but without success.
Question:
What is the correct configuration in INodeTypeDescription and the webhook() return object to ensure the caller receives the custom data immediately?