Cannot get product's catalog details or original price for products in a B2B Catalog

Short description of issue

When viewing a product in the online store that has been added to a B2B catalog, it is impossible to get the product’s/variant’s original, non-discounted price unless I’m missing something.

Reproduction steps

  1. Create a product catalog and add at least one product to it.
  2. Set the catalog to discount the products by let’s say 10%
  3. Using liquid in your theme, display the {{ product.price }}. From what I can see, you can only get the discounted catalog price. Also, in my tests, the compare at price for products in these types of catalogs, is completely removed (which is another issue I’m trying to solve).

Additional info

My specific use case here is I would like to show my dealers who are assigned to a product catalog the regular, consumer pricing for the products along-side their actual price so they know how much they are saving. I have many catalogs for each dealers since their discount varies by product type so I cannot simply hard code it in or show a standard dealer message. If I was able to retrieve the non-catalog price and compare at price, I could work with that. Alternatively, if there was a way to retrieve some sort of catalog object for the product being viewed that contained the discount amount or percentage, that could work too. None of this seems possible which feels like a feature other stores selling to dealers/wholesalers would want. Or am I missing something?

What type of topic is this

Feature request
General discussion

Hi @Jeff_Nelon

Could you store the retail/consumer price in a product or variant metafield , and reference it in your theme with Liquid. For example:

{% if customer.b2b? %}
  <p>Your price: {{ product.price | money }}</p>
  {% if product.metafields.custom.retail_price %}
    <p>Regular retail price: {{ product.metafields.custom.retail_price.value | money }}</p>
  {% endif %}
{% endif %}

This way, the retail price is always available regardless of which catalog the dealer is viewing. You’d need to populate the metafield (manually, via CSV, or via the Admin API), but it decouples the display price from the catalog pricing logic entirely.

@Liam-Shopify, great suggestion. I am trying to avoid having another area to add the price to since our inventory is quite extensive and ensuring it always matches the public selling price is a concern. But using the Admin API would be a possible way to automate this. Hoping there is a more native way of doing this since all the information I need is already in Shopify.

1 Like

@Liam-Shopify, I guess this has turned into a feature request then. I see two possible solutions Shopify could explore:

  1. Add a “product.non_catalog_price“ and “variant.non_catalog_price“ attribute that is only added when the product is viewed by a catalog user
  2. Create a catalog object that can be accessed via a product or user object. In the catalog object could be all the details we could then access to know what discounts are being applied to a particular product.

Just a suggestion.

1 Like