Connect Webflow to Fondoo

Live4 min readUpdated

Webflow is a visual website builder with a built-in CMS. Connecting it lets your AI agent create and update items in a Webflow CMS collection, such as blog posts, and publish them when you are ready. Fondoo works through Webflow's Data API v2 with a site API token.

What Fondoo can do with it

  • Collections: list, read, create and update. Deleting a collection is destructive and needs your approval.
  • Collection items: list, read, create and update. Deleting an item is destructive and needs your approval.
  • Publish items (items.publish). This is an explicit step. Creating or updating an item does not make it live on its own.

When you bind the connection to your Fondoo site with connect_cms, you name one collection and its rich-text body field. Fondoo's shared page tools then work with Webflow:

  • update_page writes the page as a draft item. It sets the item name and slug, and puts the HTML in your body field.
  • publish_connected_page creates or updates the item and then publishes it.
  • map_cms_page links an existing item.
  • apply_seo_fixes can fix title, description, canonical and robots, but only for fields you map in connect_cms (seoTitleField, seoDescriptionField, canonicalField, robotsField). Webflow items must be mapped with map_cms_page before SEO fixes can find them.

Webflow scheduling is not used. Fondoo keeps its own schedule and publishes at the chosen time.

Approval rules:

  • Publishing needs your approval unless you have turned on auto-publish.
  • Deletes need your approval.
  • Re-binding a site to a different CMS connection needs your approval.

Before you start

  • A Webflow site with CMS. Webflow's Basic site plan has no CMS. Use a site plan that includes CMS collections. Check Webflow's pricing for which plans allow CMS changes through the API; this could not be confirmed.
  • Site administrator access. Only site administrators can create site API tokens (site token).
  • A collection for Fondoo content, such as "Blog Posts", with a Rich text field for the body. Optionally add plain-text fields for SEO title, description, canonical and robots.
  • Your public site URL, for example https://www.example.com. Webflow has no site URL field in the key form, so you give it to connect_cms as publicSiteUrl.

Step by step: get your credentials

  1. In Webflow, open the site's Site settings (gear icon) → Apps & integrations → API access → Generate API token.
  2. Name it Fondoo and set the scopes Fondoo needs (scopes):
    • CMS: read and write (cms:read, cms:write), to read, create, update and publish items.
    • Sites: read (sites:read), used by the connection test.
    Leave the other APIs on no access.
  3. Select Generate token and copy it.A site can have up to five tokens. A token expires after 365 days without use. Any API call resets the clock.
  4. Find the site ID. It is usually shown in the site's general settings. If you cannot find it, your agent can read it from Webflow's API (GET /v2/sites).
  5. Find the collection ID and body field slug. Once connected, your agent can list collections with connector_action({connectionId, action:"collections.list"}) and read one with collections.get. Each field's slug (for example post-body) is the value Fondoo needs as bodyField.

Connect it in Fondoo

In the dashboard:

  1. Open Connections → Available → Content → Webflow → Use a key → Open secure key entry.
  2. Fill in:
    • apiKey: the token.
    • siteId.
    • Optionally collectionId and bodyField. These are also set later in connect_cms.
  3. Click Save connection securely. The link lasts 15 minutes and works once.
  4. Click Check connection.

By asking your agent. For example:

"Connect Webflow and publish my Fondoo blog posts into the Blog Posts collection."

The agent calls add_connection_key({provider:"webflow", siteId}) without fields and sends you the secure link. Do not paste the token into chat: tokens in fields trigger a chat-log warning. connect_service({provider:"webflow", siteId}) gives a signed 15-minute instruction link. Then the agent runs:

test_connection({connectionId})
connect_cms({siteId, connectionId, settings:{collectionId:"...", bodyField:"post-body", publicSiteUrl:"https://www.example.com", seoTitleField:"seo-title", seoDescriptionField:"seo-description"}})

REST: POST https://api.getfondoo.com/v1/ops/add_connection_key with Authorization: Bearer <your Fondoo key> and {"provider":"webflow","siteId":"<site UUID>"}. Then POST /v1/ops/connect_cms with the settings above.

Test that it works

  1. test_connection calls GET /v2/sites/{siteId} and confirms sites:read. CMS permissions stay "unknown" until used.
  2. Ask your agent to save a test page as a draft. In the Webflow CMS, a new draft item should appear in your collection with the body filled in.
  3. Ask it to publish, approve the request, and check the live item.

Troubleshooting

  • "Provider request failed (401)". The token is wrong, revoked, or expired after a year unused. Generate a new one.
  • "Provider request failed (403)". A scope is missing. Reads can work while writes fail without CMS write. Create a token with CMS read and write and Sites read.
  • "Configure the Webflow collection bodyField in connect_cms". Run connect_cms again with bodyField set to the rich-text field's slug.
  • "Supply settings.publicSiteUrl for the published CMS site". Add your public HTTPS URL to connect_cms.
  • Published item not visible. Webflow's CMS guide notes that publishing items may also require publishing the site, while the item publish endpoint says it publishes directly. If an item stays unpublished, publish the site in Webflow. This may differ for your account.
  • "Provider request failed (429)". Webflow allows 60 requests per minute on Starter and Basic sites and 120 on CMS, eCommerce and Business sites (rate limits). Fondoo also budgets about 60 actions per minute.

Limits, data and security

  • What Fondoo stores: the encrypted token and IDs, status, last test, last use, and snapshots of items it publishes (for undo). list_connections shows [redacted].
  • Rotate: generate a new token, call rotate_connection_key({connectionId}) without fields, paste it, then revoke the old token in API access.
  • Disconnect: delete_connection({connectionId}) deletes the stored token. Agents need your approval. Revoke the token in Webflow as well.