Publishing and Scheduling
|
This content was generated with the assistance of AI and should be verified against the official Webflow documentation before being relied on in production. This sub-section’s Webflow bibliography lists the reference material consulted while preparing these pages. |
This page describes publishing as it was on 2026-10-28, the date on which its facts were checked against the official
Help Center, the Webflow updates pages and the Data API reference. Publishing a site to the webflow.io domain and to a
custom domain is available on every Site plan that allows a custom domain (Basic, CMS, Business and the Ecommerce tiers)
and, for the webflow.io domain alone, on the free Starter plan. Scheduled publishing of CMS items needs a Site plan that
includes the CMS (the plan tiers are named in Plans, Workspaces, Seats and Roles). Single-page publishing is a
Platform-plan feature whose tier is discussed in its own section, because the Help Center article and the announcement
word it differently. Plans are named by tier only, never by price. The Data API examples target the Data API v2, are
written for a Developer workspace site so that they can be run without a paid plan, and use placeholder tokens and
identifiers that you must replace.
The running example is Fernbrook Gardens, a fictitious botanical garden. Its team keeps a Plants Collection, a Garden zones Collection and an Events Collection (described in CMS Concepts and Content Modeling). Three people work on it: a designer who changes the layout, an editor who writes plant and event items, and a marketing manager who wants the spring-festival announcement to go live at exactly 08:00 on a Saturday while everybody is asleep. Every publishing question on this page is a question about one of those three people.
What publishing is
A Webflow site exists in two places at once. The Designer (and the Editor) show the staged site: the version being worked on, with unpublished design changes, unpublished CMS edits and draft items. The live site is a set of static assets (HTML, CSS, JavaScript and images) served from Webflow’s hosting infrastructure on one or more domains. Publishing is the operation that turns the staged site into the live one: Webflow renders every page, evaluates every Collection list against the published items, writes out the HTML, and pushes the result to the hosting layer.
Three consequences shape everything else in this page.
-
Publishing is a build step, not a save. Saving happens continuously in the Designer; visitors see nothing of it until a publish. This is why "I changed it but the site does not show it" is the most frequent publishing question.
-
Design and content publish on different clocks. A site publish sends the pages, the styles, the scripts and the settings. CMS items have their own state (draft, queued, scheduled, published) and a site publish treats them according to that state. Understanding the difference is the point of the sections on item states and on what a full publish does to drafts.
-
Publishing is per domain. A site can be published to its
webflow.iosubdomain, to each custom domain, or to several of them at once. The two kinds of destination play different roles, described next.
The people involved are the designer (who publishes the site), the content editor (who publishes items), the marketer (who schedules items) and the developer (who automates all three with the Data API).
Publish destinations: staging and custom domains
Every Webflow site gets a free subdomain of the form site-name.webflow.io the moment it is created. The Help Center
describes it as the site’s staging environment: it is publicly reachable, but it is meant for review and testing and
should not be what search engines index (the indexing options are in the site’s SEO settings, see
SEO and AEO). A custom domain such as
www.fernbrook-gardens.example is the production address; it is added in the Site settings, verified with the DNS
records Webflow shows, and made the default domain once it is working. Domain setup is covered in
Domains, Hosting and Publishing Options; this section
covers only what a publish does with the domains that already exist.
The publish menu
The Publish button in the Designer’s top bar opens a menu that lists the domains the site can be published to, each with a check box, and a Publish to selected domains button. Typical choices are:
| Selection | Effect | Typical use |
|---|---|---|
Only the |
The staged site replaces the live version on the subdomain only. Production visitors keep seeing the previous build. |
Review a design change with the client before it reaches visitors. |
Only the custom domain |
Production is updated, the subdomain keeps its previous build. |
Rare, because it leaves the staging site behind the production site. |
Both |
Both destinations get the same build in one operation. |
The normal release of a finished change. |
The Help Center article on publishing and unpublishing a site lists a few rules worth knowing before the first publish.
-
A custom domain must be added and verified before it appears in the menu. A domain added later, after a default domain was already chosen, may not appear in the menu until the default is set again under Site settings > Publishing.
-
Publishing needs a role that is allowed to publish. On the site plans the default site manager and designer roles can publish; on Workspace and Enterprise plans publishing is limited to site managers and members whose Can publish setting is on. Roles are explained in Plans, Workspaces, Seats and Roles.
-
The Editor publishes differently from the Designer: an editor publishing from the Editor updates the staging subdomain together with every custom domain, so an editor cannot choose a subset of domains.
-
A site that has never been published has no live version, so the first publish creates it. A site with only a
webflow.iodomain on the free plan can still be published; it simply has no production domain.
What the staging domain is for
Treat the webflow.io build as a dress rehearsal. It is generated by the same publish, from the same staged site,
with the same hosting stack, so what the reviewer sees there is what production will show. For Fernbrook Gardens the
usual flow is:
-
The designer finishes the new plant-catalogue layout in the Designer.
-
The designer publishes to
fernbrook.webflow.ioonly. -
The editor and the garden director review the staging site on a phone and a laptop, and leave comments (see Collaboration, Comments and Activity Log).
-
After approval the designer publishes to the custom domain as well.
Staging is not access-controlled by default. Anyone who knows or guesses the subdomain can open it, and it contains the draft-free published CMS content, not draft items. A site that must not be public before launch should use password protection on the staging build (see Password Protection and Site Search).
On Workspace plans that include page branching and a publishing workflow, a further layer exists above the staging-to-production step: changes made on a branch publish to a branch-specific staging URL, and a prepublish summary lists what a publish will release. That model is explained in Page Branching, Releases and Approvals. The rest of this page describes the plain model, which applies to every site.
What a publish contains
A full site publish regenerates and uploads:
-
every static page, with its settings (title, meta description, Open Graph tags, canonical, custom code);
-
every Collection template page for every published item of its Collection, and every Collection list result;
-
the compiled CSS for the whole site and the site-wide JavaScript, including the Webflow runtime (see HTML and CSS in Webflow);
-
the sitemap, the robots file and redirects (see Redirects and Site Migration);
-
the published CMS items, in their published state;
-
uploaded assets referenced by the published content.
What it does not do is publish a CMS item that is in draft, and it does not publish a scheduled item before its time. Those two exceptions are the subject of the next sections.
CMS item states
A CMS item is not simply "live or not". It has a status that tells you what a site publish will do with it. The Help Center article on saving and publishing Collection items and the Collection items overview describe the following statuses, which also appear in the status column of the Collections view in the Designer and the Editor.
| Status | Meaning | Does a full site publish release it? |
|---|---|---|
Draft |
The item has never been published, and it is saved as a draft. It does not exist on the live site. |
No. Drafts are skipped. |
Changes in draft |
The item is live, and a newer saved version with edits is waiting. Visitors see the previously published content. |
No. The live version stays as it was; the edits stay in draft. |
Queued to publish |
The item (including its draft changes) is queued to go live with the next full-site publish. Before the queue option was renamed, it was called Staged for publish. |
Yes. A queued item is released by the next full publish. |
Scheduled |
The item is set to go live automatically at a chosen date and time. |
No. A manual full publish does not release it and does not cancel the schedule. |
Published |
The item is live and has no pending edits. |
Yes, and it stays published. |
Archived |
The item is hidden from the live site but kept in the CMS, so that it can be restored. |
It is not part of the live site, and a publish keeps it off the site. |
Two points deserve emphasis.
-
The word "staged" was replaced by "queued". University lessons, forum threads and older tutorials, and the Data API’s own URL path (
staged-items), still say staged. In the Data API, "staged" items are the current working copy of the items, and "live" items are the published version. The Designer UI says Queued to publish. -
"Changes in draft" is an item that is both live and edited. This state exists so that a live plant page can be corrected without the correction going out half-finished. It is the state that most often explains "I edited the item, published the site, and nothing changed".
How the Data API expresses these states
The Data API does not have a status property. A Collection item carries these properties, and the Webflow UI derives its status from them:
| Property | Meaning |
|---|---|
|
|
|
|
|
The date and time of the item’s last publication, or |
|
The date and time of the last change to the working copy. |
|
The creation date of the item. |
The Create Live Items reference states that isDraft together with lastPublished determines the status shown in the
Webflow UI. A mapping that matches the Help Center table is:
isDraft / isArchived |
lastPublished |
Status shown |
|---|---|---|
|
|
Draft |
|
a date |
Changes in draft |
|
a date, up to date |
Published |
any / |
any |
Archived |
Queued and Scheduled are states of the workflow rather than of the item’s data; the Help Center describes them as options of the item’s publish menu. The Data API reference pages for items and for publishing document no property that creates a scheduled publication, which matters for automation (see the section on automating publishing).
Source: Data API: Create Live Items
The item state machine
The diagram shows the transitions described in the Help Center table and the Data API reference. Edits to a published item move it to Changes in draft; publishing from any live-capable state moves it to Published; archiving takes the item off the live site from any state; and unpublishing returns an item to Draft.
The "Delete" transition is a permanent removal; it is shown once, from Archived, for readability. The Scheduled to Draft path is described by the Help Center as unscheduling by saving the item as a draft or by queuing it.
Publishing individual items
A site publish is not the only way to make an item live. The item’s settings panel (in the Collections view of the Designer, in the Editor and in the Collections page of the dashboard) offers several publish actions. The Help Center article Save and publish Collection items lists them as follows.
| Action | What it does | Resulting status |
|---|---|---|
Save as draft |
Saves the edits without publishing them. A live item keeps its live version. |
Draft, or Changes in draft for a live item. |
Publish (also Save and publish) |
Publishes this one item, and only this item, to the live site now. The rest of the site, and every other item, is not touched. |
Published. |
Queue for next site publish |
Marks the item, with its draft changes, to go live with the next full site publish. |
Queued to publish. |
Schedule to publish later |
Opens a date and time picker and sets the item to publish automatically. |
Scheduled, then Published when the time arrives. |
Remove from queue |
Takes the item out of the publishing queue. |
Draft, or Changes in draft if the item was live. |
Publishing an item is the only way for a content editor to change live content without involving the designer, and it is the reason a site with an Editor seat does not need a site publish for every typo. Its limits are as important as its benefits.
-
It publishes the item, not the page layout. If the plant template page was redesigned since the last site publish, the single-item publish does not push the new layout. The item appears in the old layout until the designer publishes the site.
-
It publishes the item to the live site, including its template page URL. If the item is new, its
/plants/<slug>page exists after the item publish. Pages that list it (the home page’s featured strip, the catalogue list) show it too, because Collection lists are evaluated against the published items. -
Referenced items must be published too. A plant item that references a garden zone which was never published shows an empty reference on the live site until the zone is published. See Reference and Multi-Reference Fields.
-
It needs a role that may publish items. Editors can publish items when the site’s editor permissions allow it; the role matrix is in Plans, Workspaces, Seats and Roles.
-
Multiple domains. Since the 2024-12-17 changelog entry, a site that is published to several domains no longer needs those domains in sync to publish a single item. Earlier, the single-item publish ended with a
409when the domains had last been published at different times.
The Fernbrook Gardens editor’s routine
The editor writes the entry for the Japanese maple plant:
-
Creates the item in the Plants Collection; it starts as Draft.
-
Fills the fields, uploads the photograph, picks the Woodland garden zone, and saves as a draft after each work session. Nothing is visible to visitors.
-
Chooses Publish. The item turns Published and
/plants/japanese-mapleexists on the production domain and on thewebflow.iosubdomain, within seconds. -
Next week corrects the bloom month and saves. The status becomes Changes in draft; visitors still see the old bloom month.
-
Reviews the correction with the botanist and chooses Publish again. The status returns to Published.
Because no site publish was needed, the designer’s half-finished layout experiments, which are staged but not live, did not go out with the typo fix.
Queue for next site publish
Queue for next site publish is for content that must go out together with a design change. The botanical garden renames the family field on the plant template and also rewrites 40 plant descriptions to match. The editor queues the descriptions, the designer publishes the site, and the new layout and the new content go live in the same publish, so visitors never see the old layout with the new text.
The Help Center states that, when a manual site-wide publish is triggered, only the items that are queued or not explicitly scheduled are published, which is why the queue exists: it makes the intention explicit.
Scheduled publishing
Scheduled publishing lets an editor or marketer choose a date and time for a Collection item to go live without being at a keyboard. It launched on 2020-05-05 as a beta for the Designer and Editor Collections manager on the hosted-CMS, Business and Ecommerce plans of that time, and it is documented as a regular feature in the Help Center article Scheduled publishing. The Webflow University lesson on the same feature still carries the older plan names and the older Staged for publish wording; the University pages state that content is being updated for the new UI.
How to schedule an item
-
Open the item in the Collections view of the Designer, in the Editor, or in the dashboard.
-
Complete the content and make sure the item is not in a state that the schedule would conflict with.
-
Open the publish menu and choose Schedule to publish later.
-
Pick the date and time in the picker.
-
Confirm. The item’s status becomes Scheduled.
At the chosen time Webflow publishes the item and the status becomes Published. If an item needs a changed time, the Help Center describes Save and reschedule for an item that is scheduled but not yet live.
The rules
The Help Center article and the Webflow updates entry give these rules. They are the ones that explain almost every surprise.
| Rule | Detail |
|---|---|
Time zone |
The picker is read in the site’s configured time zone (Site settings > General), not in the time zone of the person scheduling and not in the visitor’s. A marketer in another country must convert. |
Only new content is scheduled |
Scheduling is offered for items that have not been published yet. A live item with changes (the Changes in draft state) cannot have its edits scheduled; the edits are published now, queued for the next site publish, or kept in draft. |
Manual publish does not interfere |
A manual site-wide publish neither releases a scheduled item early nor cancels it. The scheduled item stays scheduled until its time. |
Unscheduling |
A scheduled item is unscheduled by saving it as a draft or by queuing it for the next publish. The Help Center lists both as the ways to cancel. |
Archiving |
Archiving a scheduled item cancels the scheduled publication. The item moves to Archived and stays there until restored. |
Plans |
Scheduled publishing needs a plan that includes the CMS. It is not available on the Starter and Basic Site plans, which do not include the CMS (or, on Starter, include a very small number of items). |
Scope |
The rule describes Collection items. Pages and design changes are published by site publish and cannot be scheduled with this feature. |
Granularity |
One date and time per item. Scheduling a group of items for the same minute means scheduling each item. |
Because the schedule is per item, a launch made of one new event, three new plants and a changed home page cannot be scheduled as a unit. The page changes are a site publish, which cannot be scheduled natively; the typical pattern is to publish the site shortly before the scheduled items are due, so that the layout is ready when the items appear.
Scheduled publishing and the layout
The scheduled item publishes as an item: when the time arrives, the item and the pages that depend on it become live, and Collection lists that include it render it. If the Events template page was redesigned and the designer has not published the site yet, the scheduled item is shown in the old layout, exactly as a single-item publish would. The Fernbrook rule is therefore: publish the site no later than the evening before a scheduled launch.
What scheduling does not do
-
It does not unpublish at a given time. There is no native expiry or "unpublish at" option for items. Event items that must disappear after the event are handled with an Conditional Visibility rule on the event date or with a Collection list filter, or with a site-owned automation that archives the item.
-
It does not schedule a site publish, and it does not schedule edits to an item that is already live.
-
It does not notify anyone. Use a webhook (see Webhooks) to be told when an item published.
The Help Center page does not mention a native "Schedule an unpublish" option. Third-party tools that fill that gap exist in the Webflow Marketplace; they use the Data API calls shown later on this page.
Beta history and old tutorials
During the beta, in May 2020, some sites saw every existing item switch to Staged for publish after the feature was released, which Webflow fixed shortly afterwards. Tutorials from that period describe the schedule button as living under an arrow next to a Generate button, a layout that no longer exists. The current UI has the Schedule to publish later entry in the item’s publish menu.
What a full publish does to drafts
The question the designer asks most is: If I publish the site now, what happens to the items the editor is still working on? The answer depends on the item’s state.
| Item state when the site is published | Result |
|---|---|
Draft (never published) |
Remains draft. It is not published and has no URL on the live site. This is the guarantee that makes drafts safe. |
Changes in draft (live item with pending edits) |
The live version stays live, and the edits stay in draft. The item does not change on the live site. The changelog
entry of 2024-12-17 states that a live item whose |
Queued to publish |
Released. The queue exists to be consumed by the next full publish. |
Scheduled |
Not released and not cancelled; stays scheduled for its time. |
Published |
Re-rendered with the site. If the template page changed, the published item appears in the new layout. |
Archived |
Stays off the live site. Archived items are neither listed nor reachable at their URL. |
The behaviour of Changes in draft is the one that was reworked most recently. Before the draft and publishing
improvements, a site publish could push every changed item live together with the layout; the improvement entry on the
Webflow updates page states that the aim was to make draft changes stay in draft until the editor chooses to publish
them. The Data API’s behaviour changed in step: items created through the API now default to isDraft: true, and
removing an item from the live site requires an explicit unpublish call (see the section on the Data API).
Consequences for teamwork
-
The designer can publish the site at any time without fear that unfinished content goes live. Content is protected by its draft state.
-
The editor must remember that saving does not publish. Every correction to a live item needs a deliberate Publish or Queue, otherwise the site silently shows the old text.
-
The marketer who schedules must use new items; a correction to an already-live item cannot be scheduled and needs a person at the keyboard at the right time, or an automation.
Single-page publishing
A normal site publish rebuilds and uploads the entire site. On a large site that is slow, and it releases every pending design change, including the ones the designer did not want to go out. Single-page publishing publishes one page by itself.
Availability and rules
The Help Center article Publish a single page gives these rules, checked on 2026-10-28.
-
The feature belongs to the Team and Enterprise Platform plans. The Webflow announcement of the feature, and a Webflow University video, describe it as an Enterprise capability; read the Help Center article, which is the reference page, and check the plan page of the Workspace before relying on it.
-
The site must already have been published once with a full site publish.
-
The person publishing needs a role with the Can publish permission; on sites with page-level access restrictions, only pages the person can edit may be published.
-
In the publish modal the choices are This page (or This CMS template for a Collection template page) next to the usual domain check boxes.
-
Single-page publishing works with the staging flow: pages published individually go to the
webflow.iostaging domain first, and Publish to production releases all changes currently in staging, not only the one page.
What a page publish contains
The Data API changelog entry of 2026-04-08 describes what an API single-page publish includes.
-
the HTML, JSON and CSS of the selected page;
-
all locales of that page (see Localization);
-
the page-specific JavaScript;
-
an updated static manifest and sitemap that include the page;
-
an updated
manifest.jsonfor detail pages (Collection templates).
The same entry states that changes to global resources since the last publish do not reach the page: the page keeps showing the version of the global resources that was in the Designer when the page was last published. For a designer this is the most important sentence on the topic. If you changed a shared symbol, a global class, a variable or the navigation component, publishing one page does not update the other pages, and the single page does not receive the global change either.
When to use it
| Situation | Choice |
|---|---|
Fix a typo on the Visit page |
Single-page publish: the rest of the site is untouched. |
Release a redesigned page without the unrelated changes of other designers |
Single-page publish to staging, review, then production. |
Roll out a new global class, variable or component |
Full site publish, because a single page does not receive global resources. |
Publish a newly created Collection item |
Item publish, which is cheaper and available on every plan with a CMS. |
Page-level approvals and branching, which control who may release a page, are covered in Page Branching, Releases and Approvals.
Unpublishing
Unpublishing removes content from the live site without destroying it. It exists at three scales.
| Scale | How | Result |
|---|---|---|
Site (one domain) |
Click Publish, then Unpublish next to the domain in the publish menu (or in Site settings). |
The site stops being served on that domain. The staged site and the CMS are untouched, so republishing restores it.
Unpublishing the |
Page |
Delete the page in the Designer and publish the site. |
The page is absent from the next publish, so a page that was live disappears after that publish. |
CMS item |
Unpublish in the item menu, or archive the item. |
The item is removed from the live site and returns to Draft (unpublish) or Archived (archive). |
The site-level operation is documented in the Help Center article on publishing and unpublishing a site. Two practical notes follow from it.
-
Unpublishing a domain does not change its DNS records; the domain stays connected to the site, and publishing again brings it back.
-
After unpublishing, search engines will eventually drop the pages. If the site is moving rather than closing, use redirects instead of unpublishing; see Redirects and Site Migration.
Unpublish versus archive
For an item the two verbs are easy to confuse.
-
Unpublish returns the item to Draft: it is no longer live, it is still an active working item, and a later Publish or Queue makes it live again. A site publish does not republish it, because drafts are skipped.
-
Archive removes the item from the live site and from lists, and tucks it away in the Archived view. It is restored into Draft. Archiving also cancels a scheduled publication.
For Fernbrook Gardens, an expired event is archived so that it stays available for reuse (events repeat annually), and an item pulled for a factual error is unpublished so that it can be corrected and republished.
Automating publishing with the Data API
Everything above can be done by a program. The Data API v2 (see Data API: CMS and Data API: Sites, Pages and Components) offers a site-level publish endpoint and item-level endpoints. All examples use a placeholder bearer token and placeholder identifiers.
| Endpoint | Scope | Purpose |
|---|---|---|
|
|
Publish the site, or one page, to the chosen domains. |
|
|
Publish staged items. |
|
|
Create items directly on the live site. |
|
|
Unpublish up to 100 live items. |
Authentication and scopes are described in Data API Authentication and Scopes. Limits and error handling are in Data API SDKs, Limits and Errors.
Publish a site
The endpoint publishes a site, or a single page, to one or more domains. The body must contain at least one of
customDomains (an array of custom domain IDs obtained from the Get Custom Domains endpoint) or
publishToWebflowSubdomain (a boolean that defaults to false). An optional pageId restricts the publish to one
page. The call is queued: it answers 202 Accepted and the publish happens asynchronously.
# Publish Fernbrook Gardens to the staging subdomain only
curl -X POST "https://api.webflow.com/v2/sites/SITE_ID_PLACEHOLDER/publish" \
-H "Authorization: Bearer YOUR_API_TOKEN_PLACEHOLDER" \
-H "Content-Type: application/json" \
-d '{ "publishToWebflowSubdomain": true }'
Source: Data API: Publish Site
Publish to production and staging together:
curl -X POST "https://api.webflow.com/v2/sites/SITE_ID_PLACEHOLDER/publish" \
-H "Authorization: Bearer YOUR_API_TOKEN_PLACEHOLDER" \
-H "Content-Type: application/json" \
-d '{
"customDomains": ["CUSTOM_DOMAIN_ID_PLACEHOLDER"],
"publishToWebflowSubdomain": true
}'
The response body repeats the destinations and says what was published.
{
"customDomains": [
{
"id": "CUSTOM_DOMAIN_ID_PLACEHOLDER",
"url": "www.fernbrook-gardens.example",
"lastPublished": "2026-10-28T08:00:00.000Z"
}
],
"publishToWebflowSubdomain": true,
"publishScope": "site"
}
Source: Data API: Publish Site
Notes that apply to every call of this endpoint:
-
Rate limit. The endpoint allows one successful publish queue per minute, in addition to the access token’s general rate limit. A deployment script that publishes in a loop receives
429responses and must wait. -
Scope. The token needs
sites:write. A token limited tocms:writecannot publish the site. -
Asynchronous. A
202means the publish was accepted, not finished. To know when it finished, subscribe to the Site Publish webhook (see Webhooks), whose payload includespublishScopeand, for a page publish,pageId. -
Empty body. A body without
customDomainsand withoutpublishToWebflowSubdomainis rejected as invalid.
Publish a single page with the API
The pageId parameter, added to this endpoint on 2026-04-08, publishes one page instead of the site.
curl -X POST "https://api.webflow.com/v2/sites/SITE_ID_PLACEHOLDER/publish" \
-H "Authorization: Bearer YOUR_API_TOKEN_PLACEHOLDER" \
-H "Content-Type: application/json" \
-d '{
"publishToWebflowSubdomain": true,
"pageId": "VISIT_PAGE_ID_PLACEHOLDER"
}'
The response has publishScope set to page. The Data API reference notes that if several individual pages are
published to staging, publishing from staging to production releases all staged changes.
Publish items
POST /v2/collections/{collection_id}/items/publish publishes staged items. The body has one of two shapes: itemIds,
a list of IDs published in the primary locale, or items, a list of objects each with an id and optional
cmsLocaleIds naming the locales to publish. The success status is 202, and the response holds publishedItemIds
and an errors list, so that a request with several IDs can succeed partly.
curl -X POST "https://api.webflow.com/v2/collections/PLANTS_COLLECTION_ID_PLACEHOLDER/items/publish" \
-H "Authorization: Bearer YOUR_API_TOKEN_PLACEHOLDER" \
-H "Content-Type: application/json" \
-d '{
"itemIds": [
"JAPANESE_MAPLE_ITEM_ID_PLACEHOLDER",
"FOXGLOVE_ITEM_ID_PLACEHOLDER"
]
}'
A partly successful answer looks like this.
{
"publishedItemIds": ["JAPANESE_MAPLE_ITEM_ID_PLACEHOLDER"],
"errors": ["Staging item ID FOXGLOVE_ITEM_ID_PLACEHOLDER not found."]
}
Rules from the reference page:
-
Publishing a draft item sets
isDrafttofalseautomatically. There is no need to update the draft flag first. -
Publishing in specific locales uses the
itemsform withcmsLocaleIds. -
A call with several IDs reports per-item problems in
errorsinstead of failing as a whole; always readerrors. -
The reference lists
400,401,404,409,429and500responses. The409described the case of a site published to multiple domains at different times; the 2024-12-17 changelog entry says that condition no longer blocks single-item publishing. -
The reference gives no numeric item limit per request for this endpoint, although the error vocabulary includes
batch_too_large; a defensive client sends batches of at most 100 identifiers, the limit the neighbouring unpublish endpoint documents.
The same endpoint exists in JavaScript through the official SDK, which handles authentication and retries.
import { WebflowClient } from "webflow-api";
const webflow = new WebflowClient({ accessToken: process.env.WEBFLOW_TOKEN });
// Publish the two plants the editor approved
const result = await webflow.collections.items.publishItem("PLANTS_COLLECTION_ID_PLACEHOLDER", {
itemIds: ["JAPANESE_MAPLE_ITEM_ID_PLACEHOLDER", "FOXGLOVE_ITEM_ID_PLACEHOLDER"],
});
console.log(result.publishedItemIds, result.errors);
Create and publish in one call
The live items endpoints write directly to the live site. POST /v2/collections/{collection_id}/items/live creates
items and publishes them immediately; the response is 202. The body is either one item (fieldData at the top level)
or many (items), and each item takes isDraft (default false), isArchived (default false) and, optionally,
cmsLocaleId. Sending both fieldData and items returns 400.
curl -X POST "https://api.webflow.com/v2/collections/EVENTS_COLLECTION_ID_PLACEHOLDER/items/live" \
-H "Authorization: Bearer YOUR_API_TOKEN_PLACEHOLDER" \
-H "Content-Type: application/json" \
-d '{
"isArchived": false,
"isDraft": false,
"fieldData": {
"name": "Spring Festival opening walk",
"slug": "spring-festival-opening-walk",
"event-date": "2027-03-20T08:00:00.000Z"
}
}'
To create items in several locales, the reference recommends Create Items followed by Publish Collection Item(s), because
Create Items writes staged content only. The default of the staged Create Items endpoint changed on 2024-12-17: new
items are now created with isDraft set to true.
Unpublish items
DELETE /v2/collections/{collection_id}/items/live unpublishes up to 100 items and sets their isDraft property to
true. The body is a list of objects with the item id and optional cmsLocaleIds; without locale IDs, items are
unpublished only in the primary locale. The success status is 204 with no body.
curl -X DELETE "https://api.webflow.com/v2/collections/EVENTS_COLLECTION_ID_PLACEHOLDER/items/live" \
-H "Authorization: Bearer YOUR_API_TOKEN_PLACEHOLDER" \
-H "Content-Type: application/json" \
-d '{
"items": [
{ "id": "LAST_YEARS_WALK_ITEM_ID_PLACEHOLDER" }
]
}'
The reference text mentions a cmsLocaleId parameter in its description while its schema lists cmsLocaleIds for each
item; use the schema’s plural form, which is the one the examples show.
Automating a scheduled launch
Because the Data API has no documented property that schedules an item, a developer who wants a scheduled republish (or a scheduled unpublish) combines a trigger with these endpoints. A small Node script run by a scheduler such as a GitHub Actions cron job implements the Fernbrook marketing manager’s request: archive last year’s event at midnight and publish this year’s at 08:00.
import { WebflowClient } from "webflow-api";
const webflow = new WebflowClient({ accessToken: process.env.WEBFLOW_TOKEN });
const EVENTS = "EVENTS_COLLECTION_ID_PLACEHOLDER";
async function launchSpringFestival() {
// 1. Unpublish last year's walk (returns it to draft, 204 with no body)
await webflow.collections.items.deleteItemsLive(EVENTS, {
items: [{ id: "LAST_YEARS_WALK_ITEM_ID_PLACEHOLDER" }],
});
// 2. Publish this year's walk, which the editor prepared as a draft
const { publishedItemIds, errors } = await webflow.collections.items.publishItem(EVENTS, {
itemIds: ["THIS_YEARS_WALK_ITEM_ID_PLACEHOLDER"],
});
if (errors?.length) throw new Error(errors.join("; "));
return publishedItemIds;
}
launchSpringFestival().catch((e) => { console.error(e); process.exit(1); });
The script must run on a schedule you provide; Webflow does not run it. For items that were never published, the native Schedule to publish later option is simpler and needs no infrastructure. Use the script only for what the native feature cannot do: scheduled unpublish, scheduled republish of a live item, and scheduled site publishes.
Checking the state of an item
To report the state of every Fernbrook plant, list the items and derive the status from isDraft, isArchived and
lastPublished, as in the mapping table earlier.
const { items } = await webflow.collections.items.listItems("PLANTS_COLLECTION_ID_PLACEHOLDER", { limit: 100 });
function status(item: { isDraft?: boolean; isArchived?: boolean; lastPublished?: string | null }) {
if (item.isArchived) return "Archived";
if (!item.lastPublished) return "Draft";
return item.isDraft ? "Changes in draft" : "Published";
}
for (const item of items ?? []) console.log(item.fieldData?.name, "->", status(item));
Source: Data API: List Collection Items
The function cannot return Queued or Scheduled, because those states are not exposed by the item properties; treat the Designer’s status column as the authority for them.
Publishing checklists
Before a site publish
-
The designer has previewed the change on the canvas at every breakpoint (see Responsive Design and Breakpoints).
-
Custom code in the head and footer is intentional and tested (see Custom Code: Head, Footer and Embeds).
-
Redirects for renamed pages are in place.
-
The SEO settings of new pages are filled, and the staging site’s indexing setting is as intended.
-
Items that must not go out are in Draft; items that must go out together with the layout are Queued.
-
The right domains are checked in the publish menu.
Before scheduling an item
-
The item has never been published, so that it can be scheduled.
-
All referenced items are published, so that references render.
-
The site’s time zone is known, and the date and time were converted into it.
-
The template page layout has been published.
-
Somebody is assigned to check the live site after the scheduled time.
After a publish
-
Load the page on the staging domain, then on production, in a private window to avoid cached copies.
-
Check the Collection lists that should include the new items.
-
Check the activity log (see Collaboration, Comments and Activity Log) to see who published, and what.
Pitfalls
-
"I edited the item and published the site, but the live site shows the old text." The item is in Changes in draft. A site publish does not release it. Use Publish on the item, or Queue for next site publish and publish the site.
-
"I scheduled the item and then published the site, so the schedule is gone." It is not: a manual site publish does not cancel a schedule. If the item went live early it was not scheduled, it was queued.
-
"The scheduled item appeared at the wrong hour." The time was interpreted in the site’s time zone, not the scheduler’s. Check Site settings > General.
-
"The scheduled item shows an empty zone." The referenced garden zone was never published.
-
"The new template layout does not show for the scheduled item." The item published, but the site was not published after the layout changed.
-
"Single-page publish did not update the navigation." A page publish does not receive changes to global resources made since the last publish; use a full publish.
-
"The publish API returned 429 after a few seconds." The site publish endpoint allows one successful publish queue per minute; serialise publishes in the pipeline.
-
"Publishing an item through the API returned 202 and the site did not change." The call is asynchronous, and the
errorsarray may hold per-item failures. Read it, and wait for the webhook. -
"An item I created through the API is not live." The staged Create Items endpoint creates drafts by default since 2024-12-17; use the live endpoint or publish afterwards.
-
"I unpublished the custom domain and the staging site went down too." The two destinations are independent; confirm which row of the publish menu you clicked.
-
"The staging site appears in search results." It is public. Check the indexing settings and consider password protection.
-
Deleting instead of archiving. A deleted item cannot be restored, and its URL becomes a 404.
Security and privacy
-
Drafts are not private by obscurity. A draft item is not on the live site, but the Data API returns it to any token that can read the Collection. Keep tokens secret, scope them narrowly, and rotate them (see Data API Authentication and Scopes).
-
The staging domain is public. Anything published to
webflow.iocan be read by anyone with the address, including content about to be embargoed. Use password protection on staging for confidential launches. -
Least privilege for automation. A script that only publishes items needs
cms:write; a script that publishes the site needssites:write. Do not grant a token both unless the script does both. -
Audit. Site publishes and item publishes are recorded in the activity log; automations should log which items were published and by which token.
-
Never embed a token in a page or a repository. The examples use
YOUR_API_TOKEN_PLACEHOLDER; real tokens belong in a secret store.
Change dates
| Date | Change |
|---|---|
2020-05-05 |
Scheduled publishing for Collection items released in beta for the Designer and Editor, on the hosted-CMS, Business and Ecommerce plans of the time. |
2024-12-17 |
Data API: a live item with |
Undated on the page |
The Webflow updates page CMS draft and publishing improvements describes draft changes staying in draft until an editor publishes them, and the Help Center’s Queued to publish wording is used where older material says Staged for publish. |
2026-04-08 |
Data API: the Publish Site endpoint accepts |
Single-page publishing announcement |
Webflow announced single-page publishing on its updates page; the Help Center article Publish a single page is the reference for its rules. |
Where older books and tutorials differ
-
Terminology. Books and University lessons written before the new UI say Staged for publish where the Help Center says Queued to publish, and Generate or a calendar button where the current UI has Schedule to publish later.
-
Draft handling. Older text describes a site publish as pushing everything, including changed items. Today a live item with changes stays at its published version until the editor publishes it.
-
Scheduling. Tutorials sometimes show scheduling a change to an already-live item. The current rules schedule only items that have not been published yet.
-
Single pages. Books of the Designer-only era state that publishing is always all-or-nothing. Single-page publishing, and the API’s
pageId, change that. -
Item publish through the API. Material built on the v1 API uses a
PUTto/collections/:collection_id/items/publishwith anAccept-Versionheader. Use the v2POSTendpoint shown on this page; the v1 API is deprecated. -
Plans. Older text names the CMS, Business and Ecommerce plans; the current names are covered in Plans, Workspaces, Seats and Roles.
Summary
-
A site publish builds the staged site and sends it to the
webflow.iostaging domain, to custom domains, or to both. -
CMS items have their own state: Draft, Changes in draft, Queued to publish, Scheduled, Published and Archived.
-
A full site publish skips drafts, keeps the live version of items with changes in draft, releases queued items and leaves scheduled items alone.
-
Individual items publish on their own, which is how editors change live content without a site publish; the page layout is not part of an item publish.
-
Scheduled publishing sets a date and time, read in the site’s time zone, for items that have not been published yet; it cannot schedule an unpublish, a site publish or edits to a live item.
-
Single-page publishing releases one page to staging and production on the Platform plans that include it, and it does not carry global changes.
-
Unpublish a site per domain, unpublish an item to return it to draft, archive to hide it and keep it, delete only when it is obsolete.
-
The Data API offers Publish Site (one queue per minute, optional
pageId), Publish Items (itemIdsor per-localeitems), Create Live Items and Unpublish Live Items.