Manual Trigger

Intentional workflow execution — run from the canvas, CLI, or as a callable subworkflow.

When to Use

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.

Output

HandleTypeDescription
payloadobjectThe invocation envelope

The payload (accessed as {{ manual.* }}) shape:

FieldTypeDescription
bodyanyThe data passed to this trigger (from a subworkflow invocation or test payload)
headersobjectHeaders from the invocation
queryobjectQuery parameters (empty for manual invocations)
pathstringRequest path (empty for manual invocations)
methodstringInvocation method — MANUAL for manual runs
contentTypestringContent type of the invocation body
rawBodystringUnparsed body string
sourcestringSource identifier — always manual
authobjectAuthentication result — type and verified status
requestobjectRequest metadata — requestId and receivedAt timestamp
invocationobjectInvocation metadata — type and workflowId

Settings

SettingTypeDefaultDescription
allowWorkflowInvocationbooleantrueAllow other workflows to invoke this workflow as a subworkflow. Disable to restrict execution to manual runs only.
mockPayloadcode editor (JSON){}Test payload to inject when running this workflow manually from the canvas.

Example

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 }}

TSL

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

Common Gotchas

  • If allowWorkflowInvocation is disabled, calling this workflow from a Subworkflow node fails at runtime.
  • mockPayload is 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 — use body for the caller's data.

See Also

On this page