Nodes are graphical representations of each process in a workflow. Each node can access the data from the nodes that were executed earlier. Every workflow contains key node types that help orchestrate the flow of data and logic.
The Start Trigger receives data through parameters, which can be used in any node of the workflow. You can also set default values using Test JSON parameters. These defaults will be used if no values are provided when the workflow is triggered from the app builder or a webhook.
The **If condition** node enables branching logic with:
- One or two incoming flows
- Two outgoing flows (true/false paths)
- Logical expressions for decision making
When the condition evaluates to true, the outgoing node connected to the green arrow will be executed. If it is false, the outgoing node connected to the red arrow will be executed.
The **Workflow** node is used to trigger another workflow from within a workflow. Parameters can also be passed to another workflow.
:::note
1. A workflow can call itself recursively. It’s recommended to define an exit condition to avoid an infinite loop.
2. The timeout for each workflow can be configured using the `WORKFLOW_TIMEOUT_SECONDS` environment variable, for more information checkout [Customizing Workflow Configuration](/docs/workflows/overview#customizing-workflow-configuration).
Each node type serves a specific purpose in the workflow. By combining these nodes, you can create powerful automation flows tailored to your business needs.
The **Error Handling** node operation in ToolJet workflows lets you define different execution paths based on whether a node succeeds or fails. If a node runs successfully, the workflow continues along the success path, if it fails, the error path is triggered, allowing you to perform custom actions like logging, notifications, or retries.
The **Copy** operation lets you copy a node’s configuration to your clipboard. You can then paste it into another part of the workflow or a different workflow for quick reuse.
The **Duplicate** operation instantly creates a copy of the node in the same workflow. This helps speed up building workflows with similar nodes without reconfiguring from scratch.
The **Delete** operation removes a node and its connections from the workflow. Use this to clean up unused or obsolete nodes and keep your workflow organized.