Skip to main content
Paid Feature - Cron triggers are available on the Hobby and Pro plans. View pricing
The cron trigger enables scheduled flow execution using cron expressions. Flows with cron triggers run automatically at the times you specify, powered by Upstash QStash schedules.

Configuration

{
  "trigger": {
    "type": "cron",
    "config": {
      "schedule": "0 9 * * *",
      "timezone": "America/New_York"
    }
  }
}

Config Fields

FieldTypeRequiredDefaultDescription
schedulestringYes-Cron expression (e.g., 0 9 * * * for 9 AM daily)
timezonestringNo"UTC"IANA timezone (e.g., America/New_York, Europe/London)

Cron Expression Format

Cron expressions define when your flow runs using five fields:
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, Sunday=0)
│ │ │ │ │
* * * * *

Special Characters

CharacterDescriptionExample
*Any value* * * * * (every minute)
,List of values0,30 * * * * (at minute 0 and 30)
-Range of values0-5 * * * * (minutes 0 through 5)
/Step values*/15 * * * * (every 15 minutes)
Use crontab.guru to build and validate your cron expressions interactively.

Common Schedule Examples

ExpressionDescription
0 9 * * *Every day at 9:00 AM
0 */2 * * *Every 2 hours
30 8 * * 1-5Weekdays at 8:30 AM
0 0 1 * *First day of each month at midnight
*/15 * * * *Every 15 minutes
0 0 * * 0Every Sunday at midnight
0 6,18 * * *At 6:00 AM and 6:00 PM
0 0 * * 1Every Monday at midnight

Timezones

By default, schedules run in UTC. Specify a timezone to run at local time:
{
  "trigger": {
    "type": "cron",
    "config": {
      "schedule": "0 9 * * *",
      "timezone": "America/New_York"
    }
  }
}

Common Timezones

TimezoneRegion
UTCCoordinated Universal Time
America/New_YorkUS Eastern
America/Los_AngelesUS Pacific
America/ChicagoUS Central
Europe/LondonUK
Europe/ParisCentral Europe
Asia/TokyoJapan
Asia/ShanghaiChina
Australia/SydneyAustralia Eastern
Africa/LagosWest Africa
Use IANA timezone names for accurate scheduling.

Runtime Context

When your scheduled flow executes, the context includes schedule information:
{
  "trigger": {
    "type": "cron",
    "flow_id": "flow-uuid",
    "schedule": "0 9 * * *",
    "timezone": "America/New_York"
  }
}

Context References

ReferenceDescription
{{trigger.type}}Trigger type ("cron")
{{trigger.flow_id}}Flow ID
{{trigger.schedule}}Cron expression
{{trigger.timezone}}Configured timezone

Example: Log Cron Execution

Use a log node to track cron job executions:
{
  "id": "log_execution",
  "type": "log",
  "config": {
    "level": "info",
    "message": "Cron job executed successfully",
    "data": {
      "timestamp": "{{now:YYYY-MM-DDTHH:mm:ssZ}}",
      "random_number": "{{random:1:1000}}",
      "job_id": "{{uuid}}",
      "environment": "production"
    }
  }
}

Schedule Management

ActionEffect
Deploy flowCreates or updates the schedule
Disable flowPauses the schedule
Enable flowResumes the schedule
Delete flowRemoves the schedule

Complete Example

A daily report generator that runs every weekday at 9 AM Eastern:
{
  "name": "Daily Stats Report",
  "trigger": {
    "type": "cron",
    "config": {
      "schedule": "0 9 * * 1-5",
      "timezone": "America/New_York"
    }
  },
  "nodes": [
    {
      "id": "fetch_stats",
      "type": "http",
      "config": {
        "method": "GET",
        "url": "https://api.example.com/daily-stats",
        "headers": {
          "Authorization": "Bearer {{env.API_KEY}}"
        }
      }
    },
    {
      "id": "format_report",
      "type": "transform",
      "config": {
        "output": {
          "subject": "Daily Stats Report",
          "content": "Today's metrics:\n- Users: {{fetch_stats.output.body.users}}\n- Revenue: {{fetch_stats.output.body.revenue | currency:USD}}\n- Orders: {{fetch_stats.output.body.orders}}"
        }
      }
    },
    {
      "id": "send_email",
      "type": "http",
      "config": {
        "method": "POST",
        "url": "https://api.sendgrid.com/v3/mail/send",
        "headers": {
          "Authorization": "Bearer {{env.SENDGRID_KEY}}",
          "Content-Type": "application/json"
        },
        "body": {
          "personalizations": [{ "to": [{ "email": "[email protected]" }] }],
          "from": { "email": "[email protected]" },
          "subject": "{{format_report.output.subject}}",
          "content": [{ "type": "text/plain", "value": "{{format_report.output.content}}" }]
        }
      }
    },
    {
      "id": "respond",
      "type": "response",
      "config": {
        "status": 200,
        "body": {
          "success": true,
          "sent_to": "[email protected]"
        }
      }
    }
  ]
}

Use Cases

Daily Reports

Generate and send reports at a specific time each day:
  • Sales summaries
  • User activity reports
  • System health dashboards

Data Synchronization

Periodically sync data between services:
  • Import data from external APIs
  • Update cached aggregations
  • Sync inventory levels

Cleanup Jobs

Remove stale data on a schedule:
  • Delete expired sessions
  • Archive old records
  • Clear temporary files

Health Checks

Monitor external services at regular intervals:
  • Check API availability
  • Validate SSL certificates
  • Test database connections

Billing Cycles

Process recurring operations:
  • Generate invoices
  • Process subscription renewals
  • Send payment reminders

Notifications

Send scheduled notifications:
  • Weekly newsletters
  • Reminder emails
  • Digest summaries

Plan Availability

Cron triggers are available on Hobby and Pro plans.