For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
Resources
Get started
ReferenceChangelog
ReferenceChangelog
  • Webflow CLI
    • Authentication
    • Configuration
    • Command reference
    • Migrating to CLI 2.0
LogoLogo
Resources
Get started
On this page
  • Global Options
  • Authentication
  • auth login
  • auth status
  • auth logout
  • auth telemetry
  • Sites
  • sites list
  • sites get
  • sites domains
  • sites publish
  • CMS
  • cms collections list
  • cms collections get
  • cms collections create
  • cms fields create
  • cms items list
  • cms items get
  • cms items create
  • cms items update
  • cms items delete
  • cms items publish
  • Forms
  • forms list
  • forms submissions
  • Assets
  • assets list
  • assets upload
  • assets update
  • assets folders list
  • assets folders create
  • Code Components
  • devlink import
  • devlink bundle
  • Logging
  • log
  • Webflow Cloud
  • cloud create
  • cloud init
  • cloud list
  • cloud deploy
  • DevLink
  • devlink sync
  • devlink import
  • devlink bundle
  • devlink export
  • devlink sync
  • Designer Extensions
  • extension list
  • extension init
  • extension bundle
  • extension serve
Webflow CLI

Command Reference

Reference for all commands available in the Webflow CLI
Was this page helpful?
Previous

Migrating to CLI 2.0

Upgrade guide for apps using the Webflow CLI.
Next
Built with

Global Options

Global options can be used with any command.

OptionDescription
-v, --versionDisplay the installed version of the Webflow CLI.
-h, --helpDisplay help information for any command.
--no-inputDisable all interactive prompts. Use in CI/CD pipelines.
--manifest <path>Path to a webflow.json file or directory containing one. Defaults to ./webflow.json.
--skip-update-checkSkip checking for @webflow package updates.
--verboseDisplay more information for debugging purposes.

Authentication

auth login

Authenticates the CLI with your Webflow account and saves credentials to a .env file.

Usage

$webflow auth login [options]

Options

OptionDescription
-f, --forceForce reauthentication even if credentials already exist.

Example

$# Open browser OAuth flow to authenticate
$webflow auth login
$
$# Re-authenticate even if a token is already saved
$webflow auth login --force

For more details, see the authentication documentation.


auth status

Shows the currently authenticated user and active OAuth scopes.

Usage

$webflow auth status

Example

$webflow auth status
$# ✔ Logged in as Jane Smith (jane@example.com)
$# Scopes: assets:read, assets:write, cms:read, ...
$# Session: ~/.config/webflow/auth.json

auth logout

Removes the stored session and logs out of the CLI.

Usage

$webflow auth logout

Example

$webflow auth logout
$# ✔ Logged out. Session file removed.

auth telemetry

Manages telemetry settings for all Webflow CLI commands.

Usage

$webflow auth telemetry [options]

Options

OptionDescription
--enableEnable telemetry for all commands.
--disableDisable telemetry for all commands.
--statusShow current telemetry status.

Example

$# Check current telemetry status
$webflow auth telemetry --status
$
$# Disable telemetry (useful in CI/CD)
$webflow auth telemetry --disable
$
$# Enable telemetry
$webflow auth telemetry --enable

Sites

sites list

Lists all sites in your Webflow workspace.

Usage

$webflow sites list [options]

Options

OptionDescriptionDefault
--fields <fields>Comma-separated columns to display. Valid fields: id, displayName, shortName, timeZone, lastUpdated, lastPublished.id,displayName,lastPublished
--jsonOutput as JSON.false

Example

$webflow sites list
$webflow sites list --fields id,displayName,shortName --json

sites get

Gets details for a specific site.

Usage

$webflow sites get <siteId> [options]

Arguments

ArgumentDescription
siteIdThe ID of the site to retrieve.

Options

OptionDescription
--jsonOutput as JSON.

Example

$webflow sites get 6258612d1ee792848f805dcf

sites domains

Lists the custom domains configured for a site.

Usage

