npx skills add ...
npx skills add webflow/webflow-skills --skill bulk-cms-update
npx skills add webflow/webflow-skills --skill bulk-cms-update
Create or update multiple CMS items in a Webflow collection with validation and diff preview. Use when adding multiple blog posts, products, or updating fields across many items.
Create or update multiple CMS items with comprehensive validation, granular approval, and rollback capability.
ALWAYS use Webflow MCP tools for all operations:
data_sites_tool with action list_sites for listing available sitesdata_cms_tool with action get_collection_list for listing CMS collectionsdata_cms_tool with action get_collection_details for fetching collection schemasdata_cms_tool with action list_collection_items for retrieving existing itemsdata_cms_tool with action create_collection_items for creating items (draft or published)data_cms_tool with action update_collection_items for updating items (draft or published)data_cms_tool with action publish_collection_items for publishing draft itemswebflow_guide_tool to get best practices before startingcontext parameter (15-25 words, third-person perspective)data_cms_tool with action get_collection_list to show available collectionsdata_cms_tool with action get_collection_details to retrieve:
Ask operation type: Clarify what user wants to do:
Receive data from user: Accept data in flexible formats:
Parse and normalize: Convert user data into structured format
Fetch existing items (if updates involved): Use Webflow MCP's data_cms_tool with action list_collection_items to get current data
IMPORTANT - Efficient Item Lookup:
name parameter to filter (e.g., name: "Pikachu")slug parameter to filter*_live endpoints)User prompt:
Step 1: Site & Collection Selection
User selects: 1
User confirms: yes
Step 2: Data Collection
Step 3: Validation & Preview
User selects: 1, all
User confirms: confirm
Step 4: Execution & Results
Alternative: With Validation Warnings
Site & Collection Selection:
data_sites_tool with action list_sitesFlexible Input Formats: Accept data in multiple formats:
Parsing Rules:
Efficient Item Lookup: When fetching existing items for updates, use filter parameters to minimize API calls:
name or slug parameters when searching for specific itemsField Name Validation:
Required Fields:
name and slug are ALWAYS required for Webflow CMSField Type Validation:
PlainText:
RichText:
Image/File:
Switch (Boolean):
Color:
Reference Fields:
Slug Validation:
Constraint Validation:
Preview Format:
For Create Operations:
For Update Operations:
For Items with Warnings:
For Items with Errors:
Granular Approval:
Publish Options:
*_live endpoints (recommended)Batch Processing:
Error Handling:
For Single Item Failures:
Continue Processing:
For Critical Failures:
Success Report Format:
Rollback Capability:
Store Before Changes:
Offer Rollback:
Batch Size:
Progress Indicators:
Rate Limiting:
Clear and Actionable:
ā Bad:
ā Good:
Error Categories:
Always:
Never:
Edge Cases:
User Experience:
š Preview: Bulk CMS Update
Collection: Blog Posts
Operations: Create 2 items + Update 1 item
---
### š Items to Create (2)
[1] ā NEW POST
name: "Webflow MCP: The Future of Web Development"
slug: "webflow-mcp-future-web-development"
post-summary: "Discover how Webflow MCP is revolutionizing..."
post-body: "<h1>The Future is Here</h1><p>..."
featured: true
color: "#9B59B6"
ā
All validations passed
[2] ā NEW POST
name: "Why Webflow MCP Will Transform Your Workflow in 2026"
slug: "webflow-mcp-transform-workflow-2026"
post-summary: "Learn how Webflow MCP's integration..."
post-body: "<h1>Transform Your Workflow</h1><p>..."
featured: true
color: "#3498DB"
ā
All validations passed
---
### āļø Items to Update (1)
[3] ā UPDATE EXISTING
Item ID: 69615f84fc6ce1aa444d24d5
Slug: why-webflow-is-best-2026-ai
Changes:
name: "Why Webflow is the Best Choice for 2026" ā "Why Webflow is the Top Choice for 2026"
ā
All validations passed
---
**Summary:**
- ā
2 items will be created
- ā
1 item will be updated
- ā ļø 0 warnings
- ā 0 errors
**Publish Options:**
1. Publish immediately (recommended)
2. Save as drafts
Which items would you like to process?
- Type "all" to process all 3 items
- Type numbers to skip (e.g., "2" to skip item 2)
- Type "none" to cancel
Select publish option (1/2): _
Select items: _ā ļø You're about to:
- Create 2 new blog posts (published live)
- Update 1 existing blog post (changes published live)
Type "confirm" to proceed.š Processing bulk update...
Creating items: āāāāāāāāāā 100% (2/2)
Updating items: āāāāāāāāāā 100% (1/1)
ā
Bulk CMS Update Complete!
---
### š Created Items (2)
ā [1] "Webflow MCP: The Future of Web Development"
ID: 6961640c66de07bed9aacf3e
Slug: webflow-mcp-future-web-development
Published: Jan 9, 2026, 8:24 PM
ā [2] "Why Webflow MCP Will Transform Your Workflow in 2026"
ID: 6961640c66de07bed9aacf41
Slug: webflow-mcp-transform-workflow-2026
Published: Jan 9, 2026, 8:24 PM
---
### āļø Updated Items (1)
ā [3] "Why Webflow is the Top Choice for 2026"
ID: 69615f84fc6ce1aa444d24d5
Changed: title updated
Published: Jan 9, 2026, 8:24 PM
---
**Summary:**
- ā
2 items created successfully
- ā
1 item updated successfully
- ā 0 failures
- ā±ļø Completed in 3.2 seconds
**Total Items:** 11 (was 9)
š Rollback Available:
Last update: 3 items modified just now
Type "undo" within 5 minutes to revert all changesš Preview: Bulk CMS Update
[1] ā ļø NEW POST
name: "Test Post"
slug: "test"
post-summary: "Hi"
ā ļø Warning: post-summary too short (< 20 chars) - may affect SEO
ā ļø Warning: slug too generic - consider more descriptive slug
ā ļø Warning: missing post-body - content will be empty
ā
Required fields present (can proceed)
[2] ā NEW POST
name: "Another Post!!!"
slug: "another post"
ā Error: slug contains spaces (must be alphanumeric with hyphens only)
ā Error: name contains special characters not allowed
š“ Cannot proceed - fix errors first
---
**Summary:**
- ā
1 item can be created (with warnings)
- ā 1 item has errors (cannot create)
Fix item 2 or skip it? (fix/skip)CREATE:
- name: "Post Title"
slug: "post-slug"
featured: true"Add a blog post called 'Getting Started' with slug 'getting-started'"name,slug,featured
"Post 1","post-1",true
"Post 2","post-2",false- Post 1: "Title" (slug: title-slug)
- Post 2: "Another" (slug: another-slug)# Good - Filter by name when you know the item name
data_cms_tool(action: "list_collection_items", collection_id, name: "Pikachu")
# Good - Filter by slug when you know the slug
data_cms_tool(action: "list_collection_items", collection_id, slug: "pikachu")
# Bad - Fetching all items then searching through results
data_cms_tool(action: "list_collection_items", collection_id) # Returns 100 items
# Then manually searching for "Pikachu" in results...[1] ā NEW POST
field1: "value1"
field2: "value2"
field3: "value3"
ā
All validations passed[2] ā UPDATE EXISTING
Item ID: xxx
Slug: existing-slug
Changes:
field1: "old value" ā "new value"
field2: (no change)
field3: "old" ā "new"
ā
All validations passed[3] ā ļø NEW POST
name: "Title"
ā ļø Warning: Missing optional field 'post-body'
ā ļø Warning: Slug may be too generic
ā
Can proceed (warnings only)[4] ā NEW POST
name: "Title!!!"
slug: "bad slug"
ā Error: slug contains spaces
ā Error: name has special characters
š“ Cannot proceed - must fix errors