E-commerce options: Product Attributes vs. Master Products
At their simplest, product attributes are a way of associating additional information on a line item basis to an order. Do you want the t-shirt in green? Would you like the trophy personalized with your initials? What is the name of the animal the medication is for?
I always think of product attributes as a form builder – adding a number of fields of different types to the “add to cart” form on the product detail page (I usually find attributes don’t work well when you can add to cart from a product list screen – there is seldom the space to display all of the necessary attributes for 20 or 30 products down the page).
I also add some basic functionality to allow given attribute options to affect price, weight and/or SKU, so the XXL shirt is $5 extra or the chrome plated dumbbells weigh an extra 5 lbs. This allows a lot of smaller merchants to create entire stores just using product attributes – especially if they don’t need integration with their back end inventory system (or don’t HAVE a back end inventory system!).
The biggest problem with using attributes is the lack of support for inventory/availability and the ability to tie into back end systems if they have attribute combination SKUs (one for green large t-shirts, one for red large, another for green medium and another for red medium). I have never seen a compelling implementation of product attributes where there is an easy way to track inventory and availability of green large t-shirts as opposed to red large t-shirts.
For smaller merchants without inventory systems I usually recommend using product attributes for implementing their catalogs as it substantially decreases the amount of data entry. Adding 500 products is fairly easy, but if each comes in 3 sizes, 4 finishes and 8 colors that is 3 x 4 x 8 or 96 versions of each products for a finger flattening 48,000 unique product records to enter. That’s more work than most of our end customers are interested in doing just to put what they see as a few hundred products onto the web!
However, if you have a back end inventory system with that data (and the descriptions can be made end-user comprehensible – often a problem with old B2B industrial supply databases) you get the ability to offer only a subset of combinations and to track inventory and sales (and to implement more sophisticated dependent pricing where the additional cost of a large is greater in gold than in silver). In those cases we often implement a “master products” pattern, allowing them to set a subset of product properties in a “master product” and to then associate each inventory line item with a single master product so you don’t need to reference an image or upload a detailed description for every single version of a particular product. This is particularly important where the back end system doesn’t have all of the information you want to display on a web page about each inventory item.
In Short, we usually recommend using product attributes unless you:
- Have good quality, end user readable data for every single SKU in an existing accounting/ERP/POS/inventory package or are willing to create such data.
- Need to track inventory at a SKU level
- Need to track availability at a SKU level (usually important when SKUs have a long re-order lead times or go permanently out of stock at the end of a season)
- Need complex dependent price or weight rules where the price of a SKU cannot be calculated as a base price plus a sum of premiums for each selected attribute
One side note. Sometimes you cas use a combination of product attributes and master products. Sometimes some items are inventory based and need to use master products whereas others are custom built and just need attributes. Also, sometimes you might want to add product attributes to SKU level items. For example, you may want to allow people to personalize a green XL shirt with their monogrammed initials.





As usual, I am in complete agreement with your assessment. There is often a disconnect between implementation and user models and having 48k products to enter and maintain is a monstrous pain and burden on the user.
One of the systems I work on is built for inventory control. The situation often arises where the customer has a different method of managing their inventory. Some have a well designed bar - code based tracking system in place already, and some haven't given too much thought to inventory management or automation of said functions. It was a big design pain to meet the diametrically opposed requirements and I don't have the feeling that my implementation was the cleanest.
In your case, You seem to be headed towards a master application generator that is capable of handling the differing requirements. I make sure to read each post because I think your ideas are well thought out and seem to mesh well with the functions and potential of ColdFusion.
Please keep the articles flowing
Dan Wilson
Thanks for the comment! As you pointed out my goal is to create a pretty broadly applicable software product line so I can solve most problems for the larger SME's that can afford and need more than just Yahoo! Stores or Miva (I know you can do some pretty cool stuff with Miva, but I get resellers choosing SystemsForge over Miva because it is easy to change absolutely anything with the system since it generates the object model from scratch).
Glad to hear you're enjoying the posts. Will make sure to scatter in some more "code" posts in case anyone is getting bored with all of the talk!!!
Best Wishes,
Peter
Working through this problem at the moment. I built a system last year which I am now reworking to allow it to interface to an external stock control system... Initially I looked at the way a few other systems dealt with product attributes and tried to improve on them. My roll-yer-own used the concept of "Option Groups" e.g. colour, "Option Values" e.g. red and "Product Options" - values applied to a product. To avoid finger flattening, we created a system that allowed a template based on the Option Groups to be applied to the product with one click. Then the various unwanted options could be turned off have a surplus charge added, etc. - we reckoned this was less work in the end.
This system works fine for the small shop, but when the system needs stock control and has over 1000 products it becomes very unwieldy.
As part if a rework, I am currently investigating the benefits of separate products for each SKU. This will probably help our situation tremendously as the client has just thrown in the requirement for items with colour variations to be displayed as separate products in the shop, whilst the size variations are displayed as options for the product... "Loosely coupled" products may help us to apply our own rules for display and also help us to do better filtering of products - check out Fig Leaves, which my lady says is an excellent system for choosing underwear...
It seems to be clothes that throw lots of rules out of the window, books, CD's, Wine and many other products all seem to be fairly self contained allowing simpler systems.
Thanks for the blog stuff, it provides lots of useful thoughts and help with improving my e-commerce skills. Now if only I could find one on Project Management to recommend to our clients :)
Glad the article is still adding value! And if there's anything else you'd like a posting on, I take requests (don't always fulfil them, but I take them!).
Sorry I didn't respond back in August - sometimes things get a little crazy and I miss comments :-<
And as for the project management blog, keep your eyes peeled as I'm going to best starting out later this month!
Good luck with your system!
Best Wishes,
Peter