Content scheduling
Calendar view, the scheduled-publish cron, and how conflicts are resolved.
Last updated May 12, 2026
The calendar view
Content → Calendar shows every approved-but-unpublished item placed on a month grid. Drag items between days to reschedule; click any cell to add a new scheduled publish.
The view shows:
- Approved & scheduled — items with a target publish date.
- Approved & unscheduled — items waiting for a date.
- Published — historical, greyed out.
Scheduled items publish at the time you set in your workspace's timezone (or the global default if not set).
Scheduling a publish
From the editor, click Schedule (next to the Publish button). Pick:
- Date.
- Time. Defaults to your workspace's optimal-engagement time.
- Destination. Same picker as immediate publish.
- Repeats? Optional. Useful for recurring report posts.
The item shows on the calendar at the chosen slot. You can drag it later, edit it, or unschedule entirely.
The publish cron
The platform runs a one-minute cron that:
- Looks for items scheduled to publish in the next minute.
- Locks each item to prevent concurrent publishes.
- Runs the publish via the destination integration.
- Records success or failure on the item.
If a publish fails, the item flips to Scheduled — failed. The audit log captures the error. You can retry manually or fix the underlying issue and re-schedule.
Conflicts
Two kinds of conflict can arise:
- Destination slug collision. Two posts scheduled for the same destination with the same slug. The cron publishes the first, fails the second with "slug not unique." Resolution: edit one of the slugs.
- Same item scheduled twice. Possible only if you manually edit the schedule via the API. The lock prevents double-publish at the cron level, but the second schedule entry sits there forever. Clean up via Calendar → row menu → Remove from schedule.
Holds and freezes
You can freeze publishing for an entire workspace from Settings → Publishing → Freeze. When frozen:
- Scheduled items don't publish at their times.
- Failed items don't retry.
- The cron still runs but skips this workspace.
Useful for compliance holds, product launches, or end-of-year code freezes. Un-freeze restores normal scheduling. Anything that missed its slot moves to Manual review — you decide whether to publish or reschedule each one.
Timezone handling
Internally everything is UTC. The display is your workspace's timezone (set at Settings → Workspace → Timezone). If you change the timezone, scheduled items keep their UTC time and the display updates — they do not shift to "the same wall clock time in the new zone."
This matters when scheduling across daylight-saving transitions. Items scheduled for 09:00 the day before DST will publish at 09:00 wall clock the day of, NOT 08:00 or 10:00.
Workflow tip
A typical content team:
- Generates a week's drafts on Monday.
- Reviews and approves Tuesday.
- Spreads scheduled publishes across the week from the calendar view on Wednesday.
- Lets the cron handle the rest.
This decouples generation from publishing rhythm. The content team thinks in "weeks of work"; the calendar thinks in "this day's post."
API access
Domination tier exposes POST /v1/content/{id}/schedule and DELETE /v1/content/{id}/schedule. Useful for syncing the platform's calendar with an external editorial calendar tool. See API overview.
Audit log
Every schedule, reschedule, unschedule, and cron-fired publish logs to your audit log under content.scheduled.*. Filter that prefix to see the full publishing rhythm.
Was this article helpful?