Connect Webflow
Publish a released blog as a CMS Collection Item in your Webflow site. Re-publishing the same blog updates the existing item rather than creating a duplicate. Essel uses the Webflow Data API v2 with a site API token.
Requirements
- A Webflow site with a CMS Collection for blog posts. A typical blog
collection has, at minimum, a Name field, a Slug field, and a Rich text body field — plus optional summary, cover image, and published
date fields.
- No collection yet? The connect wizard can create a ready-to-map “Blog Posts” collection for you (after you confirm). Note: Webflow’s API can create the collection and its fields but not the page that displays them, so you’ll then need to add a Collection Page for it in the Webflow Designer and publish your site before posts render live.
- Permission to generate a site API token (site admin).
1. Create a site API token
See Webflow’s site token guide:
- In Webflow, open Site settings → Apps & integrations → API access.
- Click Generate API token, name it (e.g.
Essel), and select these scopes:sites:read— list your sites during setup.cms:read— read collections and their field schema.cms:write— create, update, and publish items.
- Generate and copy the token.
A site can hold at most 5 tokens, and a token expires after 365 days of inactivity. If setup ever fails at the first step with an auth error, the token is usually missing
sites:read.
2. Connect in Essel
The connect wizard walks four steps:
- Token — paste the site API token and continue. Essel lists your sites.
- Site — pick the Webflow site that holds your blog collection.
- Collection — pick the CMS collection to publish into.
- Map fields — match Essel’s blog fields to your collection’s fields. Essel pre-fills sensible guesses from field types and names; adjust as needed.
Field mapping
| Essel field | Maps to | Required |
|---|---|---|
| Title | Your Name field | Yes |
| Slug | Your Slug field | Yes |
| Body | A Rich text field (accepts HTML) | Yes |
| Summary | A plain-text / summary field | Optional |
| Cover image | An Image field (or a plain link/URL field) | Optional |
| Published date | A Date/Time field | Optional |
Only Title, Slug, and Body are required. Essel re-checks this mapping against your live collection on every publish, so if you later rename or remove a mapped field the destination flags a clear error instead of posting silently broken content.
Settings
- Default item status —
Publish to live siteorStaged draft(created in Webflow for you to publish manually). - Publish automatically on release — push released blogs to Webflow with no manual step. Enabling this makes Webflow your workspace’s single automatic destination.
- Set the cover image field — sends the blog’s cover image to the mapped image field. This is best-effort: if Webflow rejects the image, Essel retries once without it so the post still goes out.
How publishing works
- Items are created staged, then published to the live site when the status is Publish (Webflow’s two-step staged item → publish model).
- The item id is stored, so re-publishing performs an idempotent update.
- Image fields accept a public URL that Webflow ingests as an asset (max 4 MB). Rich-text fields accept HTML — note Webflow’s API does not currently support code blocks in rich text.
- Webflow doesn’t expose a reliable public URL for a CMS item via the API, so Essel doesn’t display one — view the post on your published site.
- The token is stored encrypted and is never returned by any read endpoint.
Troubleshooting
- Auth error on the first step — the token is missing
sites:read. Generate a new token with all three scopes. - “This site has no CMS collections” — the site has no CMS. Let the wizard
create a “Blog Posts” collection for you, or add one in the Webflow Designer;
if you expected collections to appear, check the token has
cms:readand you picked the right site. - Created a collection but posts don’t show on the site — an API-created collection has no page. Open the Webflow Designer, add a Collection Page bound to it, and publish your site.
- “The collection no longer has the mapped field(s)” — a mapped field was renamed or deleted in Webflow. Reconnect and re-map.
- Rate limited (429) — Webflow caps requests per minute by plan (60 on Starter/Basic, 120 on higher tiers). Essel surfaces this; retry shortly.
