Scheduled publishing and unpublishing
Set a publication window with dates and times, and how delivery, webhooks, and caching are timed.
Set a publish start and end time to deliver announcements and limited-time entries during the period you choose. Scheduled publishing is available on Free. You need the Editor role or higher to set and save it.
Schedule a publish start
- Open the content and enter the draft.
- In Settings, choose Scheduled as the publication status.
- Enter a date and time in "Publish from" under "Publication window".
- Select Save and confirm it finished saving.
Scheduled requires a start time. Entering a date and time doesn't save it, so finish by saving the entry.
Set an unpublish time
Enter a date and time in "Unpublish at (optional)" under "Publication window", then save. If you set both a start and an end, make the end later than the start.
You can also set an end time on a published entry. When the end time arrives, the entry leaves regular delivery: it's no longer in lists, and a single-entry request returns 404. The entry itself isn't deleted.
Check the time zone
Dates and times are entered and shown in the time zone from your account settings. For example, publishing at 9:00 on September 10 Japan time is 0:00 on September 10 in UTC. When you confirm with your team, share the time zone too.
Check your time zone in "Account settings" (/settings) from the avatar menu. See Account and authentication for how to set it.
What happens at the start and end
| What | Behavior |
|---|---|
| New requests to the delivery API | Decides whether to deliver from the request time and the publication window |
| Settling the status in the dashboard | A periodic job updates Scheduled to Published, and Published to Unpublished |
| Webhooks | entry.published / entry.unpublished are sent when the periodic job settles the change |
| Your site | Depends on your site's own fetching, caching, and rebuild settings |
The periodic job normally runs every 60 seconds. The delivery API doesn't wait for the job to update the status. It checks the start and end times itself. A webhook, on the other hand, isn't guaranteed to arrive at exactly the scheduled time.
Once a scheduled publish settles, publishedAt holds the start time you set, not the time the job ran. To see the time of an ordinary edit, use updatedAt.
Prepare your site to update too
A static site or a cached page doesn't update just because the API's state changes. Handle the start and end webhooks by triggering a rebuild or revalidation.
Even when the API stops returning an entry at the end time, content your site already cached doesn't necessarily disappear right away. If the display period matters, also check your site's cache expiry and what happens when an update fails.
Change or cancel a schedule
Before the start, change the date and time and save. To cancel the schedule, set the status to Draft and save. For an entry you want to publish again, also check that no past end time is left over.
If the page doesn't change after the time you set, first check the delivery API directly, to separate the API result from your site's cache. See Webhooks for how to check webhooks.
Publish period per language
For a multilingual API, choose a language in the editor, then save its status, start time, and end time. Each language's period is independent, and you can schedule and publish just an additional language while the main language stays a draft. The delivery API checks the publishing conditions of the language version you ask for. If an additional language isn't published, a regular fetch in that language returns 404 or leaves the entry out of a list. Only when you pass lang_fallback=true does it switch to the live main language.
The webhooks for a settled schedule and for an unpublish also report the language. Notifications for additional languages carry a top-level lang. If your site keeps a separate cache per language, revalidate the pages for that language.
Last updated: October 6, 2026