I run five scheduled GitHub Actions workflows in the same monorepo: content refresh (nightly), Bluesky queue post (daily), article publish (push-triggered but with schedule fallbacks), YouTube script generation (daily), and analytics polling (daily). After three months of running them, I have a short list of scheduling practices that reduce noise and make the timing predictable.
None of this is novel if you've run Actions workflows at scale. But I picked up each of these through direct pain, and I've seen enough repos that skip them that it's worth writing down.
Off-minute scheduling to avoid queue congestion
The GitHub Actions documentation doesn't mention this directly, but schedulers that fire at 0 * * * * or 0 0 * * * compete with every other workflow that picked the obvious top-of-hour slot. During high-contention windows — midnight UTC, Monday morning UTC — the queue can delay a workflow by 30 to 90 minutes, sometimes longer.
The fix is simple: pick a non-round minute. 37 7 * * * is a real cron entry in one of my workflows. The odd minute doesn't matter functionally — the workflow doesn't care whether it starts at 07:00 or 07:37 UTC. What matters is avoiding the cluster of workflows that fire at :00 and :30.






