Execute Webflow secondary workflows — Sites management, Pages API, Forms submissions,
Ecommerce (products/orders/inventory), and Custom Code via the Data API v2.
Use when managing sites, reading pages, handling form data, or working with
Webflow Ecommerce products and orders.
Trigger with phrases like "webflow sites", "webflow pages", "webflow forms",
"webflow ecommerce", "webflow products", "webflow orders".
Standardmäßig ist der Prompt ausgewählt, der zuerst die Quelle prüft. Sie können zu einem direkten Befehl wechseln oder eine lokale Kopie herunterladen.
Quelldateien prüfen
Lesen Sie SKILL.md und alle von SkillsMP angezeigten Begleitdateien, bevor Sie sich für eine Installation entscheiden.
Mit Codex oder Claude installieren Kopieren Sie diesen Prompt, fügen Sie ihn in Codex, Claude oder einen anderen Assistant ein und lassen Sie die Skill-Seite prüfen und installieren.
Ein direkter Befehl überspringt den Prüf-Prompt. Prüfen Sie die Quelle, bevor Sie ihn ausführen.
Execute Webflow secondary workflows — Sites management, Pages API, Forms submissions,
Ecommerce (products/orders/inventory), and Custom Code via the Data API v2.
Use when managing sites, reading pages, handling form data, or working with
Webflow Ecommerce products and orders.
Trigger with phrases like "webflow sites", "webflow pages", "webflow forms",
"webflow ecommerce", "webflow products", "webflow orders".
allowed-tools
Read, Write, Edit, Bash(npm:*), Bash(npx:*), Grep
version
1.5.0
license
MIT
author
Jeremy Longshore <jeremy@intentsolutions.io>
tags
["saas","design","no-code","webflow"]
compatibility
Designed for Claude Code
Webflow Core Workflow B — Sites, Pages, Forms & Ecommerce
Overview
Beyond CMS content management, Webflow's Data API v2 covers site operations, page
metadata, form submissions, ecommerce (products, orders, inventory), and custom code
injection. This skill covers all non-CMS API domains.
// List all pages for a siteasyncfunctionlistPages(siteId: string) {
const { pages } = await webflow.pages.list(siteId);
for (const page of pages!) {
console.log(`${page.title} (${page.id})`);
console.log(` Slug: ${page.slug}`);
console.log(` SEO title: ${page.seo?.title}`);
console.log(` SEO description: ${page.seo?.description}`);
console.log(` Open Graph image: ${page.openGraph?.titleCopied}`);
console.log(` Created: ${page.createdOn}`);
console.log(` Published: ${page.publishedPath}`);
}
}
// Get page metadataasyncfunctiongetPage(pageId: string) {
const page = await webflow.pages.getMetadata(pageId);
return page;
}
// Update page SEO metadataasyncfunctionupdatePageSEO(pageId: string) {
await webflow.pages.updatePageSettings(pageId, {
seo: {
title: "New SEO Title — My Site",
description: "Updated meta description for search engines.",
},
openGraph: {
title: "New OG Title",
description: "Updated Open Graph description for social shares.",
},
});
}
3. Form Submissions
// List forms on a siteasyncfunctionlistForms(siteId: string) {
const { forms } = await webflow.forms.list(siteId);
for (const form of forms!) {
console.log(`Form: ${form.displayName} (${form.id})`);
console.log(` Site ID: ${form.siteId}`);
console.log(` Page name: ${form.pageName}`);
console.log(` Submission count: ${form.submissionCount}`);
console.log(` Fields:`);
for (const field of form.fields || []) {
console.log(` ${field.displayName} (${field.type})`);
}
}
}
// Get form submissions (paginated)asyncfunctiongetFormSubmissions(formId: string) {
const { formSubmissions } = await webflow.forms.listSubmissions(formId, {
limit: 100,
offset: 0,
});
for (const sub of formSubmissions!) {
console.log(`Submission ${sub.id}:`);
console.log(` Submitted: ${sub.submittedAt}`);
console.log(` Data: ${JSON.stringify(sub.formData)}`);
}
}
// Export all form submissions to CSVasyncfunctionexportFormData(formId: string) {
const allSubmissions = [];
let offset = 0;
const limit = 100;
while (true) {
const { formSubmissions, pagination } =
await webflow.forms.listSubmissions(formId, { limit, offset });
allSubmissions.push(...(formSubmissions || []));
if (allSubmissions.length >= (pagination?.total || 0)) break;
offset += limit;
}
return allSubmissions.map(sub => sub.formData);
}