Sovereign Platform is in pre-launch alpha.
Not yet available to purchase. Sign up for our mailing list for upcoming launch dates.
Sovereign Platform is in pre-launch alpha.
Not yet available to purchase. Sign up for our mailing list for upcoming launch dates.
Workflows become powerful when steps can use data from previous steps. Sovereign uses a template expression syntax that lets you reference outputs, trigger data, and variables anywhere in your step configuration.
Expressions use double curly braces: {{ path.to.value }}. When the workflow engine prepares a step for execution, it replaces each expression with the actual value from your workflow's data.
There are three main data sources you can reference:
Data passed when the workflow was started — from a manual run, a schedule, or a webhook.
{{ trigger.customer_name }}
{{ trigger.payload.order_id }}
Results from steps that have already completed. Reference them by the step's node ID and the field name in its output.
{{ context.data.step_id.result.field_name }}
For example, if a step with ID fetch_customer returned a result containing a name field:
{{ context.data.fetch_customer.result.name }}
Workflow-level variables passed via configurations or at execution time.
{{ vars.environment }}
{{ vars.api_endpoint }}
When an expression is the entire value of a field (not mixed with other text), the original data type is preserved. This means:
When an expression is mixed with text (string interpolation), the result is always a string:
Hello, {{ context.data.lookup.result.name }}!
This produces a string like Hello, Jane!.
Pure Expressions for Collections
When passing a collection to a ForEach node, make sure the expression is the entire field value — not embedded in a string. This preserves the array type so the ForEach can iterate over it properly.
{{ context.data.get_order.result.total }}
{{ trigger.webhook_payload.event_type }}
{{ vars.target_environment }}
Order {{ context.data.create_order.result.id }} created for {{ trigger.customer_name }}
Sovereign uses the Scriban template engine, which supports more than simple variable substitution. You can use:
{{ if condition }}...{{ end }}{{ for item in collection }}...{{ end }}{{ value | string.upcase }}{{ value + 1 }}However, for most workflows, simple path expressions are all you need. The built-in action nodes (like filter, map, and conditional logic) handle complex data transformations more reliably than template expressions.
If an expression references a variable that does not exist, the workflow engine raises an error at dispatch time rather than silently producing empty output. This fail-fast behavior helps you catch misconfigured templates before they cause downstream issues.
Missing Variables
If a template references {{ vars.api_key }} and no api_key variable is provided, the step will fail with a clear error message explaining which variable is missing. Check your workflow configuration to ensure all required variables are provided.