Skip to main content

Schedulers & Triggers

Control when and how workflows start execution.

Available Nodes

NodeTypePurpose
StartTriggerManual workflow start
Cron SchedulerTrigger (also AI tool)Run on a recurring schedule
TimerAction (also AI tool)Delay execution
Python ExecutorAction (also AI tool)Run Python code

Start

Manually start a workflow with the Run button.

Use Cases

  • Testing workflows during development
  • On-demand execution
  • Entry point for manual processes
Every workflow needs at least one trigger node (Start, Cron Scheduler, a Webhook, or another event trigger) to begin execution.

Cron Scheduler

Run workflows on a recurring schedule. Instead of raw cron expressions, you pick a frequency and then set the matching interval or time-of-day fields. The Cron Scheduler is also a dual-purpose node — it can be connected to an AI Agent’s input-tools handle so agents can schedule delayed or recurring runs programmatically.

Parameters

frequency
select
default:"minutes"
How often the schedule fires: seconds, minutes, hours, days, weeks, months, or once. The other fields below appear based on the frequency you choose.
interval
number
default:"30"
Seconds between fires (5-59). Shown when frequency is seconds.
interval_minutes
number
default:"5"
Minutes between fires (1-59). Shown when frequency is minutes.
interval_hours
number
default:"1"
Hours between fires (1-23). Shown when frequency is hours.
daily_time
select
default:"09:00"
Time of day (HH:MM). Shown when frequency is days.
weekday
select
default:"1"
Day of week for weekly schedules (0=Sunday … 6=Saturday). Shown when frequency is weeks.
weekly_time
select
default:"09:00"
Time of day for weekly schedules. Shown when frequency is weeks.
month_day
select
default:"1"
Day of month (1-28, or L for the last day). Shown when frequency is months.
timezone
select
default:"UTC"
IANA timezone identifier (UTC, America/New_York, America/Los_Angeles, Europe/London, Europe/Berlin, Asia/Tokyo, Asia/Kolkata).

Frequency Examples

FrequencyFields you setResult
minutesinterval_minutes = 5Every 5 minutes
hoursinterval_hours = 1Every hour
daysdaily_time = 09:00Daily at 9am
weeksweekday = 1, weekly_time = 09:00Every Monday at 9am
monthsmonth_day = 1, timezone = UTCMonthly on the 1st
onceFires a single time (no repeat)

Output

{
  "timestamp": "2026-06-15T09:00:00Z",
  "iteration": 1,
  "frequency": "days",
  "timezone": "UTC",
  "schedule": "Daily at 09:00",
  "scheduled_time": "2026-06-15T09:00:00Z",
  "triggered_at": "2026-06-15T09:00:00Z",
  "waited_seconds": 86400,
  "next_run": "Daily at 09:00",
  "message": "Triggered after 1 day, will repeat: Daily at 09:00"
}

Example: Daily Report

[Cron (Daily at 09:00)] --> [HTTP Request] --> [AI Summary] --> [WhatsApp Send]
                            (fetch data)                          (send report)

Timer

Add a delay between nodes. The Timer is a dual-purpose node — it works both as a workflow delay node and as an AI Agent tool.

Parameters

duration
number
default:"1"
Delay duration (1-86400).
unit
select
default:"seconds"
Time unit: seconds, minutes, or hours.

Use Cases

  • Rate limiting API calls
  • Waiting for external processes
  • Scheduling sequential actions
  • AI Agent tool — agents can set timers programmatically when connected to input-tools

As a Workflow Node

[For Each Item] --> [HTTP Request] --> [Timer (1s)] --> [Next Item]

As an AI Agent Tool

Connect the Timer to an agent’s input-tools handle. The agent can then invoke the timer to introduce delays during reasoning:
[Timer] --(tools handle)--> [AI Agent] --> [Output]
See AI Tools for the full tool schema and LLM interaction details.

Output

{
  "timestamp": "2026-06-15T10:30:05Z",
  "elapsed_ms": 5000,
  "duration": 5,
  "unit": "seconds",
  "message": "Timer completed after 5 seconds"
}

Python Executor

Run custom Python code within workflows.

Parameters

code
code
required
Python code to execute

Available Variables

VariableDescription
input_dataData from connected input node
outputDictionary to set as node output

Example: Data Processing

# Access input data
message = input_data.get("text", "")

# Process
word_count = len(message.split())
has_question = "?" in message

# Set output
output = {
    "word_count": word_count,
    "has_question": has_question,
    "summary": f"Message has {word_count} words"
}

Example: Conditional Logic

level = input_data.get("battery_level", 100)
is_charging = input_data.get("is_charging", False)

if level < 20 and not is_charging:
    output = {
        "action": "alert",
        "message": f"Low battery: {level}%"
    }
else:
    output = {
        "action": "none"
    }

Example: API Response Formatting

# Parse response (json is available without importing)
data = input_data.get("data", {})
items = data.get("items", [])

# Format for output
formatted = []
for item in items:
    formatted.append({
        "name": item.get("name"),
        "price": f"${item.get('price', 0):.2f}"
    })

output = {
    "count": len(formatted),
    "items": formatted
}

Available Libraries

The Python executor pre-injects a fixed set of names into the namespace:
  • math - Mathematical functions
  • json - JSON parsing
  • datetime, timedelta - Date/time handling
  • re - Regular expressions
  • random - Random number generation
  • Counter, defaultdict - Collections helpers
Reference them directly (for example math.sqrt(4)). import statements are not available in the sandbox; for other modules use the Process Manager node instead.
Code runs in a sandboxed environment. File system and network access are restricted.

Combining Schedulers

Schedule with Delay

[Cron (hourly)] --> [HTTP Request] --> [Timer (5s)] --> [HTTP Request #2]

Multiple Schedules

Deploy workflows with different schedules:
Workflow 1: [Cron (frequency: days)]  --> [Daily Report]
Workflow 2: [Cron (frequency: hours)] --> [Hourly Check]
Workflow 3: [Webhook]                 --> [On-Demand Action]

Workflow States

After deployment, trigger nodes show their state:
StateColorDescription
IdleDefaultWaiting for next trigger
WaitingCyanActively waiting for event
RunningPurpleWorkflow executing

Tips

The Cron Scheduler uses a frequency dropdown — pick minutes/hours/days/weeks/months/once and fill in the matching interval or time-of-day field. No raw cron expression is needed.
Use Python Executor for conditional logic instead of multiple workflow branches.
Add Timer nodes when calling rate-limited APIs repeatedly.
Cron schedules are in UTC by default. Set timezone if needed.

Troubleshooting

  • Verify workflow is deployed (not just saved)
  • Check that the frequency and its interval/time fields are set
  • Ensure timezone is correct
  • Check server logs for errors
  • Check for syntax errors
  • Verify input_data has expected fields
  • Use try/except for error handling
  • Print debug info with print() (shows in logs)
  • Ensure the duration is at least 1 (max 86400)
  • Check the unit (seconds vs minutes vs hours)
  • Verify node is connected properly

Webhooks

Trigger workflows via HTTP

WhatsApp

Message-triggered workflows