Output Ports
| Port | Condition | Description |
| success | Child workflow completed with status "success" or "completed" | All child outputs available via output.NodeName.subworkflow.*. Parent workflow continues along this port. |
| error | Child workflow failed, was cancelled, exceeded nesting depth, or the child workflow ID does not exist | Error details in output.NodeName.error. The child workflow's error message is included. |
Output Data Schema
| Field | Type | Description |
subworkflow.* | object (namespace) | All outputs and variables produced by the child workflow, available as a flat namespace. For example, if the child set var.invoiceId, the parent accesses it as output.NodeName.subworkflow.invoiceId. |
subworkflow.result | any | The value of the child workflow's final output — typically set by the child's StopWorkflow node message or the last CodeExecute result. |
Example: Child Outputs Available in Parent
// Child workflow sets these variables before completing:
// var.invoiceId = "INV-20260001"
// var.pdfUrl = "https://storage.example.com/invoices/INV-20260001.pdf"
// var.approvedBy = "jane.manager@company.com"
// Parent accesses them after RunInvoiceSubflow completes:
{@ output.RunInvoiceSubflow.subworkflow.invoiceId } // "INV-20260001"
{@ output.RunInvoiceSubflow.subworkflow.pdfUrl } // "https://storage..."
{@ output.RunInvoiceSubflow.subworkflow.approvedBy } // "jane.manager@company.com"
Error Output Schema
{
"error": {
"code": "CHILD_WORKFLOW_FAILED",
"message": "Sub-workflow 'a1b2c3d4...' terminated with status: failed. Reason: Validation failed for field 'email'.",
"childWorkflowId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"childExecutionId": "exec-9988776655",
"node": "RunApprovalProcess",
"timestamp": "2026-05-23T10:34:12Z"
}
}