Merchant Properties Defined
The UltraCart engine contains a table of merchant properties that allow for custom or dangerous behavior to take place within a customer's shopping experience. This table is quite large and is not published in its entirety for the very reason that they are either 1) usually not needed or 2) dangerous to be requested and played with, as they could cause conflicts or undesirable side effects during the shopping experience.
A merchant property is created out of need for a merchant to adapt their shopping cart experience to a business model that contains non-standard needs. This has been the case over the years that a merchant will fund custom development to add a specific feature to the UltraCart engine that is deemed to be unneeded by other merchants. When that happens, we create a Merchant Property to control the behavior rather than adding yet another field on another screen. It's the general consensus that we already have enough configuration options.
There are times the UltraCart engine is enhanced with powerful behavior that is used by a wide segment of merchants, but due to its nature, we control via a Merchant Property rather than exposing that behavior to a configuration screen. This protects merchants from possibly harming themselve since Merchant Properties can only be changed by UltraCart Support. Some examples of these deal with how SSL connections are made, etc. If the wronge combination of flags are set, customers might not be able to connect to a merchant's site at all.
It was the original intention to keep these Merchant Properties concealed for internal use, but the advent of the StoreFront themes have changed that. Now that all screens are completely configurable, these Merchant Properties are exposed to the theme developers. They are often seen being used with
if-then statements to decide whether a block of html should display or not. The docs for each template will indicate if a $form property is controlled by a Merchant Property.