Infinite Pagination: the smartest infinite scroll for CS-Cart
Infinite scrolling that never loses your shopper. Products load as shoppers scroll, with no page numbers to hunt for and no full page reloads. But the real difference shows up when a shopper opens a product and comes back: the feed is right where they left it, not back at the top of page one. Shoppers who land in the middle of your catalog can scroll up to the beginning, the address bar always points to the page in view, and Google Analytics 4 keeps counting every product shown. It is the ultimate infinite scroll for CS-Cart, built around how people really shop.
What sets it apart
Scrolls up, too
A shopper who arrives from a search engine straight on page 5 can simply scroll up: page 4 loads, then 3, all the way to the beginning of the list. The products they are looking at stay perfectly still while pages are added above. You will not find this in a typical infinite scroll add-on.
The Back button brings them back
The address bar follows the shopper down the feed, so every link can be bookmarked or shared. After viewing a product and pressing Back, the shopper returns to the same page and the same spot in the feed, which keeps working in both directions. This fixes the biggest complaint about infinite scrolling.
Your analytics keeps counting
Every load sends a Google Analytics 4 view_item_list event to the dataLayer with the products that just appeared, their prices, and their real positions in the list. Infinite scrolling usually hides those views from your reports. With this add-on, Google Tag Manager sees them all.
You set the pace
Choose endless scrolling, a button only, endless scrolling that starts after the first click, or the balanced default: a few pages load by themselves, then a Show more button. You decide how many pages come before the button, and the same rule works when scrolling up. Shoppers never fall into an endless feed and can always stop.
Phones, desktops, or both
Turn infinite scrolling on for mobile only, where tiny page numbers are the hardest thing to tap, and keep classic pages on desktop. Or the other way around. On the other devices, shoppers get the standard CS-Cart pagination.
Fast on a feed of any length
The next page starts loading before the shopper reaches the end, so there is no visible pause. Only the list is requested, not the whole page. On very long feeds, distant pages can be released from the page and brought back instantly when the shopper scrolls back, so the browser stays fast.
See it in action
Two things shoppers notice right away: they can start anywhere in your catalog, and they always know where they are.
Arrive anywhere, scroll both ways
The address bar follows along, so the link always points to the page in view.
Opened a product and pressed Back? The shopper returns to the same page and the same spot in the feed, with scrolling still working both ways.
The end of the feed, out of the box
Default mode: after the first page, three more load by themselves, then the Show more button appears. The regular pagination below always matches the last loaded page.
Sample category with 136 products, 24 per page. The button uses your theme’s own button style.
Infinite Pagination vs. a typical infinite scroll add-on
| Infinite Pagination | Typical infinite scroll add-on | |
|---|---|---|
| Loading previous pages | ✓ Scroll up from any page back to page 1 | Not offered |
| Address bar and Back button | ✓ Address follows the feed, Back returns to the same spot | Rarely supported |
| “A few pages, then a button” | ✓ You choose how many pages, works both ways | Fixed behavior, if offered at all |
| Progress for shoppers | ✓ “Showing 96 of 136” counter and page separators | Rarely shown |
| Google Analytics 4 | ✓ view_item_list event on every load | Not offered |
| Device targeting | ✓ All devices, mobile only, or desktop only | Not offered |
| Very long feeds | ✓ Keeps only as many pages in the browser as you set | Not offered |
| Keyboard and screen readers | ✓ Real button, focus moves to the new page, status announced | Rarely mentioned |
Everything you get
Loading
- Four modes: infinite scrolling, infinite scrolling after the first click, a few pages then a button, or a button only
- After the first click, the feed loads by itself in both directions, and it remembers that choice when the shopper comes back
- You choose how many pages load before the button appears
- Previous pages load when the shopper scrolls up, and only then, so clicking a page number never makes the page jump
- Products in view stay in place while pages are added above
- Loading starts early, at a distance you set as a share of the screen height
- A clear retry button if the connection drops, with the regular pagination shown as a backup
Address bar and Back button
- The address follows the page in view, with SEO-friendly URLs like /page-4/ or ?page=4
- Any link opens the right page, and the feed grows from there in both directions
- Pressing Back after a product returns the shopper to the same spot in the feed
- The browser history is not flooded with pages, so Back leads where the shopper came from
Clear for shoppers
- “Showing X of Y” counter under the feed
- Page separators: a line with the page number, a plain line, or none
- The regular pagination stays under the feed and follows the current page, or hide it with one checkbox
- Page links stay in the markup for search engines, even when hidden
- “You have reached the end of the list” when everything is loaded
Look and feel
- The button uses your theme’s primary, secondary, or text button style
- Loaded products fade in smoothly
- No animation for visitors who prefer reduced motion
- All storefront labels are translatable
Works across your store
- Category pages and search results
- Blog posts, discussions, and vendor storefronts
- Grid, list, and compact list product layouts, each handled on its own
- Limit the add-on to product lists if you prefer
- Add to cart, quick view, comparison, and wish list work on every loaded product
- Changing filters, sorting, or the layout restarts the feed cleanly
Analytics
- GA4 view_item_list event for every loaded page
- Product ID, name, price, position in the whole list, and the list name for each item
- Separate lists for categories, search results, blog, and vendor storefronts
- The first page is not counted twice
- A dedicated event for non-product lists such as the blog
Accessibility
- A real button that works from the keyboard
- After a click, focus moves to the newly loaded page, so keyboard users continue from there
- Loading status announced to screen readers
- Page separators exposed to assistive technologies
Clean and lightweight
- Does not override a single template, so it gets along with custom themes and other add-ons
- The script loads only on pages with a paginated list
- If a list layout is not recognized, the add-on steps aside and the regular pagination stays
- A simple JavaScript hook lets theme developers add their own list types
Settings at a glance
Everything is set on one settings page, in three groups. No code, no template edits.
| Loading | What it does | Default |
|---|---|---|
| Loading mode | Infinite scrolling, infinite scrolling after the first click, a few pages automatically then a button, or the Show more button only. | A few pages, then a button |
| Pages loaded before the button appears | How many pages load by themselves before the button returns. Hybrid mode only. | 3 |
| Load previous pages when scrolling up | Lets shoppers who arrived on a later page scroll up to the beginning of the list. | On |
| Devices | All devices, mobile only, or desktop only. Other devices keep the regular pagination. | All devices |
| Apply to | Product lists only, or every list with the standard pagination: blog, discussions, vendor storefronts. | All lists |
| Appearance | What it does | Default |
|---|---|---|
| Hide the regular pagination | Removes the page numbers from under the feed. Left visible, they give keyboard and screen reader users another way to navigate. | Off |
| Show the “showing X of Y” counter | Shows how many items are loaded out of the total. | On |
| Separator between pages | None, a line, or a line with the page number. | With page number |
| Button style | Primary, secondary, or text button from your theme. | Primary |
| Fade in the loaded items | A short fade instead of items popping in. Turns off by itself for reduced motion. | On |
| Start loading in advance | How early the next page starts loading, as a percentage of the screen height (0–200). | 20% |
| Advanced | What it does | Default |
|---|---|---|
| Update the address bar and restore the position | Keeps the address in sync with the feed and brings shoppers back to the same spot after Back. | On |
| Send a dataLayer event on every load | Pushes view_item_list for Google Analytics 4 and Google Tag Manager. | On |
| Keep no more than this number of pages | Releases distant pages on very long feeds and restores them instantly on the way back. 0 means no limit. | 0 |
Premium add-on. Fair terms.
One license covers one CS-Cart installation, with every storefront it runs.
Lifetime license
Pay once. No subscription, no renewals.
6 months of free support
Included with every purchase.
Any number of storefronts
Multi-storefront setups at no extra fee.
Multi-Vendor included
No surcharge for Multi-Vendor. One price, however many storefronts and vendors you run.
Compatibility
- CS-Cart and Multi-Vendor 4.19.1 to 4.21.1, including CS-Cart Ultimate
- Works with the standard Responsive theme and themes built on its markup
- Admin and storefront texts in English, Russian, and German
- Works in all modern browsers, on desktop and mobile
- Upgrading from version 1.0.1 keeps your settings: they are carried over to the new loading modes automatically
Every page number is a chance for a shopper to stop browsing. Infinite Pagination removes that friction without taking anything away: the Back button still works, the page links are still there, and your analytics still sees every product. Install it, pick a mode, and let your catalog flow.