A sync's schedule controls when it runs. You set it on the sync's Schedule tab, as the last step of configuration.
| Audience | Data teams configuring a sync |
| Prerequisites | A saved sync. |
To set a schedule, open the sync and go to its Schedule tab, then choose a Schedule type.

Schedule types
Choose the schedule type that matches how the sync should be triggered:
| Schedule type | Use when |
|---|---|
| Manual | You trigger each run yourself, or an orchestrator or the API does. Required for syncs in a sequence. |
| Interval | You want a recurring cadence and exact run times don't matter, such as every hour. |
| Custom recurrence | You need specific days and local times, such as Mondays at 9 AM. |
| Cron expression | You need a precise or complex schedule, written as cron and evaluated in UTC. |
| dbt Cloud | The sync should run after a dbt Cloud job finishes. |
| Fivetran | The sync should run after a Fivetran job finishes. |
Times you set in the UI run in your local timezone. Cron expressions are evaluated in UTC.
Manual runs
A Manual sync runs only when something triggers it. Click Run on the sync's page to start a run.

Choose Manual for any sync you trigger from outside Hightouch:
Interval schedules
Run the sync every n minutes, hours, days, or weeks.

An interval run starts approximately one interval after the previous run, so the start time can drift after a manual run or a background delay. If you need stable start times, use custom recurrence instead.
Custom recurrence schedules
Run the sync on specific days and times in your local timezone. Click Add recurrence to add each day and time.

The schedule above runs at midnight on weekdays and at 8 AM on weekends.
Set when a schedule starts and ends
For interval and custom recurrence schedules, you can set when the schedule takes effect (immediately or a future date and time) and when it stops (indefinitely or a future date and time).

Cron expression schedules
Schedule the sync with a cron expression when you need precise control. Use five fields, not six: the smallest interval Hightouch supports is one minute, not one second.
| Cron expression | Runs |
|---|---|
* * * * * | Every minute |
0 12 * * * | Every day at noon |
0 12 1 * * | The first day of every month at noon |
0 12 L * * | The last day of every month at noon |
0 12 * 12 1,2 | Every Monday and Tuesday at noon, in December only |
Use a cron expression generator to build an expression that fits your needs.
Hightouch doesn't support these non-standard cron characters: W, LW,
L-2, L-3, and #.
dbt Cloud
Run the sync when a dbt Cloud job finishes. See trigger a sync with dbt Cloud for setup. Scheduling with dbt Cloud requires a paid dbt plan.
Fivetran
Run the sync when a Fivetran job finishes. See trigger a sync with Fivetran for setup.
Verify the schedule
After you save, the sync's page shows its schedule and the next scheduled run. Confirm the next run time matches what you expect, remembering that UI times are local and cron is UTC. To confirm the sync itself works, click Run and check the result in the live debugger.
Tips and troubleshooting
Daylight Saving Time (DST)
Daylight Saving Time affects schedules differently depending on the schedule type:
- Cron expression schedules are evaluated in UTC, so the UTC run time stays fixed while the local wall-clock time shifts by one hour when DST starts or ends.
- Custom recurrence schedules run at the local time shown in the UI, so they follow the wall-clock time through DST changes.
For DST-sensitive schedules, choose one of these approaches:
- Define your SLA in UTC and keep the schedule fixed.
- Accept a one-hour local-time shift, and monitor the sync around DST transitions.
- For a strict local time year-round (for example, 7:00 AM local), use an external timezone-aware scheduler and trigger the sync with the REST API. Common options include Airflow, Dagster, Prefect, a cloud scheduler, or your own application scheduler.
Disabled syncs continue to run
If you disable a sync but it still has recent runs, check whether it belongs to a sequence. A sync's schedule and its sequences run independently, so a disabled sync still runs as part of a sequence. Set any sync you use in a sequence to the Manual schedule type.
A disabled sync also runs if you trigger it manually or an external service such as Airflow triggers it.