Automate Webflow CMS collections, site publishing, page management, asset uploads, and ecommerce orders via Rube MCP (Composio). Always search tools first for current schemas.
Add this skill
npx mdskills install sickn33/webflow-automationComprehensive Webflow automation guide with clear workflows, detailed parameter specs, and excellent pitfall warnings
1---2name: webflow-automation3description: "Automate Webflow CMS collections, site publishing, page management, asset uploads, and ecommerce orders via Rube MCP (Composio). Always search tools first for current schemas."4requires:5 mcp: [rube]6---78# Webflow Automation via Rube MCP910Automate Webflow operations including CMS collection management, site publishing, page inspection, asset uploads, and ecommerce order retrieval through Composio's Webflow toolkit.1112## Prerequisites1314- Rube MCP must be connected (RUBE_SEARCH_TOOLS available)15- Active Webflow connection via `RUBE_MANAGE_CONNECTIONS` with toolkit `webflow`16- Always call `RUBE_SEARCH_TOOLS` first to get current tool schemas1718## Setup1920**Get Rube MCP**: Add `https://rube.app/mcp` as an MCP server in your client configuration. No API keys needed — just add the endpoint and it works.2122231. Verify Rube MCP is available by confirming `RUBE_SEARCH_TOOLS` responds242. Call `RUBE_MANAGE_CONNECTIONS` with toolkit `webflow`253. If connection is not ACTIVE, follow the returned auth link to complete Webflow OAuth264. Confirm connection status shows ACTIVE before running any workflows2728## Core Workflows2930### 1. Manage CMS Collection Items3132**When to use**: User wants to create, update, list, or delete items in Webflow CMS collections (blog posts, products, team members, etc.)3334**Tool sequence**:351. `WEBFLOW_LIST_WEBFLOW_SITES` - List sites to find the target site_id [Prerequisite]362. `WEBFLOW_LIST_COLLECTIONS` - List all collections for the site [Prerequisite]373. `WEBFLOW_GET_COLLECTION` - Get collection schema to find valid field slugs [Prerequisite for create/update]384. `WEBFLOW_LIST_COLLECTION_ITEMS` - List existing items with filtering and pagination [Optional]395. `WEBFLOW_GET_COLLECTION_ITEM` - Get a specific item's full details [Optional]406. `WEBFLOW_CREATE_COLLECTION_ITEM` - Create a new item with field data [Required for creation]417. `WEBFLOW_UPDATE_COLLECTION_ITEM` - Update an existing item's fields [Required for updates]428. `WEBFLOW_DELETE_COLLECTION_ITEM` - Permanently remove an item [Optional]439. `WEBFLOW_PUBLISH_SITE` - Publish changes to make them live [Optional]4445**Key parameters for CREATE_COLLECTION_ITEM**:46- `collection_id`: 24-character hex string from LIST_COLLECTIONS47- `field_data`: Object with field slug keys (NOT display names); must include `name` and `slug`48- `field_data.name`: Display name for the item49- `field_data.slug`: URL-friendly identifier (lowercase, hyphens, no spaces)50- `is_draft`: Boolean to create as draft (default false)5152**Key parameters for UPDATE_COLLECTION_ITEM**:53- `collection_id`: Collection identifier54- `item_id`: 24-character hex MongoDB ObjectId of the existing item55- `fields`: Object with field slug keys and new values56- `live`: Boolean to publish changes immediately (default false)5758**Field value types**:59- Text/Email/Link/Date: string60- Number: integer or float61- Boolean: true/false62- Image: `{"url": "...", "alt": "...", "fileId": "..."}`63- Multi-reference: array of reference ID strings64- Multi-image: array of image objects65- Option: option ID string6667**Pitfalls**:68- Field keys must use the exact field `slug` from the collection schema, NOT display names69- Always call `GET_COLLECTION` first to retrieve the schema and identify correct field slugs70- `CREATE_COLLECTION_ITEM` requires `name` and `slug` in `field_data`71- `UPDATE_COLLECTION_ITEM` cannot create new items; it requires a valid existing `item_id`72- `item_id` must be a 24-character hexadecimal MongoDB ObjectId73- Slug must be lowercase alphanumeric with hyphens: `^[a-z0-9]+(?:-[a-z0-9]+)*$`74- CMS items are staged; use `PUBLISH_SITE` or set `live: true` to push to production7576### 2. Manage Sites and Publishing7778**When to use**: User wants to list sites, inspect site configuration, or publish staged changes7980**Tool sequence**:811. `WEBFLOW_LIST_WEBFLOW_SITES` - List all accessible sites [Required]822. `WEBFLOW_GET_SITE_INFO` - Get detailed site metadata including domains and settings [Optional]833. `WEBFLOW_PUBLISH_SITE` - Deploy all staged changes to live site [Required for publishing]8485**Key parameters for PUBLISH_SITE**:86- `site_id`: Site identifier from LIST_WEBFLOW_SITES87- `custom_domains`: Array of custom domain ID strings (from GET_SITE_INFO)88- `publish_to_webflow_subdomain`: Boolean to publish to `{shortName}.webflow.io`89- At least one of `custom_domains` or `publish_to_webflow_subdomain` must be specified9091**Pitfalls**:92- `PUBLISH_SITE` republishes ALL staged changes for selected domains -- verify no unintended drafts are pending93- Rate limit: 1 successful publish per minute94- For sites without custom domains, must set `publish_to_webflow_subdomain: true`95- `custom_domains` expects domain IDs (hex strings), not domain names96- Publishing is a production action -- always confirm with the user first9798### 3. Manage Pages99100**When to use**: User wants to list pages, inspect page metadata, or examine page DOM structure101102**Tool sequence**:1031. `WEBFLOW_LIST_WEBFLOW_SITES` - Find the target site_id [Prerequisite]1042. `WEBFLOW_LIST_PAGES` - List all pages for a site with pagination [Required]1053. `WEBFLOW_GET_PAGE` - Get detailed metadata for a specific page [Optional]1064. `WEBFLOW_GET_PAGE_DOM` - Get the DOM/content node structure of a static page [Optional]107108**Key parameters**:109- `site_id`: Site identifier (required for list pages)110- `page_id`: 24-character hex page identifier111- `locale_id`: Optional locale filter for multi-language sites112- `limit`: Max results per page (max 100)113- `offset`: Pagination offset114115**Pitfalls**:116- `LIST_PAGES` paginates via offset/limit; iterate when sites have many pages117- Page IDs are 24-character hex strings matching pattern `^[0-9a-fA-F]{24}$`118- `GET_PAGE_DOM` returns the node structure, not rendered HTML119- Pages include both static and CMS-driven pages120121### 4. Upload Assets122123**When to use**: User wants to upload images, files, or other assets to a Webflow site124125**Tool sequence**:1261. `WEBFLOW_LIST_WEBFLOW_SITES` - Find the target site_id [Prerequisite]1272. `WEBFLOW_UPLOAD_ASSET` - Upload a file with base64-encoded content [Required]128129**Key parameters**:130- `site_id`: Site identifier131- `file_name`: Name of the file (e.g., `"logo.png"`)132- `file_content`: Base64-encoded binary content of the file (NOT a placeholder or URL)133- `content_type`: MIME type (e.g., `"image/png"`, `"image/jpeg"`, `"application/pdf"`)134- `md5`: MD5 hash of the raw file bytes (32-character hex string)135- `asset_folder_id`: Optional folder placement136137**Pitfalls**:138- `file_content` must be actual base64-encoded data, NOT a variable reference or placeholder139- `md5` must be computed from the raw bytes, not from the base64 string140- This is a two-step process internally: generates an S3 pre-signed URL, then uploads141- Large files may encounter timeouts; keep uploads reasonable in size142143### 5. Manage Ecommerce Orders144145**When to use**: User wants to view ecommerce orders from a Webflow site146147**Tool sequence**:1481. `WEBFLOW_LIST_WEBFLOW_SITES` - Find the site with ecommerce enabled [Prerequisite]1492. `WEBFLOW_LIST_ORDERS` - List all orders with optional status filtering [Required]1503. `WEBFLOW_GET_ORDER` - Get detailed information for a specific order [Optional]151152**Key parameters**:153- `site_id`: Site identifier (must have ecommerce enabled)154- `order_id`: Specific order identifier for detailed retrieval155- `status`: Filter orders by status156157**Pitfalls**:158- Ecommerce must be enabled on the Webflow site for order endpoints to work159- Order endpoints are read-only; no create/update/delete for orders through these tools160161## Common Patterns162163### ID Resolution164Webflow uses 24-character hexadecimal IDs throughout:165- **Site ID**: `WEBFLOW_LIST_WEBFLOW_SITES` -- find by name, capture `id`166- **Collection ID**: `WEBFLOW_LIST_COLLECTIONS` with `site_id`167- **Item ID**: `WEBFLOW_LIST_COLLECTION_ITEMS` with `collection_id`168- **Page ID**: `WEBFLOW_LIST_PAGES` with `site_id`169- **Domain IDs**: `WEBFLOW_GET_SITE_INFO` -- found in `customDomains` array170- **Field slugs**: `WEBFLOW_GET_COLLECTION` -- found in collection `fields` array171172### Pagination173Webflow uses offset-based pagination:174- `offset`: Starting index (0-based)175- `limit`: Items per page (max 100)176- Increment offset by limit until fewer results than limit are returned177- Available on: LIST_COLLECTION_ITEMS, LIST_PAGES178179### CMS Workflow180Typical CMS content creation flow:1811. Get site_id from LIST_WEBFLOW_SITES1822. Get collection_id from LIST_COLLECTIONS1833. Get field schema from GET_COLLECTION (to learn field slugs)1844. Create/update items using correct field slugs1855. Publish site to make changes live186187## Known Pitfalls188189### ID Formats190- All Webflow IDs are 24-character hexadecimal strings (MongoDB ObjectIds)191- Example: `580e63fc8c9a982ac9b8b745`192- Pattern: `^[0-9a-fA-F]{24}$`193- Invalid IDs return 404 errors194195### Field Slugs vs Display Names196- CMS operations require field `slug` values, NOT display names197- A field with displayName "Author Name" might have slug `author-name`198- Always call `GET_COLLECTION` to discover correct field slugs199- Using wrong field names silently ignores the data or causes validation errors200201### Publishing202- `PUBLISH_SITE` deploys ALL staged changes, not just specific items203- Rate limited to 1 publish per minute204- Must specify at least one domain target (custom or webflow subdomain)205- This is a production-affecting action; always confirm intent206207### Authentication Scopes208- Different operations require different OAuth scopes: `sites:read`, `cms:read`, `cms:write`, `pages:read`209- A 403 error typically means missing OAuth scopes210- Check connection permissions if operations fail with authorization errors211212### Destructive Operations213- `DELETE_COLLECTION_ITEM` permanently removes CMS items214- `PUBLISH_SITE` makes all staged changes live immediately215- Always confirm with the user before executing these actions216217## Quick Reference218219| Task | Tool Slug | Key Params |220|------|-----------|------------|221| List sites | `WEBFLOW_LIST_WEBFLOW_SITES` | (none) |222| Get site info | `WEBFLOW_GET_SITE_INFO` | `site_id` |223| Publish site | `WEBFLOW_PUBLISH_SITE` | `site_id`, `custom_domains` or `publish_to_webflow_subdomain` |224| List collections | `WEBFLOW_LIST_COLLECTIONS` | `site_id` |225| Get collection schema | `WEBFLOW_GET_COLLECTION` | `collection_id` |226| List collection items | `WEBFLOW_LIST_COLLECTION_ITEMS` | `collection_id`, `limit`, `offset` |227| Get collection item | `WEBFLOW_GET_COLLECTION_ITEM` | `collection_id`, `item_id` |228| Create collection item | `WEBFLOW_CREATE_COLLECTION_ITEM` | `collection_id`, `field_data` |229| Update collection item | `WEBFLOW_UPDATE_COLLECTION_ITEM` | `collection_id`, `item_id`, `fields` |230| Delete collection item | `WEBFLOW_DELETE_COLLECTION_ITEM` | `collection_id`, `item_id` |231| List pages | `WEBFLOW_LIST_PAGES` | `site_id`, `limit`, `offset` |232| Get page | `WEBFLOW_GET_PAGE` | `page_id` |233| Get page DOM | `WEBFLOW_GET_PAGE_DOM` | `page_id` |234| Upload asset | `WEBFLOW_UPLOAD_ASSET` | `site_id`, `file_name`, `file_content`, `content_type`, `md5` |235| List orders | `WEBFLOW_LIST_ORDERS` | `site_id`, `status` |236| Get order | `WEBFLOW_GET_ORDER` | `site_id`, `order_id` |237
Full transparency — inspect the skill content before installing.