$webflow sites domains --site <siteId> [options]

Options

OptionDescription
--site <siteId>(Required) Site ID.
--jsonOutput as JSON.

Example

$webflow sites domains --site 6258612d1ee792848f805dcf

sites publish

Publishes a site to the Webflow subdomain or to specific custom domains.

Usage

$webflow sites publish --site <siteId> [options]

Options

OptionDescription
--site <siteId>(Required) Site ID to publish.
--domains <domainIds>Comma-separated custom domain IDs to publish to. Defaults to the Webflow subdomain.
--page <pageId>Publish a single page instead of the full site.
--dry-runPreview what would be published without triggering a build.
--jsonOutput as JSON.

Example

$# Publish to the Webflow subdomain
$webflow sites publish --site 6258612d1ee792848f805dcf
$
$# Publish a single page
$webflow sites publish --site 6258612d1ee792848f805dcf --page 5f43a0dfe6f3b800161c19b3
$
$# Preview without publishing
$webflow sites publish --site 6258612d1ee792848f805dcf --dry-run

CMS

cms collections list

Lists all CMS collections for a site.

Usage

$webflow cms collections list [options]

Options

OptionDescriptionDefault
--site <siteId>Site ID. Falls back to webflow.json or an interactive prompt.
--fields <fields>Comma-separated columns to display. Valid fields: id, displayName, singularName, slug, lastUpdated.id,displayName,slug
--sort-by <field>Sort by: displayName, slug, lastUpdated.displayName
--order <dir>Sort direction: asc or desc.asc
--jsonOutput as JSON.false

Example

$webflow cms collections list --site 6258612d1ee792848f805dcf --sort-by lastUpdated --order desc

cms collections get

Gets the details and field schema for a CMS collection.

Usage

$webflow cms collections get <collectionId> [options]

Arguments

ArgumentDescription
collectionIdThe ID of the collection to retrieve.

Options

OptionDescription
--jsonOutput as JSON.

Example

$webflow cms collections get 6258612d1ee792848f805dcf

cms collections create

Creates a new CMS collection on a site.

Usage

$webflow cms collections create --name <displayName> [options]

Options

OptionDescription
--site <siteId>Site ID. Falls back to webflow.json or an interactive prompt.
--name <displayName>(Required) Collection display name.
--singular-name <name>Singular display name. Defaults to --name.
--slug <slug>URL slug for the collection. Auto-derived from --name if omitted.
--dry-runPreview the collection that would be created without creating it.
--jsonOutput as JSON.

Example

$webflow cms collections create --site 6258612d1ee792848f805dcf --name "Blog Posts" --slug "blog-posts"
$
$# Preview without creating
$webflow cms collections create --site 6258612d1ee792848f805dcf --name "Blog Posts" --dry-run

cms fields create

Adds a field to a CMS collection.

Usage

$webflow cms fields create --collection <collectionId> --name <name> --type <type> [options]

Options

OptionDescription
--collection <collectionId>(Required) Collection ID to add the field to.
--name <displayName>(Required) Field display name.
--type <type>(Required) Field type. See valid types below.
--requiredMark the field as required.
--dry-runPreview the field that would be created without creating it.
--jsonOutput as JSON.

Valid field types

PlainText, RichText, Number, DateTime, Link, Image, Video, Color, Bool, Option, ItemRef, ItemRefSet

Example

$webflow cms fields create \
> --collection 6258612d1ee792848f805dcf \
> --name "Author" \
> --type PlainText \
> --required

cms items list

Lists items in a CMS collection.

Usage

$webflow cms items list --collection <collectionId> [options]

Options

OptionDescriptionDefault
--collection <collectionId>(Required) Collection ID.
--fields <fields>Comma-separated columns to display. Valid fields: id, isDraft, isArchived, lastUpdated, fieldData.id,isDraft,lastUpdated
--limit <n>Maximum number of items to return.100
--offset <n>Number of items to skip (for pagination).0
--locale <cmsLocaleId>CMS locale ID to filter by.
--jsonOutput as JSON.false

