Scheduling Flows
Run flows automatically on a timer whether daily syncs, hourly checks, weekly reports.
Scheduled flows run automatically at intervals you define. Use them for recurring jobs like data syncs, report generation, cleanup tasks, or periodic health checks that should happen without anyone triggering them manually.
Two ways to set up a schedule
Fastn gives you two paths to run flows on a timer. They achieve the same result but start from different places.
Option A: Create a flow with the On Schedule trigger
This is the most common approach. You build the flow and define the schedule as part of the flow itself.
Click Create → Flow → Start from Scratch.
Name your flow (e.g.,
daily_sync).Under Select a starting point, choose On Schedule.
Click Build.
The flow builder opens with a Trigger on Specific Schedule step on the canvas. Click this step to open its configuration panel on the right.

Option B: Create a schedule in the Triggers section
This approach registers the schedule first, then links it to an existing flow. It follows a two-step process: Register, then configure the Trigger.
Step 1 - Register the trigger
Click Triggers in the left sidebar.
Click the Schedules tab (the Triggers section has three tabs: Webhooks, Schedules, Apps).
Click + Add a Schedule (top-right corner).
Enter a Name for your schedule (e.g.,
daily_sync).Under Select an Event Model, select Json (default).
Click Register.

Step 2 — Configure the Trigger
After registering, you advance to the Trigger step where you configure the schedule interval and link the flow to trigger.

Use Option B when you already have a flow built and want to add a schedule to it afterward, or when you want to manage all your schedules from one place without opening each flow individually.
Which should I use? For most cases, Option A is simpler — you build the flow and its schedule together. Use Option B when you need to manage schedules separately from the flows (e.g., one flow triggered by multiple different schedules, or an ops team managing schedules without editing flow logic).
Configuring schedule intervals
When you click the Trigger on Specific Schedule step on the canvas, the right panel shows two scheduling modes under Trigger on: Date/Time and Interval. Pick whichever fits your use case.
Interval mode
Use this when you want a flow to repeat at a fixed frequency (e.g., every 60 minutes, every 24 hours).
The panel shows two fields:
Trigger on — a number input (e.g.,
60)Unit dropdown —
minutes(select the unit that matches your interval)
To run a flow every hour, set the value to 60 and the unit to minutes. To run every 15 minutes, set it to 15 minutes.

Date/Time mode
Use this when you want a flow to run at a specific time (e.g., every day at 6:00 AM, or on the 1st of every month).
The panel shows four dropdown fields:
Minutes
Any, 0–59
The minute of the hour the flow runs
Hours
Any, 0–23
The hour of the day the flow runs (24-hour format)
Day
Any, 1–31
The day of the month the flow runs
Month
Any, 1–12
The month the flow runs
"Any" means "every", it it acts as a wildcard. Setting all four to Any runs the flow every minute. Setting only Hours to 6 and leaving the rest as Any runs the flow at the start of every minute during the 6 AM hour, every day, every month.
Common examples:
Every day at 6:00 AM
0
6
Any
Any
Every day at 9:00 AM and 5:00 PM
Requires two schedules: one with Hours=9, one with Hours=17
First day of every month at midnight
0
0
1
Any
Every Monday at 9:00 AM
Not directly supported — use Interval mode or a webhook-based schedule
Note: The Date/Time mode does not have a "day of week" field. If you need to run a flow on specific weekdays (e.g., every Monday), use the Interval mode and set an appropriate minute interval, or create a webhook-based schedule with external cron tooling.
Additional schedule configuration
Both modes share additional configuration below the schedule settings:
Headers — optionally add custom headers that will be included when the schedule triggers the flow. Click + Add Header to define key-value pairs.
API Event Payload — optionally define a JSON payload that gets sent to the flow each time the schedule fires. This is useful when your flow expects input data. The default is
{}(empty).Save — click Save after configuring the schedule.
Managing schedules
Viewing active schedules
All active schedules are visible in one place:
Click Triggers in the left sidebar.
Click the Schedules tab.
This shows every schedule with its Name, Total runs, Processed, Failed, Missed, Last updated, and Trigger URL. Use the search box ("Find your Schedule") to filter if you have many.
Pausing a schedule
If you need to temporarily stop a flow from running without deleting the schedule, you can pause it from the Triggers → Schedules tab. The schedule stays configured but does not fire until you resume it.
Editing a schedule
To change the interval:
If you used Option A (On Schedule trigger): Open the flow, click the trigger step, change the interval in the right panel, click Save, then Deploy.
If you used Option B (Triggers → Schedules): Go to Triggers → Schedules, find the schedule, and edit it directly.
Important: After editing a schedule inside a flow, you must redeploy the flow. The schedule runs based on the deployed version, not the draft. If you change the interval but forget to deploy, the old interval keeps running.
Monitoring scheduled flows
Because scheduled flows run without user interaction, monitoring is essential.
Check execution logs
Click Logs in the left sidebar.
Search for your flow name (e.g.,
daily_record_sync) using the search box ("Search by flow name & tenant").Each execution shows: Flow Name, Request Time, Duration (s), HTTP Status Code, and tenantId.
Click View logs on any row to see the step-by-step execution details.
Look for:
HTTP Status Code 200 = successful execution.
Any non-200 code = something failed. Click into the logs to see which step broke.
Gaps in execution times = the schedule may have stopped. Check if the flow is still deployed and the schedule is active.
Set up failure notifications
Do not rely solely on checking logs manually. Add an alert step inside your flow so failures are visible immediately.
Recommended pattern: After your main logic, add a Switch step. If any upstream step failed, route to a Connector step that posts to Slack, sends an email, or writes to a monitoring tool.
Common issues
Scheduled flow is not running
Flow is not deployed, or schedule is paused
Check the flow's status on the Flows list — it must be Live (green dot). Check Triggers → Schedules to confirm the schedule is active, not paused.
Flow runs at the wrong time
Timezone mismatch
Verify which timezone the schedule uses. If you set Hours to 6, the platform may run it at 6:00 UTC, not your local time.
Flow runs but produces no output
External API returns no data at the scheduled time
Add a Logger step after the Connector to inspect what data is returned. The source app may have no new records since the last run.
Duplicate processing
No deduplication logic
Add a Database step that tracks the last-processed record ID or timestamp. On each run, only fetch records newer than the last checkpoint.
Schedule stopped after editing the flow
Flow not redeployed after changes
Click Deploy again. The schedule runs the last deployed version. If the status shows "Changes Pending", the schedule is still using the old version.
Too many executions consuming resources
Interval set too aggressively
Increase the interval. If you do not need data fresher than 1 hour, do not schedule every 15 minutes. Align the interval to your actual business need.
Flow partially completes then times out
Too many records to process in one run
Add pagination to your Connector query. Process a fixed batch per run (e.g., 100 records) and store a cursor in the Database for the next run to pick up where the last one left off.
Last updated
Was this helpful?

