Input Node 📝
Pauses workflow execution and waits for human input via a form or text entry.
Node type: inputNode
Category: Human
Actor: inputNode (2 threads)
Description
The Input Node suspends a workflow execution and presents a form or input prompt to a user. The workflow resumes only when a user submits the form via the Complete Task API or the chat interface.
Use Input Nodes for:
- Human-in-the-loop approval workflows
- Multi-step data collection forms
- Interactive chat conversations
- Manual review and decision checkpoints
Properties
| Property | Type | Required | Description |
|---|---|---|---|
formTitle | text | No | Title displayed above the form |
inputType | select | Yes | Type of input to collect (see table below) |
Input Types
| Type | Description | Collected Data |
|---|---|---|
textbox | Single-line text input | {inputValue} as string |
textarea | Multi-line text area | {inputValue} as string |
number | Numeric input with validation | {inputValue} as number |
date | Date picker | {inputValue} as ISO date string |
select | Dropdown with predefined options | {inputValue} as selected option |
checkbox | Multiple checkbox selections | {inputValue} as array |
radio | Single selection from options | {inputValue} as string |
file | File upload | {inputValue} as file reference |
form | Full custom form with multiple fields | {formData} as object |
Inputs
When the Input Node is reached, it:
- Suspends the process instance (
stateCd: 0, nodestatusCd: 1) - Stores the node's waiting state in the database
- Returns to the caller (the process instance is now "waiting")
The Input Node has access to all current workflow variables for display in formTitle.
Outputs
When a user submits the form via the Complete Task endpoint:
| Variable | Type | Description |
|---|---|---|
{inputValue} | varies | The submitted value (for simple input types) |
{formData} | object | All form fields (for form input type) |
{inputNodeAction} | string | The action taken: COMPLETE or CANCEL |
For form type, access individual fields as {formData.fieldName}.
Completing an Input Node
Use the Complete Task API:
POST /process/task
{
"processInstanceId": "inst_xyz789",
"nodeId": "approval-input-1",
"action": "COMPLETE",
"data": {
"approvalDecision": "approved",
"notes": "Looks good, proceed with the order"
}
}
All fields in data become workflow variables accessible in downstream nodes.
Chat Workflow Integration
In chat-based workflows (using the public workflow interface), the Input Node seamlessly integrates with the conversation:
- The AI Task generates a message or question
- The Input Node presents the input form in the chat UI
- The user types or selects an answer
- The workflow resumes with the user's response
When inputType is textbox or textarea, the input appears as a chat message box. Other types render as appropriate UI controls within the chat.
Connections
| Connection | Description |
|---|---|
sequenceFlow (incoming) | Arrives from previous node |
sequenceFlow (outgoing) | Continues after form submission |
errorFlow (optional) | Taken if the input node is cancelled |
Example: Approval Workflow
{
"nodeId": "approval-1",
"name": "Manager Approval Required",
"nodeType": "inputNode",
"properties": {
"formTitle": "Review this {requestType} request for {requesterName}",
"inputType": "form"
}
}
The manager receives a notification, reviews the request, and submits the form. The workflow then routes based on {formData.decision}.
Example: Customer Intake Form
{
"nodeId": "intake-form-1",
"name": "Collect Customer Information",
"nodeType": "inputNode",
"properties": {
"formTitle": "Please provide your details",
"inputType": "form"
}
}
Downstream variables: {formData.firstName}, {formData.lastName}, {formData.email}, {formData.issueDescription}
Best Practices
- Always add a timeout to Input Nodes in automated workflows — unanswered inputs can block instances indefinitely
- Connect
timeoutFlowto handle cases where no one responds within the expected time - For chat workflows, use
inputType: textboxortextareafor conversational input - Implement a notification mechanism (email/SMS node before the Input Node) so the right person knows they need to respond
- After resumption, validate the submitted data with an If/Else or Script Task before proceeding