Example

$webflow cms items list --collection 6258612d1ee792848f805dcf --limit 50 --json

cms items get

Gets a single CMS item by ID.

Usage

$webflow cms items get --collection <collectionId> --item <itemId> [options]

Options

OptionDescription
--collection <collectionId>(Required) Collection ID.
--item <itemId>(Required) Item ID.
--locale <cmsLocaleId>CMS locale ID to retrieve content for.
--jsonOutput as JSON.

Example

$webflow cms items get \
> --collection 6258612d1ee792848f805dcf \
> --item 62b720ef280c7a7a3be8cabe

cms items create

Creates a new CMS item.

Usage

$webflow cms items create --collection <collectionId> --data <json> [options]

Options

OptionDescription
--collection <collectionId>(Required) Collection ID.
--data <json>(Required) Item field data as a JSON string.
--draftCreate as a draft (not published).
--dry-runPreview the item that would be created without creating it.
--jsonOutput as JSON.

Example

$webflow cms items create \
> --collection 6258612d1ee792848f805dcf \
> --data '{"name":"Hello World","slug":"hello-world"}'

cms items update

Updates an existing CMS item.

Usage

$webflow cms items update --collection <collectionId> --item <itemId> --data <json> [options]

Options

OptionDescription
--collection <collectionId>(Required) Collection ID.
--item <itemId>(Required) Item ID to update.
--data <json>(Required) Updated field data as a JSON string.
--dry-runPreview the update without applying it.
--jsonOutput as JSON.

Example

$webflow cms items update \
> --collection 6258612d1ee792848f805dcf \
> --item 62b720ef280c7a7a3be8cabe \
> --data '{"name":"Updated Title"}'

cms items delete

Deletes a CMS item.

Usage

$webflow cms items delete --collection <collectionId> --item <itemId> [options]

Options

OptionDescription
--collection <collectionId>(Required) Collection ID.
--item <itemId>(Required) Item ID to delete.
--dry-runPreview the deletion without deleting.

Example

$webflow cms items delete \
> --collection 6258612d1ee792848f805dcf \
> --item 62b720ef280c7a7a3be8cabe

cms items publish

Publishes one or more CMS items.

Usage

$webflow cms items publish --collection <collectionId> --items <itemIds> [options]

Options

OptionDescription
--collection <collectionId>(Required) Collection ID.
--items <itemIds>(Required) Comma-separated item IDs to publish.
--dry-runPreview which items would be published without publishing.
--jsonOutput as JSON.

Example

$webflow cms items publish \
> --collection 6258612d1ee792848f805dcf \
> --items 62b720ef280c7a7a3be8cabe,62b720ef280c7a7a3be8cabf

Forms

forms list

Lists all forms for a site.

Usage

$webflow forms list [options]

Options

OptionDescriptionDefault
--site <siteId>Site ID. Falls back to webflow.json or an interactive prompt.
--fields <fields>Comma-separated columns to display. Valid fields: id, displayName, name, slug, createdOn, lastUpdated.id,displayName,slug
--jsonOutput as JSON.false

Example

$webflow forms list --site 6258612d1ee792848f805dcf
$webflow forms list --site 6258612d1ee792848f805dcf --fields id,displayName,name,slug --json

forms submissions

Lists submissions for a specific form. Supports JSON output and CSV export.

Usage

$webflow forms submissions [options]

Options

OptionDescriptionDefault
--site <siteId>Site ID. Falls back to webflow.json or an interactive prompt.
--form <formId>Form ID.
--output <file>Export submissions to a CSV file at the given path.
--jsonOutput as JSON. Ignored if --output is also provided.false

Example

$webflow forms submissions --site 6258612d1ee792848f805dcf --form 62b720ef280c7a7a3be8cabe
$webflow forms submissions --site 6258612d1ee792848f805dcf --form 62b720ef280c7a7a3be8cabe --output submissions.csv
$webflow forms submissions --site 6258612d1ee792848f805dcf --form 62b720ef280c7a7a3be8cabe --json

