Scheduling
Scheduling determines when and how often a sync runs. SignalSmith supports interval-based schedules for regular cadences, cron expressions for precise timing, and manual-only mode for on-demand execution.
Schedule Types
Interval-Based
The simplest scheduling option. Choose a fixed interval, and SignalSmith runs the sync at that frequency.
| Interval | Use Case |
|---|---|
| Every 15 minutes | Real-time-ish activation (ad audiences, live dashboards) |
| Every 30 minutes | Near-real-time CRM updates |
| Every hour | Standard operational syncs |
| Every 6 hours | Regular enrichment updates |
| Every 12 hours | Twice-daily reporting syncs |
| Every 24 hours | Daily batch syncs |
How it works: After each sync run completes, SignalSmith schedules the next run at the current time plus the interval. If a run takes longer than the interval, the next run starts immediately after the previous one finishes (runs never overlap).
Cron-Based
For precise timing control, use a cron expression. Cron scheduling lets you specify exact times, days of the week, and days of the month.
Cron Syntax
┌───────────── minute (0-59)
│ ┌───────────── hour (0-23)
│ │ ┌───────────── day of month (1-31)
│ │ │ ┌───────────── month (1-12)
│ │ │ │ ┌───────────── day of week (0-6, 0 = Sunday)
│ │ │ │ │
* * * * *Common Cron Expressions
| Expression | Description |
|---|---|
0 * * * * | Every hour, on the hour |
*/15 * * * * | Every 15 minutes |
0 9 * * * | Daily at 9:00 AM |
0 9 * * 1-5 | Weekdays at 9:00 AM |
0 0 * * * | Daily at midnight |
0 9,17 * * * | Twice daily at 9 AM and 5 PM |
0 0 1 * * | First day of every month at midnight |
0 6 * * 1 | Every Monday at 6:00 AM |
30 8 * * 1-5 | Weekdays at 8:30 AM |
0 */4 * * * | Every 4 hours |
Cron Special Characters
| Character | Meaning | Example |
|---|---|---|
* | Every value | * * * * * = every minute |
, | List of values | 0 9,17 * * * = 9 AM and 5 PM |
- | Range of values | 0 9 * * 1-5 = Mon through Fri |
/ | Step values | */15 * * * * = every 15 min |
Timezone
All cron expressions are evaluated in the workspace’s configured timezone. The default timezone is UTC. To change the timezone:
- Go to Settings > Workspace
- Set the Timezone to your preferred timezone
- All cron schedules in the workspace will use this timezone
Manual Only
No automatic schedule is set. The sync only runs when you explicitly trigger it via the UI or API.
When to use manual mode:
- One-time data migrations
- Ad-hoc data pushes
- Testing and development
- Syncs that should only run in response to external events
Triggering a manual run:
In the UI:
- Navigate to the sync detail page
- Click Run Now
Via the API:
curl -X POST https://your-workspace.signalsmith.dev/api/v1/syncs/{sync_id}/trigger \
-H "Authorization: Bearer $API_TOKEN"Schedule Configuration
Using the UI
When creating or editing a sync, the schedule step presents:
- Schedule type — Choose between Interval, Cron, or Manual
- Interval selector — (If interval) Choose from predefined intervals
- Cron expression — (If cron) Enter a cron expression
- Preview — Shows the next 5 scheduled run times based on your configuration
Using the API
# Interval schedule
{
"schedule": {
"type": "interval",
"interval_minutes": 60
}
}
# Cron schedule
{
"schedule": {
"type": "cron",
"cron_expression": "0 9 * * 1-5"
}
}
# Manual only
{
"schedule": {
"type": "manual"
}
}Run Behavior
Concurrency
Sync runs for the same sync never overlap. If a scheduled run time arrives while the previous run is still executing, the new run is queued and starts immediately after the previous run completes.
Missed Runs
If a sync is paused and then resumed, missed scheduled runs are not retroactively executed. The sync resumes from the next upcoming scheduled time.
Run Duration
The total run duration depends on:
- Query execution time in the warehouse
- Number of records to process
- Destination API rate limits and latency
- Network conditions
For large syncs (100,000+ rows), consider scheduling during off-peak hours to avoid warehouse contention and destination API throttling.
Failure Handling
If a sync run fails:
- The failure is recorded in the run history
- The sync remains active — the next scheduled run proceeds as normal
- If multiple consecutive runs fail, SignalSmith sends an alert to workspace administrators
- After a configurable number of consecutive failures, the sync may be automatically paused
Best Practices
Choosing the Right Frequency
Consider these factors when setting a schedule:
| Factor | Recommendation |
|---|---|
| Data freshness needs | If users need real-time data, use 15-30 minute intervals. For daily reports, daily is sufficient. |
| Data volume | Larger datasets take longer to query and sync. Allow enough time between runs for completion. |
| Destination API limits | Some destinations have daily or hourly API rate limits. Space syncs to stay within limits. |
| Warehouse costs | Each sync run executes a query in your warehouse. More frequent syncs = more compute costs. |
| Business hours | If data is only used during business hours, schedule syncs to refresh before the workday starts. |
Staggering Syncs
If you have multiple syncs running against the same source, stagger their schedules to avoid overloading the warehouse:
# Instead of all at the top of the hour:
Sync A: 0 * * * * (every hour at :00)
Sync B: 0 * * * * (every hour at :00) ← concurrent load
Sync C: 0 * * * * (every hour at :00) ← concurrent load
# Stagger by 10 minutes:
Sync A: 0 * * * * (every hour at :00)
Sync B: 10 * * * * (every hour at :10)
Sync C: 20 * * * * (every hour at :20)Monitoring Schedule Health
Keep an eye on:
- Run duration trends — If runs are getting slower, the dataset may be growing and the query needs optimization
- Overlapping runs — If runs frequently overlap (next run queued because previous is still running), increase the interval or optimize the query
- Failure rates — A sudden increase in failures may indicate a destination API issue or credential expiration
Next Steps
- Create a sync with a schedule
- Monitor sync runs to track execution history
- Troubleshoot issues with scheduling and runs