How to Schedule Workflows to Run Automatically
When to Use Scheduled Workflows
Scheduled workflows are the right choice when there is no discrete triggering event to react to, when you need to process data in batches for efficiency, or when the task needs to run at specific times regardless of whether new data exists.
Report generation and delivery. A workflow runs every Monday at 7 AM, queries the database for the previous week's sales figures, formats them into a summary, and emails the report to the leadership team. Nobody triggers this manually. It just shows up in their inbox every Monday.
Monitoring and alerting. A workflow runs every 5 minutes, checks whether your website is responding, measures response time, and sends an SMS alert if the site is down or slow. The check runs continuously on a timer because you need to detect problems before customers report them.
Batch data processing. A workflow runs every hour, queries all new customer signups from the past 60 minutes, enriches each record with data from an external API, updates the CRM, and adds them to the onboarding email sequence. Batch processing is more efficient than processing each signup individually when volumes are moderate and real-time is not required.
Data synchronization. A workflow runs every 15 minutes, checks for records that changed since the last sync, and pushes updates to connected systems. See How to Automate Data Sync Between Systems.
Maintenance tasks. A workflow runs daily at 2 AM, purges expired session data, archives old records, recalculates aggregate metrics, and runs database optimization queries. These tasks happen during low-traffic hours to minimize impact.
Choosing the Right Frequency
The interval between runs determines how quickly your workflow responds to changes and how much processing it does per execution. Shorter intervals mean faster response but more frequent runs. Longer intervals mean fewer runs but larger batches and more delay.
Guidelines by Use Case
- Every 1-5 minutes: Website and server monitoring, urgent alert checking, real-time dashboard updates. Only use minute-level intervals for workflows that need to detect problems quickly. Each execution should be lightweight, checking a single condition and exiting fast when nothing needs attention.
- Every 15-30 minutes: Data synchronization between systems, processing queued items, checking for stale records. Good balance between responsiveness and resource usage.
- Every hour: Batch processing of moderate-volume data (new signups, form submissions, transactions), hourly metric calculations, inventory level checks.
- Daily: Report generation, daily summaries, cleanup and archival tasks, daily analytics aggregation. Schedule for early morning (6-7 AM) if reports should be ready when people start work, or late night (1-3 AM) for maintenance tasks.
- Weekly: Weekly summary reports, weekly performance reviews, bulk data exports, A/B test result compilation. Schedule for Monday morning so reports cover the previous full week.
- Monthly: Invoice generation, monthly analytics reports, subscription renewal processing, compliance checks. Schedule for the 1st of the month or the last business day of the month.
Cost Considerations
Every scheduled execution consumes resources, even if it finds nothing to process. A workflow that runs every minute and checks a database costs 1,440 executions per day. If each execution uses 5 credits, that is 7,200 credits per day just for checking. Reduce unnecessary cost by:
- Adding an early exit condition: if the first step finds no new data, end the workflow immediately without running subsequent steps
- Using the longest interval that meets your responsiveness requirements
- Switching high-frequency workflows to event-based triggers (webhooks or database change triggers) when the source system supports them
Configuring a Schedule Trigger
In your workflow builder, add a schedule trigger and set the interval. Most platforms offer preset options (every 5 minutes, hourly, daily, weekly) and custom cron expressions for complex schedules. A cron expression like "0 9 * * 1" means "at 9:00 AM every Monday." If you need multiple schedules (daily on weekdays, different time on weekends), create separate trigger entries or use cron syntax.
Always specify the timezone explicitly. "Daily at 9 AM" is meaningless without knowing which 9 AM. If your team is in New York, set the timezone to America/New_York. If your customers span multiple timezones, consider which timezone makes the most sense for the task: a sales report should run in the sales team's timezone, while a maintenance task should run during the lowest-traffic timezone.
Scheduled workflows often need to know what happened in the previous execution. A data sync workflow needs to know the timestamp of the last sync so it only queries for records changed since then. A batch processing workflow needs to know which records were already processed.
Store the last execution's state in a database record or a workflow variable that persists between runs. At the start of each execution, read the last-run timestamp. At the end, update it to the current time. This prevents the workflow from reprocessing old data and ensures nothing is skipped between runs.
If a workflow takes 8 minutes to complete but runs every 5 minutes, the second execution starts while the first is still running. Both are now processing the same data, creating duplicates and conflicts.
Add a lock mechanism: at the start of the workflow, check a "running" flag in the database. If the flag is set, exit immediately. If not, set the flag, do the work, and clear the flag when done. This ensures only one execution runs at a time. If the workflow crashes and leaves the flag set, add a timeout (clear the flag automatically if it has been set for more than 30 minutes).
Alternatively, increase the interval so it always exceeds the maximum execution time. If the workflow typically takes 3 minutes but can take up to 10 minutes during peak data volume, set the interval to 15 minutes.
Common Scheduled Workflow Patterns
Morning Report Generator
Schedule: Daily at 7:00 AM. Actions: Query database for yesterday's key metrics (revenue, new signups, support tickets, active users). Calculate day-over-day and week-over-week changes. Format results into a clean email summary with comparisons to targets. Send to the leadership team distribution list. Log the report data to a history table for trend tracking.
Stale Lead Follow-Up
Schedule: Daily at 10:00 AM. Actions: Query CRM for leads with status "contacted" and last activity older than 3 days. For each stale lead, send a follow-up reminder to the assigned rep via Slack. If the lead has been stale for 7+ days, escalate to the sales manager. Update the lead's status to "follow-up needed." This prevents leads from falling through the cracks when reps get busy.
Subscription Renewal Processor
Schedule: Daily at 6:00 AM. Actions: Query for subscriptions expiring in the next 7 days. For each expiring subscription, check if auto-renewal is enabled. If yes, verify the payment method is valid. If the payment method is invalid, send a reminder to the customer. Generate renewal invoices for subscriptions expiring today. Process payments and update subscription status.
Content Publishing Queue
Schedule: Every 30 minutes. Actions: Check the content queue for items with a scheduled publish time in the past (publish time has arrived). For each ready item, publish it to the CMS, generate social media posts via AI, queue the social posts for delivery, and update the content status. This allows content creators to schedule posts days in advance, and the workflow handles the publishing automatically at the right time.
Inventory Level Monitor
Schedule: Every hour. Actions: Query inventory database for products below their reorder threshold. For each low-stock product, check if a reorder has already been placed. If not, generate a purchase order draft and notify the inventory manager. If stock is critically low (below emergency threshold), send an SMS alert immediately. Update the dashboard with current stock levels.