Assets

assets list

Lists assets for a site, with optional filtering and sorting.

Usage

$webflow assets list [options]

Options

OptionDescriptionDefault
--site <siteId>Site ID. Falls back to webflow.json or an interactive prompt.
--folder <folderId>Filter assets to a specific folder.
--fields <fields>Comma-separated columns to display. Valid fields: id, displayName, originalFileName, contentType, size, lastUpdated.id,displayName,lastUpdated,size
--sort-by <field>Sort by: displayName, originalFileName, contentType, size, lastUpdated.displayName
--order <dir>Sort direction: asc or desc.asc
--limit <n>Maximum number of assets to return.100
--offset <n>Number of assets to skip (for pagination).0
--jsonOutput as JSON.false

Example

$webflow assets list --site 6258612d1ee792848f805dcf --sort-by size --order desc

assets upload

Uploads a file as a site asset.

Supported file types

  • Images (≤ 4 MB): PNG, JPG, JPEG, GIF, SVG, WEBP, AVIF
  • Documents (≤ 10 MB): PDF, DOC, DOCX, XLS, XLSX, PPT, PPTX, TXT, CSV, ODT, ODS, ODP, JSON, Lottie

Usage

$webflow assets upload <file> [options]

Arguments

ArgumentDescription
filePath to the file to upload.

Options

OptionDescription
--site <siteId>Site ID. Falls back to webflow.json or an interactive prompt.
--name <displayName>Display name for the asset. Defaults to the filename.
--folder <folderId>Upload into a specific folder.
--dry-runPreview the upload without uploading.
--jsonOutput as JSON.

Example

$webflow assets upload ./logo.png --site 6258612d1ee792848f805dcf --name "Company Logo"

assets update

Updates an asset’s metadata.

Usage

$webflow assets update <assetId> [options]

Arguments

ArgumentDescription
assetIdThe ID of the asset to update.

Options

OptionDescription
--display-name <name>New display name for the asset.
--alt-text <text>Alt text for the asset.
--dry-runPreview the update without applying it.
--jsonOutput as JSON.

Example

$webflow assets update 6258612d1ee792848f805dcf --display-name "New Logo" --alt-text "Company logo"

assets folders list

Lists asset folders for a site.

Usage

$webflow assets folders list [options]

Options

OptionDescription
-s, --site <site-id>Site ID. Default: value set in webflow.json config.
--jsonOutput as JSON.

Example

$webflow assets folders list --site 6258612d1ee792848f805dcf

assets folders create

Creates a new asset folder.

Usage

$webflow assets folders create [options] <name>

Arguments

ArgumentDescription
nameDisplay name for the folder.

Options

OptionDescription
-s, --site <site-id>Site ID. Default: value set in webflow.json config.
--parent <folderId>Parent folder ID (creates a nested folder).
--jsonOutput as JSON.

Example

$webflow assets folders create --site 6258612d1ee792848f805dcf "Marketing"

Code Components

devlink import

Bundles and shares components with a Webflow Workspace.

Usage

$webflow devlink import [options]

Options

OptionDescriptionDefault
--manifestPath to the webflow.json file.Scans the current directory.
--api-tokenWorkspace API token.Uses WEBFLOW_API_TOKEN from .env.
--no-inputDisables interactive prompts. Useful for CI/CD.false
-f, --forceForces bundling to complete, even with warnings.false
--debug-bundlerDisplays final bundler configuration for debugging.false
--devBundles in development mode.false

Example

$# Share the components and bypass any interactive prompts
$webflow devlink import --no-input

devlink bundle

Bundles components locally to a dist directory. This command doesn’t share the components to Webflow.

Usage

$webflow devlink bundle [options]

Options

OptionDescriptionDefault
--public-path <path>Overrides the public path for the bundle.
--output-path <path>Overrides the output path for the bundle../dist
-f, --forceForces bundling to complete, even with warnings.false
--debug-bundlerDisplays final bundler configuration for debugging.false
--devBundles in development mode.false

