By default every connected connector syncs every 30 minutes — a balance between freshness and respecting vendor rate limits. For active workspaces (a primary sales Slack, an executive Outlook) you may want faster cadence; for archive-flavored sources (a legacy SharePoint site you connected as a fallback) you may want slower.
## Where to set it
`/integrations/[id]` → Sync cadence row → pick a preset:
- **Default (30 min)** — the platform default. Use this unless you have a reason not to. - **5 min / 15 min / 30 min / 1 hour / 4 hours / 24 hours** — per-connector override. Lands on the audit chain via `external-connector.cadence-set` so a "who set this Slack to 5-min" question has an answer.
## Lower bound is 5 minutes for a reason
Slack's app-level rate limit on `conversations.history` is 50 calls/min/workspace; a chatty 50-channel workspace would exhaust that within seconds at sub-minute cadence. The 5-minute floor protects you from accidentally setting a cadence that gets your bot rate-limited (which would silently break sync).
## How the cron uses it
The recurring sync cron fires every 30 minutes globally. On each tick, it selects connected connectors where `now - lastSyncCompletedAt > cadence - 5 minutes`. So:
- 5-min cadence → cutoff is 0 minutes → syncs every tick the cron fires (i.e. every 30 min ceiling, but the connector is "due" every tick) - 30-min cadence → cutoff is 25 minutes → syncs roughly every cron tick (the original D225 default behavior) - 24h cadence → cutoff is 23h 55min → syncs once per day on the cron tick that crosses the threshold
## Manual sync still works
The Sync now button on `/integrations/[id]` ignores the cadence override and dispatches an immediate sync. Use it after configuration changes or when you want fresh content NOW.