I’m struggling with a sub-workflow involving Slack approval. The core problem is that the data returned by the sub-workflow is incorrect only when the Slack approval node is included.
Here’s a simplified view of the sub-workflow:
Image Processing (Downloads image, sends it to Anthropic for analysis)
Slack Approval (Sends a message to Slack asking for approval of the analysis)
Data Handling (Processes the data from Anthropic based on approval)
The Key Issue:
When the Slack approval step is removed, the sub-workflow returns the correct, processed data from the Anthropic API. However, when the Slack approval step is present, the sub-workflow returns the original input data that was sent to the sub-workflow, rather than the processed data I expect from Anthropic.
Even though the workflow visually appears to execute correctly, waiting for my Slack approvals, it feels like the workflow is returning data before it has fully finished processing
I would like to remark that when the sub-workflow is executed independently, it works perfectly and returns the expected processed data.
Please share your workflow
Share the output returned by the last node
This is the correct output when executed independently
As you can see in the screenshot below, the output is simply a copy of the input. Also, the execute workflow node that calls this sub-workflow is configured to “Run once with all items” and has “Wait For Sub-Workflow Completion” option enabled.
Regarding the recognition approval loop, the workflow functions correctly regardless of whether the loop is present or not, as long as the Slack node is removed. I’ve tested the following scenarios:
Without Slack, with loop: Works correctly.
Without Slack, without loop: Works correctly.
With Slack, with loop: Fails (returns input data).
With Slack, without loop: Fails (returns input data).
With loop and a dummy node instead of Slack: Works correctly.
We’re having a very similar problem.
When we add the Slack node SendAndWait to a sub-workflow, it executes but does not return the data from the last node, it returns only an empty object.