Pagination
Why Webflow pagination breaks on WCH
Webflow renders paginated collection lists on its servers. Each Next or Load more click asks Webflow for the next set of items. On a static WCH site there is no Webflow server behind the page, so those clicks return nothing.
You have two options. Slater Data is the recommended one.
Recommended: Slater Data
Slater Data is a dependency-free script that adds load more, filtering, keyword search, sorting, and facets to a Webflow CMS list. You wire it up with data-slater-* attributes in the Webflow Designer. No JavaScript to write, and the list works on any host.
Quick start
- Set the site up in Slater and connect it to your Webflow site. The shared setup is in the Slater Data docs.
- On the collection list wrapper, add
data-slater-listwith a key you choose. On the items container, adddata-slater-resultswith the same key. - Mark one card inside the list with
data-slater-templateand bind its fields. - Load the script once, before the closing
</body>tag.
<!-- On the collection list wrapper -->
<div class="w-dyn-list" data-slater-list="blog">
<div class="w-dyn-items" data-slater-results="blog">
<!-- One card, marked as the template -->
<div class="w-dyn-item" data-slater-template>
<h2 data-slater-bind-text="heading"></h2>
<p data-slater-bind-text="description"></p>
</div>
</div>
</div>
<button data-slater-load-more="blog">Load more</button>
<!-- Load the script once, before </body> -->
<script src="https://api.slater.app/embed/v1/slater-search.js" defer></script>
The list key
data-slater-list="blog" gives the list a key. The key is a label you pick, not the collection slug. Every control for that list uses the same key: data-slater-results, data-slater-load-more, data-slater-search, data-slater-empty, data-slater-count.
The collection slug comes from data-slater-collection. If you leave it out, Slater uses the key as the slug. Name the list after the collection and you need nothing else. Use a separate key only when a page has two lists.
Binding fields into the card
data-slater-bind-text="field": sets text. Never renders HTML.data-slater-bind-html="field": sets sanitized HTML. Rich text fields only.data-slater-bind-src="field": sets an image's src from an image field.data-slater-href="/blog/{slug}": builds a link from a URL pattern.{slug},{name},{id}, or any field works inside the braces.data-slater-hide-empty: hides the node when its field is empty.
Field names are Webflow field slugs: lower-case, kebab-case, and case-sensitive. To find them, add ?slater-debug=1 to the page URL and read the console.
Always mark the template
Set
data-slater-templateon one card. If you omit it, Slater clones the first item with a console warning. That breaks cards that use Webflow conditional visibility, because a node that only exists when a field is filled will be missing from the template whenever the first item lacks that field. Author the template with every optional node present and mark the optional onesdata-slater-hide-empty.
Empty state, count, and clear
<div data-slater-empty="blog">No results found.</div>
<span data-slater-count="blog"></span>
<button data-slater-clear="blog">Clear all</button>
Leave these elements visible in the Designer. Slater hides them with an inline style. An element hidden by a Webflow class can never be shown by the script.
More features
Keyword search over one list, filters, sorting, facet counts, multi-collection lists, typeahead, and JavaScript hooks are each covered in the Slater Data docs. For a search box across the whole site, see the WCH Search page.
Legacy: WCH static pagination
WCH can also crawl a paginated Webflow list at publish time and generate a static page for each paginated state. Use this when you want plain server-rendered pages with no script, for example for SEO on a large archive. It is slower to publish and offers no search or filtering.
How to enable it
- In the Webflow Designer, select the collection list's pagination wrapper. Webflow gives it the class
w-pagination-wrapper. - Add the class
wch-paginationto that same element. - Publish in Webflow, then publish in WCH.
What WCH does
- Detects the
wch-paginationclass on the page. - Follows the Next and Previous links to fetch each paginated state.
- Writes a static page for each one, for example
/blog/page/2/and/blog/page/3/, and rewrites the pagination links to those addresses. - Crawls up to 50 pages per list.
Things to know
- Every paginated state adds pages to the build, so publish time grows with the size of the list.
- Pagination inside CMS template pages multiplies the page count by the number of items and can cause publishing problems. Talk to WCH support before adding it to a template page.
- When a page is republished or deleted in WCH, its generated
/page/N/children are updated or removed with it.