How to display stock levels at multiple locations on a product detail page?

Topic summary

A merchant seeks to display inventory quantities for individual locations on product detail pages, rather than showing a combined total across all locations. Currently, Shopify’s default behavior aggregates stock levels (e.g., 15 + 10 = 25 total).

Technical Limitations:

  • Standard Liquid objects (variant.inventory_quantity) cannot access location-specific data
  • Storefront API also lacks granular inventory location information
  • Admin API can retrieve this data but requires building a custom/public app with app proxy functionality and aggressive caching to avoid API rate limits

Available Solutions:

  • Several developers have created apps specifically for this purpose (Product Inventory Information, MultiLoca: Location Stock Info, Select A Store)
  • These apps typically store inventory data on their own servers via Admin API
  • Shopify’s native “local pickup” feature was mentioned but doesn’t fully address the display requirement

Special Use Cases:

  • One manufacturer needs to differentiate between “Finished Goods” and “Sub-Assemblies” inventory types, plus show “Built to order” status when both are depleted
  • Most existing apps focus on multi-store retail scenarios with maps/store locators rather than simple inventory differentiation

The discussion remains open with multiple merchants seeking similar functionality.

Summarized with AI on November 2. AI used: claude-sonnet-4-5-20250929.

Hey again :wink:

  • via vanilla Liquid objects - nope
  • via Storefront API and say JS - nope, Storefront API 5uck5 even more in that regard (I mean, it’s awesome otherwise, but for inventory it just says yep, got some, nope got none which is meh)
  • via Admin API - yup, but this is where you enter the realm of needing private / public app, app proxy to relay back to Liquid template and most importantly some VERY aggressive caching because with the API bucket throttling, hitting the API for every product page view would result in tears and very offensive language

Just my 2c!

2 Likes