Pagination and Canonicals in Webflow

It looks like you’re already using Webflow’s automatic canonicals.
As of a year ago, that includes paginated querystrings which is odd to me, but technically fine, and might eliminate some SEO-tool complaints ( AHREFs, screaming frog… )

Webflow does not have a way to switch this off, either at the collection list level or the page level, though a page-level option would be nice. I’d personally prefer that the canonical ignores the pagination querystring.

That said, Google only uses the canonical as a recommendation anyway, and the fact that these paginated-querystring URLs are not in the sitemap makes it a “weak signal.” It’s a hint, not a directive, Google will still do what it wants to with your content.

In general, you want more pages in SERPs, not less, and I’d design your pages so that even the paginated ones have good value.

But if it’s really creating problems, a few options…

  1. Disable automated canonicals, and add them manually in the HEAD code of each page where you want them.
  2. Use a small piece of script to modify the canonical and remove the querystring. I’d made this inline, in the HEAD, just after the canonical is rendered. Googlebot will run simple scripts before indexing. Only affects Google, most search engines do not execute JS before indexing.
  3. Build a reverse proxy to strip those querystrings.

Remember though that those canonicals are just a suggestion to Google. If you really want these pages de-indexed the more important thing is to meta noindex those paginated-querystring pages.

You can build a detect-and-noindex pretty easily using approaches 2 or 3 above.

Here’s an example you can paste in your site-wide HEAD, that will create the meta noindex only when the *_page querystrings are detected. Obviously, test and use with caution.

<!-- Noindex paginated versions of this page only --> 
<script>
  (function () {
    const params = new URLSearchParams(window.location.search);
    for (const key of params.keys()) {
      if (key.endsWith('_page')) {
        const meta = document.createElement('meta');
        meta.name = 'robots';
        meta.content = 'noindex';
        document.head.appendChild(meta);
        break;
      }
    }
  })();
</script>