Example

$# Bundle the components and output to a 'build' folder
$webflow devlink bundle --output-path ./build

Logging

log

Displays the directory and path to the latest log file.

Usage

$webflow log

Webflow Cloud

cloud create

Deprecated

webflow cloud create is deprecated. Use webflow cloud init instead, which supports both site-attached and standalone apps and lets you choose the mount path interactively or via --mount.

Scaffolds a new site-attached Webflow Cloud project non-interactively. The project mounts at /app with no option to override the mount path.

Usage

$webflow cloud create <name> [options]

Arguments

ArgumentDescription
name(Required) Project name.

Options

OptionDescriptionDefault
-f, --framework <framework>Framework to use for the project.nextjs

Example

$webflow cloud create my-project -f nextjs

cloud init

Initializes a new Webflow Cloud app from a template.

Usage

$webflow cloud init [options]

Options

OptionDescription
-n, --project-nameApp display name. Required in non-interactive mode.
-f, --frameworkThe framework to initialize (e.g., astro, nextjs).
-m, --mountThe path to mount the app on. Defaults to /app for site-attached apps and / when used with --new.
-s, --site-idConnect to an existing site directly, skipping the site picker.
--newCreate an app without connecting to an existing site.
-w, --workspace-idTarget workspace explicitly, skipping the workspace picker.
--no-inputRun non-interactively for CI/CD. Requires --project-name and --framework. Without --new, defaults to site-attached behavior.

--site-id and --workspace-id are mutually exclusive

Use --site-id to connect to an existing site, or --workspace-id with --new to create a project app in a specific workspace. Passing both will error.

Example

$# Initialize a new Astro app mounted at /app on a specific site
$webflow cloud init -f astro -m /app -s 1234567890
$
$# Initialize non-interactively with an explicit app name
$webflow cloud init -f astro -m /app -s 1234567890 -n "My App" --no-input
$
$# Initialize a project app (no site) in a specific workspace
$webflow cloud init --new --no-input \
> --project-name my-app \
> --framework nextjs \
> --workspace-id ws_abc123

cloud list

Lists available app templates for cloud init.

Usage

$webflow cloud list

cloud deploy

Deploys your app to Webflow Cloud.

Usage

$webflow cloud deploy [options]

Options

OptionDescription
-e, --environmentTarget environment name.
-m, --mountTarget mount path (e.g., /app).
-n, --project-nameApp name when creating an app.
-p, --project-idDeploy to an existing Cloud app directly, skipping the app picker.
-d, --directoryDeploy from a specific subdirectory. Use this when your app lives in a subfolder of a monorepo.
--descriptionApp description when creating an app.
-s, --site-idForce site-attached deploy context, skipping the site picker.
-f, --frameworkOverride framework detection before deploy.
--skip-mount-path-checkSkip mount-path validation checks.
--auto-publishPublish the site after deployment.
-w, --workspace-idTarget workspace explicitly for project-app first deploys, skipping the workspace picker.
--no-inputRun non-interactively for CI/CD. Disables most prompts but not the project-select prompt — see the callout below.

--site-id and --workspace-id are mutually exclusive

Use --site-id to deploy site-attached, or --workspace-id to deploy a project app in a specific workspace. Passing both will error.

How deploy resolves which app to target

Before deploying, the CLI resolves the target app in this order:

  1. --site-id flag → site-attached deploy.
  2. --workspace-id flag → project-app deploy.
  3. siteId in webflow.json → site-attached deploy.
  4. cloud.workspace_id in webflow.json → project-app deploy.
  5. WEBFLOW_SITE_ID environment variable → site-attached deploy.
  6. Interactive picker → or hard-error when --no-input is set.
Configuration for CI/CD pipelines

For non-interactive deployments suitable for CI/CD pipelines, pass --no-input along with both --mount and --environment, plus an explicit target — either --site-id for site-attached deploys or --workspace-id for project apps. You can also use --auto-publish to publish the site after deployment so that your new environment is live.

