Restricted Products
Restricted Products is a feature that allows you to prevent customers from purchasing (or even from seeing) certain products, at a very granular level without having to resort to creating custom price books for each customer. Approval to see and buy can then be granted on a per customer basis.
What can you do with it?
In situations where customers need approval to purchase, you can:
- Hide a restricted product from a Store
- Show a restricted product but not allow customers to purchase it
- Show a restricted product but hide its price
- Show a restricted product with only some of it’s product data
In situations where a customer DOES have approval to purchase, you can:
- Show the restricted product
- Limit the quantity the can purchase (or allow unlimited)
- Limit the date range during which they can purchase
- Approve or reject orders of restricted products in Salesforce based on the customer’s approval
How do you configure it?
Creating a Restricted Product
Restricting Products works via the Pricebook Entry
object and each of the following fields will need to be added to the Pricebook Entry page layout:
Restricted
(Checkbox)
Display If Restricted
(Checkbox)
Restricted Text
(Text(128))
A product will be restricted if Restricted
is ticked. If this is the only setting set, then the Product will not show on the Store if this Pricebook is in effect (assigned to Store or an Account etc).
If Display If Restricted
is also ticked, then the product will be restricted but will show on the Store. If will be able to be found via search and customers will be able to view the product’s page.
If Restricted Text
is provided, it will be shown instead of the product’s price. This is how you can show a restricted product but not disclose it’s price.
Creating a Placeholder Product
What are Placeholder Products?
Placeholder products, are products you can configure to show instead of a restricted product, so that you can show some generic details about the product when the customer is not approved to purchase it.
To configure a placeholder, create a product that can otherwise be visible on the Store (eg active, master, available on etc) and then assign it to the restricted product via the Product2.Placeholder For Id
lookup field.
When the restricted product is visible on the Store, but the customer is not approved to purchase, the placeholder will show in place of the restricted product.
Without approval to buy a restricted product:
- Visiting the URL for the restricted product will redirect to the placeholder
- The placeholder itself will not show up in any search results unless standing in for it’s restricted product
- The restricted product is included in the searchable product list, so searching for it will work, but the placeholder will be shown in the results instead
- The placeholder is excluded from the searchable product list, so searching for it won’t work
With approval to buy a restricted product:
- Visiting the URL for the placeholder product will redirect to the normal product
- Searching works as above
Approving a Customer to Buy a Restricted Product
The other side to restricting products, is allowing certain customers to purchase them. That is done via the Permitted Restricted Product object.
Permitted Restricted Product:
Account
(Lookup)
Product
orProduct Category
(Lookup)
Store
(Lookup)
Use the Account_Id, Product_Id and Store_Id to configure who this approval applies to, for what Product or Product Category, and on what Store.
Approved From
(DateTime
)`Approved Until
(DateTime)
Approved Quantity
(Number)
Unlimited
(Checkbox)
Supply the date range for when this approval is valid. Customers will not be able to purchase products using this approval, outside of these dates.
Configure whether the customer can purchase a limited number of items using Approved Quantity
, or whether they can purchase an unlimited amount via the Unlimited
checkbox.
In general, these values should be set when creating the approval and not be changed later, although you can. For instance you could reduce the Approved_Until__c date to make the approval end faster, or reduced the Approved_Quantity__c etc. It is up to you to make sure you don’t put it into a weird state, although if you do it will only really affect your reporting, it won’t incorrectly affect the purchasability on the Store.
Purchased Quantity
(Number)
This field keeps track of how many items have been purchased already. As this number increases, the remaining quantity the customer can purchase goes down (unless it is unlimited). You shouldn’t change this number, as it is a calculated value.
How do you manage it in Salesforce?
When a customer makes an order for a Restricted Product, your order processing team will be able to see whether the customer has approval to purchase the item (in the ordered quantity) before it is shipped.
If you need to process a refund, you should follow your own internal refund procedure, however for restricted products, you will also need to void the items on the order so they are not registered as actual purchases. This will free the items up for that customer to re-purchase should they still have approval.
Tracking Restricted Product Purchases
When an order is placed for a Restricted Product, our system creates a Permitted_Restricted_Item__c record for each affected OrderItem. This allows your staff to see what orders have been placed for restricted products and to modify them as needed. These records are what drives the incrementing of the Permitted_Restricted_Product__c.Purchased_Quantity__c field.
Voiding a Purchase
If the order is declined or cancelled, you will need to manually void the corresponding Permitted Restricted Item
record. Doing so will result in a reduction of the Permitted Restricted Product.Purchased Quantity
field.
Table of Scenarios
Options | Results | Restricted? | Display if Restricted? | Approval? | Placeholder? | Restricted Text? | Product Shown | Can Buy? | Price Shown |
TRUE | FALSE | FALSE | N/A | N/A | None | NO | N/A |
TRUE | TRUE | FALSE | TRUE | N/A | Placeholder | NO | Placeholder Price |
TRUE | TRUE | FALSE | FALSE | PRESENT | Master | NO | Restricted Text |
TRUE | TRUE | FALSE | FALSE | BLANK | Master | NO | Normal Price |
TRUE | N/A | TRUE | N/A | N/A | Master | YES | Normal Price |
FALSE | N/A | N/A | N/A | N/A | Master | YES | Normal Price |
Back to Documentation