Core Issue:
Developers encounter a 50-entry limit when accessing metaobject values in Shopify themes, despite having 140+ entries. Standard iteration only returns the first 50 items.
Working Solution:
Wrapping metaobject queries with Liquid’s {% paginate %} tag successfully bypasses the limit:
Use {% paginate shop.metaobjects.[type].values by 250 %} around the for-loop
Multiple users confirm this works for accessing 88-350+ entries
Critical: Perform any {% assign %} operations after opening the paginate tag, not before
Important Caveats:
This is technically a hack — Shopify’s official documentation doesn’t list metaobjects as supporting pagination
The theme editor flags pagination sizes above 50 with warnings
Some users report caching issues when reusing pagination snippets across files (resolved by hardcoding directly in the section file)
Shopify support has confirmed pagination is not officially supported for metaobjects
Status:
Despite being undocumented and unsupported, the pagination workaround reliably functions in production environments. Community requests Shopify officially address metaobject access limitations.
Summarized with AI on November 1.
AI used: claude-sonnet-4-5-20250929.
I’m using a custom metaobject to display location pins on a google map. There are 140+ entries, but doing the following, I am only getting the first 50 returned.
I have not been able to find any documentation about this. Is there some kind of pagination or limits on how many metaobjects one could access in a theme?
Are you certain this actually works? Like .. you actually tried it and observed a page with more than 50 metaobjects on it?
Asking because: I tried paginating mataobjects when the feature was first released and it definitely did not work. The liquid interpreter only ever gets 50 values no matter what pagination/filters are applied in the liquid code itself. Had to resort to hacky workarounds like back-end cron scripts making graphql calls to retrieve all metaobjects and save them in a separate place (postgres or json file) to paginate manually.
So it’s possible you’ve discovered a newly added feature that isn’t yet documented? At the time of this writing, the docs for the liquid paginate operator make no mentions of metaobjects in the list of 11 other supported entity types like products, blogs, etc..
I would love to know if that’s the case, as this would make metaobjects actually usable for me, and let me get rid of those hacky workarounds.
… took around 20 hours to code from scratch (first full section I’ve ever made) + $50 USD (for Matrixify to import past reviews as metaobjects), and now I don’t need to purchase a paid reviews app when Shopify sunsets the old-school free review app.
Does this only work in custom sections or is there a way to it to work with the standard multicolumn section? If so, do I simply add this to the multicolumn.liquid? I am trying to output a metaobject list of company distributors to a page.
Thanks for any direction you can offer this newbie!
Hi! Could you share the code snippet for the pagination links below all of your reviews? I visited your page and am struggling to understand how the pagination is actually working without adding any parameters in the URL. Are you using javascript for this?
Thank you for any help you might be able to offer!
I’m using a large amount of Javascript to make this work (different coding snippets that I found from various tutorials/help-docs). Honestly, it’s probably not the most efficient way to do things, but I’m just happy that it works.
I’m not fluent in Javascript, so I don’t know exactly how it’s working (and I probably wouldn’t be able to troubleshoot something custom that you’re working on), but here’s the link to the primary resource that I referenced for it:
If you wanted the full set of coding that I’m using for my reviews section (so that you could try to reverse engineer it, or else just copy it completely), then you could make me an offer privately (my contact details are in the description of this post). The ‘reviews’ section as a whole (html + css + javascript) is over 125k characters … again, I just played around with things until it started to work.
no worries, i can repurpose the link you sent over, thanks!
my main issue is that i am using a shopify liquid snippet for the pagination of a metaobject and for some reason when i click on any of the links, shopify will cache the pagination object and only load the contents of the first page.
i know it’s some weird caching issue because the pagination temporarily works every time i update the liquid file. as soon as i click any of the pagination links again or hit the refresh button, it stops working.
my thought process was that if i implemented this through javascript, like in your example, i can somehow bypass this weird caching issue.
every time i echo out the raw paginate object, it either spits out PaginateDrop or # when it’s cached.
actually i just fixed it, apparently i can’t reuse my pagination bar snippet when it’s used for a metaboject because shopify will cache it. i hardcoded the snippet directly into the same section file where the paginate object is created and now it stopped caching the output, i won’t need to use javascript for this anymore
just coming back to say that this actually was not resolved. Shopify does not support pagination for metaobjects so anything that currently works, even if partially, would be a hack.
@eballeste_hero I found this docs too hence I did not try it at first. However, after finding this discussion I tried it, and it resolved my issue - thanks a lot @trevorkerr !
In my case I have a metaobject with 88 entries (each has 3 values, one of it are referenced products) and over 350 products spread across them.
I just wrapped my original for-loops in paginate by 250 & endpaginate so I could access the metaobjects.values after the first 50 iterations and it worked perfectly fine.
Thank you. I can confirm that this hack works, although there is no explanation why. It is definitely a hack, as the editor draws a yellow line under the “250” and notes “Pagination size must be a positive integer between 1 and 50.”
It is absurd that there is no other way to access values by index over 50. Shopify, please fix this.