$# Site-attached deploy
$webflow cloud deploy --no-input -s 1234567890 -e production -m /app --auto-publish
$
$# Project app deploy
$webflow cloud deploy --no-input -w ws_abc123 -e production -m /app
Avoid hangs in CI

The deploy prompts (select an existing project, name a new project, pick an environment) are gated on whether --mount and --environment are both set — not on --no-input. Passing --no-input without both flags still fires the prompt and hangs in non-TTY contexts. The minimum safe CI form is --no-input --mount <path> --environment <env> --site-id <id> (or --workspace-id <id> for a project-app first deploy).


DevLink

devlink sync

Deprecated

webflow devlink sync is deprecated. Use webflow devlink export instead.

Syncs Webflow components to your local filesystem. When run without arguments, all components are synced.

Usage

$webflow devlink sync [components...] [options]

Arguments

ArgumentDescription
componentsSpace-separated list of component names to sync. If omitted, all components are synced.

Options

OptionDescription
--api-token <token>API token, overriding WEBFLOW_API_TOKEN.
-s, --site <site-id>Site ID, overriding webflow.json.

Example

$# Sync all components
$webflow devlink sync
$
$# Sync specific components
$webflow devlink sync Button Card Header

devlink import

Imports a library of Code Components into your Webflow Workspace.

Usage

$webflow devlink import [options]

Options

OptionDescriptionDefault
--api-token <token>API token, overriding WEBFLOW_API_TOKEN.
-f, --forceForce bundling to complete, even with warnings.false
--debug-bundlerDisplays final bundler configuration for debugging.false
--devBundle in development mode.false

Example

$webflow devlink import --no-input

devlink bundle

Bundles a library of Code Components locally to a dist directory. This command doesn’t import the library into Webflow.

Usage

$webflow devlink bundle [options]

Options

OptionDescriptionDefault
--public-path <path>Overrides the public path for the bundle.
--output-path <path>Overrides the output path for the bundle../dist
-f, --forceForces bundling to complete, even with warnings.false
--debug-bundlerDisplays final bundler configuration for debugging.false
--devBundle in development mode.false

Example

$webflow devlink bundle --public-path http://localhost:4000/

devlink export

Exports Webflow components from your site as a static, self-contained local React bundle.

Usage

$webflow devlink export [options]

Options

OptionDescription
--api-token <token>API token, overriding WEBFLOW_API_TOKEN.
-s, --site <site-id>Site ID, overriding webflow.json.

Example

$# Export components using a specific site ID and token
$webflow devlink export --site 1234567890 --api-token <YOUR_TOKEN>

devlink sync

Syncs Webflow components to your filesystem.

Usage

$webflow devlink sync [options] [components...]

Arguments

ArgumentDescription
componentsOne or more component names to sync. If none are provided, all components are synced.

Options

OptionDescription
--api-token <token>API token, overriding WEBFLOW_API_TOKEN.
-s, --site <site-id>Site ID, overriding webflow.json.

Example

$# Sync all components
$webflow devlink sync
$
$# Sync specific components by name
$webflow devlink sync Button Card

Designer Extensions

extension list

Lists available templates for extension init.

Usage

$webflow extension list

extension init

Initializes a new Designer Extension from a template.

Usage

$webflow extension init [options] [projectName] [scaffoldName]

Arguments

Both arguments are optional — the CLI prompts for any that are not provided.

ArgumentDescription
projectNameThe name of your new app directory.
scaffoldNameThe template to use: default, react, or typescript-alt.

Example

$# Initialize a new React-based extension in a 'my-new-extension' folder
$webflow extension init my-new-extension react

extension bundle

Bundles your Designer Extension into a bundle.zip file for upload.

Usage

$webflow extension bundle

extension serve

Serves your Designer Extension on a local development server.

Usage

$webflow extension serve [port]

Arguments

ArgumentDescriptionDefault
portThe port to serve the app on.1337