Custom Pricing can operate in three different methods. This article outlines how Custom Pricing handles inventory for those using Variant Dependant Method (Version 1).
When using the Variant Dependant method, Custom Pricing works by creating an app variant for the selected product to represent the discounted price. If the customer is eligible, this variant is added to the cart instead of the products regular-priced variant.
Custom Pricing variants do not have their own inventory. Instead, they share the inventory of the regular variant. As long as the regular variant is in stock, the Custom Pricing variant is listed as N/A, which means it is in stock at an unlimited amount.
When inventory tracking is enabled for the product and a Custom Pricing variant is purchased, Custom Pricing reduces the inventory of the regular variant. When the regular variant is out of stock, the inventory of the Custom Pricing variant changes to 0.
Note Variants are not created in the Draft Order Method (V2) or Accelerated Draft Orders Method (V3). By default, the Accelerated Draft Orders Method is supplied on new installs of Custom Pricing. If you are unsure which method you are currently using, please visit Discount Methods and How to Switch.
Bring the Customer Pricing Variant Back into Stock
If you add inventory to the regular variant and you want the customer pricing variant to be listed as in stock, you need to Manually Sync Inventory from within Custom Pricing. This creates a trigger for Custom Pricing to go through the customer pricing variants and list them as back in stock if the regular variant has inventory.
Customer Pricing Variants are always Created as in Stock
Shopify doesn't allow variants made by an app to be created with stock quantity. When Custom Pricing variants are created they always have a value of N/A (unlimited amount) even if the variant that they're created from is out of stock. To match the inventory for the variants with the regular variant, you need to Manually Sync Inventory. It's a good idea to do this whenever a Product Pricing Group is updated or you create a new group.
Potential to Oversell
Custom Pricing handles inventory within the limitations of the Shopify Framework. Because of this, there is the potential for an item to be oversold, but it only happens once.
If only the base item is being purchased, inventory is being counted toward that variant inventory. Generally, if they are trying to buy more than what is available, the checkout page states that there isn't enough inventory and reduces the quantity of the product.
When eligible for special pricing, the customer is purchasing the Custom Pricing variant, the one where the inventory is N/A. Within Shopify, n/a means that the inventory is unlimited and not being tracked. Because that variant is technically in stock, Shopify's inventory validation doesn't kick in.
After the sale, Custom Pricing reduces the base variant inventory by the quantity purchased. Once the base variant has been reduced to zero, the Custom Pricing variant switches from n/a to zero, making the product unavailable for purchase. So until this occurs, the customer pricing variant is able to be purchased.
To better illustrate this, suppose a t-shirt has 3 in stock. When looking at the product within Shopify, it would look like this:
- shirt - 3 in stock
- shirt (wholesale) - N/A
If the first customer buys the shirt and nothing else, inventory is reduced as normal. The 3 now becomes 2.
The next customer logs into their wholesale tagged customer account and buys 2 of the shirt. What they are actually purchasing is 2 of the customer pricing variant (the N/A variant one). After the sale, the base variant is reduced by 2, down to zero. As the base variant is now zero, the customer pricing variant is automatically switched from N/A to zero until stock is re-added.
If instead of 2, the second customer purchases 3 shirts, the same process happens. Order proceeds through as they are purchasing the N/A variant that does not track inventory. After the sale, the base variant is reduced from 2 down to -1. The customer pricing variant is also switched from N/A to zero, preventing any further items from being purchased.
There are a couple workarounds. Something simple is showing the base inventory quantity on the product page, informing the customer how much is on hand. This doesn't prevent overselling, but the customer would know up-front what is available. Preventing overselling, even on customer pricing variants, could be done with some custom, theme-specific enhancements.