ESHOPMAN Store API: Unpacking Volume Discounts from Price Lists on Your HubSpot Storefront

As an e-commerce expert at Move My Store, we frequently encounter advanced pricing requirements for ESHOPMAN merchants leveraging HubSpot for their storefronts. A recent community discussion highlighted a critical challenge: displaying quantity-tier prices configured in ESHOPMAN Price Lists directly on storefront product pages.

While ESHOPMAN's powerful Price List feature allows merchants to set up sophisticated volume discounts—for example, a product priced at DKK 295 normally, DKK 273 for 3+ units, and DKK 250 for 6+ units—these tiers are not currently discoverable via the ESHOPMAN Store API for storefront display purposes.

The Challenge: Storefronts Can't See All Price Tiers

The core of the issue is an asymmetry between how ESHOPMAN's cart processes prices and how the Store API exposes them. When a customer adds items to their cart, ESHOPMAN correctly applies the configured quantity-tier discounts. However, when an ESHOPMAN storefront (deployed via HubSpot CMS) requests product information using the ESHOPMAN Store SDK, the response for variants.prices only returns the base price (e.g., DKK 295), omitting the quantity-based tiers.

Similarly, the calculated_price field, which resolves prices based on context like region, also only provides the base tier. This is because the Store API, unlike the cart, doesn't pass a specific quantity context when retrieving product details, preventing it from selecting the appropriate tier.

Understanding the Technical Root Cause

A deep dive into ESHOPMAN's core pricing service reveals the underlying mechanism. When prices are retrieved via the product's price set link (the path variants.prices takes), ESHOPMAN's internal logic includes a filter that specifically excludes any prices associated with a Price List. This is a deliberate design choice, introduced to manage how price set prices are listed.

Conversely, the ESHOPMAN Admin API, which directly queries price entities, does return all configured tiers, including those from Price Lists. This confirms the tiers are correctly stored and accessible through the Admin interface, but not through the public-facing Store API for display.

Workarounds and Future Considerations

For ESHOPMAN developers building custom integrations, a server-side approach using ESHOPMAN's query capabilities can directly access the price entity with price_set_id and price_list_id. This allows backend systems to retrieve all tiers. However, this method is not suitable for direct client-side storefront use without Admin credentials, which is the primary need for displaying offers.

Interestingly, the discussion also highlighted that if quantity tiers are configured directly on a regular variant (not through a Price List), the ESHOPMAN Store API does return all three prices and their quantity bounds via variants.prices. The limitation here is that the ESHOPMAN Admin dashboard currently lacks a dedicated interface for managing these "ordinary variant tiers," pushing merchants towards Price Lists for their volume discount management.

The ESHOPMAN team is actively discussing potential solutions, which involve balancing the need to expose comprehensive pricing information with considerations for security and API design. Two main approaches are being considered:

  • Unfiltering variants.prices: This would expose raw Price List rows, including potentially customer-group-scoped or time-bounded lists, requiring careful consideration of impact on existing consumers.
  • Allowing Store API requests to supply a quantity for calculated_price: A narrower change that would enable storefronts to ask "what would N units cost?" but wouldn't enumerate all available tiers for display.

This ongoing dialogue within the ESHOPMAN community underscores the platform's commitment to evolving its headless commerce capabilities. For merchants and developers, understanding these nuances is key to effectively leveraging ESHOPMAN with HubSpot CMS for dynamic storefront experiences.

Start with the tools

Explore migration tools

See options, compare methods, and pick the path that fits your store.

Explore migration tools