Manual Trigger
Intentional workflow execution — run from the canvas, CLI, or as a callable subworkflow.
Use Manual Trigger when:
- You want to run a workflow on demand from the canvas or via a connected runner
- You are building a workflow that another workflow calls as a subworkflow
- You need a trigger that does not require an external HTTP event
If you need a workflow that responds to external HTTP requests, use Webhook Trigger or API Endpoint instead.
| Handle | Type | Description |
|---|---|---|
payload | object | The invocation envelope |
The payload (accessed as {{ manual.* }}) shape:
| Field | Type | Description |
|---|---|---|
body | any | The data passed to this trigger (from a subworkflow invocation or test payload) |
headers | object | Headers from the invocation |
query | object | Query parameters (empty for manual invocations) |
path | string | Request path (empty for manual invocations) |
method | string | Invocation method — MANUAL for manual runs |
contentType | string | Content type of the invocation body |
rawBody | string | Unparsed body string |
source | string | Source identifier — always manual |
auth | object | Authentication result — type and verified status |
request | object | Request metadata — requestId and receivedAt timestamp |
invocation | object | Invocation metadata — type and workflowId |
| Setting | Type | Default | Description |
|---|---|---|---|
allowWorkflowInvocation | boolean | true | Allow other workflows to invoke this workflow as a subworkflow. Disable to restrict execution to manual runs only. |
mockPayload | code editor (JSON) | {} | Test payload to inject when running this workflow manually from the canvas. |
A subworkflow that receives data from its parent and transforms it:
Manual Trigger → Transform → Return
The parent workflow passes data via the Subworkflow node. The body field on payload contains that data.
Reference the trigger payload in downstream nodes:
{{ manual.body }}
{{ manual.body.someField }}
{{ manual.invocation.type }}
import manual from @tensorify/manual-trigger:4.0.0
import transform from @tensorify/transform:3.0.0
import return_node from @tensorify/return:3.0.0
node trigger @tensorify/manual-trigger:4.0.0 {
allowWorkflowInvocation = true
mockPayload = "{\"name\": \"Alice\"}"
}
node reshape @tensorify/transform:3.0.0 {
mode = "object"
template = "{\"greeting\": \"Hello, {{ manual.body.name }}\"}"
}
node respond @tensorify/return:3.0.0 {
returnMode = "simple"
}
trigger.payload -> reshape.input
reshape.result -> respond.input
- If
allowWorkflowInvocationis disabled, calling this workflow from a Subworkflow node fails at runtime. mockPayloadis only used during canvas testing. In production, the real invocation payload is used.- Non-HTTP fields (
path,query,rawBody) are empty or null for manual invocations — usebodyfor the caller's data.
- Subworkflow — call this workflow from another
- Return — return a value back to the caller
- API Endpoint — expose an HTTP endpoint instead
