Workflows are composed of different node types, each serving a specific purpose in your execution flow.

Switch Node

Routes workflow execution to different branches based on conditions defined on workflow variables.

Evaluation Behavior

  • Conditions are evaluated top-to-bottom by branch order
  • If multiple branches match, the workflow takes the first matching branch
  • If no branches match, the workflow takes the Default route

Configuration Guidance

Conditions must be compatible with the workflow variable’s data type. It is recommended to define mutually exclusive conditions. If conditions are not mutually exclusive, branch ordering must be carefully set to prevent unintended routing.

Timestamp Comparisons

When comparing timestamps in Switch conditions, use the format:
%Y-%m-%dT%H:%M:%S.%fZ
System datetime is typically in a different format and must be converted before comparison:
{{ (system_variables.current_datetime | to_datetime('%d/%m/%Y %H:%M:%S.%f'))
   .replace(hour=0, minute=0, second=0, microsecond=0)
   .strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}

HTTPS Node

Performs HTTP requests (GET/POST/DELETE/etc.) to external APIs or custom endpoints, and maps response fields to workflow variables.

Request Configuration

FieldDescription
HTTP methodGET, POST, DELETE, etc.
URLThe endpoint to call
Query parametersOptional query string parameters
HeadersOptional request headers

Output Variables (Response Mapping)

Maps response fields into workflow variables so they can be used in downstream nodes.

Retry Behavior

SettingDescription
Max attempts1–60
DelayMinutes between retries
On retry exhaustContinue (proceed with workflow) or Stop (halt at this node)

Wait Node

Pauses workflow execution for a specified duration or until a target time.

Modes

Waits for a relative duration from the current time.Example: Wait 5 minutes.
Waits until a specific timestamp is reached.Example: Wait until a specific date and time.Scheduled Period supports a Regular Expression field where a Jinja expression can produce the target timestamp.

Variable References in Jinja

  • Workflow variables can be referenced directly by name (e.g., disposition_ptpdatetime)
  • System variables are referenced as system_variables.<name> (e.g., system_variables.current_datetime)
Workflows use UTC timestamps only. Any Jinja expression must output a UTC timestamp formatted as %Y-%m-%dT%H:%M:%S.%fZ.

Example Jinja Expression

{%- set current_dt = system_variables.current_datetime | to_datetime('%d/%m/%Y %H:%M:%S.%f') -%}
{%- if disposition_ptpdatetime and disposition_ptpdatetime != '' -%}
  {%- set ptp_dt = disposition_ptpdatetime | to_datetime('%Y-%m-%dT%H:%M:%S.%fZ') -%}
  {%- if ptp_dt.date() == current_dt.date() -%}
    {%- set today_3_30 = current_dt.replace(hour=3, minute=30, second=0, microsecond=0) -%}
    {%- set today_1_30 = current_dt.replace(hour=13, minute=30, second=0, microsecond=0) -%}
    {%- if current_dt <= today_3_30 -%}
      {{ today_3_30.strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}
    {%- elif current_dt <= today_1_30 -%}
      {{ current_dt.strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}
    {%- else -%}
      {{ (current_dt + timedelta(days=1)).replace(hour=3, minute=30, second=0, microsecond=0).strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}
    {%- endif -%}
  {%- else -%}
    {{ ptp_dt.replace(hour=3, minute=30, second=0, microsecond=0).strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}
  {%- endif -%}
{%- else -%}
  {{ (current_dt + timedelta(days=1)).replace(hour=3, minute=30, second=0, microsecond=0).strftime('%Y-%m-%dT%H:%M:%S.%fZ') }}
{%- endif -%}

Telephony Node

Places an outbound voice call using a configured agent. The telephony node uses Instant Outbound internally.
If a non-Exotel phone number or provider is required, ensure that provider is supported for Instant Outbound.

Agent Configuration

FieldDescription
Agent IDThe agent to use for the call
Agent versionVersion of the agent
Input mappingMaps workflow variables → agent variables. At runtime, the telephony node passes those workflow variable values to the agent.

Connection and Phone

Specifies the telephony connection and the phone number to use. Because Instant Outbound is used internally, it is not required to link a phone number to the agent in the Deploy section, provided:
  • The connection exists
  • The phone number is valid for that connection

Output Variables (Output Mapping)

Maps agent variables → workflow variables after the call completes. Use this when downstream workflow logic needs updated agent outputs (e.g., disposition, collected identifiers, status).
Agent variables are often strings. Keep workflow variable types aligned, or ensure comparisons/operators match the resulting types.

App Overrides

  • Do not pass an empty string for initial language
  • Language must be in Title Case

Retry Behavior

Each telephony node has its own retry configuration:
SettingDescription
Max attemptsMaximum number of call attempts
DelayTime between retries
On retry exhaustContinue (recommended — stop conditions handled via workflow logic) or Stop (workflow halts at this node)