Variants, Composite Items, and... Configurable Items with Ad Ons?

Variants, Composite Items, and... Configurable Items with Ad Ons?

So I had to review a few of these concepts, and felt like there may need to be some clearer distinction made between the abstractions that we use to create associations between multiple items in inventory - sometimes with selections available to the customer, sometimes bundling multiple items into a single SKU, either because something's been manufactured or discounted at a bundled price, or simply for marketing purposes and how we'd like to group associated items on our product pages..

In this regard, I think there's a lot of room for confusion and that it may be helpful to others if I share my personal understanding of these concepts, and invite others to enhance or correct as necessary.

Hopefully this will help provide a better understanding as to how and when these features can or should be used in order to achieve both better inventory management and product presentation within your store.

As such, the following are how I've come to understand define the following concepts that can easily be confused.  These are - Item Variants, Composite Items, and Configurable Items / Add Ons (the last is not currently a Commerce feature, but one that I would propose should be, and is functionality within several other ecommerce systems.  More on that below...):

Variants
A Variant generally should be in item that comes prepackaged from a supplier, usually with its own dedicated UPC or SKUs. It's a variant because it may be conceptually grouped along-side with other very similar items with variations that pivot on one or more specific attributes. Some of these attributes might be size, color, flavor, etc. Each one of these attributes will multiply the number of SKUs by the number of new options within that attribute. (It's worth mentioning that you don't need to keep all of possible the variants SKUs if, for example, all colors are not being ordered for all sizes of a particular item - in which case the automatically generated SKUs can simply be deleted).

The inventory for any variant is increased when it's received and decreased when it's sold.  

Presentation at the point of sale is such that all variants are presented on a single product page.  Selecting the appropriate attribute options on a product page allows the customer to ultimately arrive at the specific product variant they wish to order.  

It's important to emphasize that selecting a variant on the product page is a "deductive" process during the point of sale, whereby each attribute option that is selected further hones in and reduces the number of remaining variants until the last attribute is selected.  This makes it much easier for your customer to quickly and specifically identify one variant among perhaps hundreds of other similar items without having to wade through pages of items.

Composite Items
A Composite Item is a pre-bundled "composite" of multiple SKUs. (Note the word "PRE-bundled"). This feature is really meant for those who bring in various pieces, parts, and components (which may or may not also be sold individually), but are assembled into AND presented as a single bigger product - hense the name "Composite Item".

As such, from a presentation standpoint, the Composite Item is a single SKU that you sell to your customer.  Behind the scenes, a composite item comprises of the pieces and parts initially received and inventoried as other SKUs.  The magic here is in the bundling.  Once bundled into a composite item, the inventory quantities are automatically reallocated reducing the on-hand counts all of those parts that are used to manufacture the Composite Items.

Composite Items are quite useful to you if you are a manufacturer in order to help you maintain and track your on-hand parts, make adjustments, and see if you're running short on this part or that for one product or another.

Generally, Composite Items are planned for in advance, and are usually bundled, allocated, and typically prepackaged well before the sale.

Composite Items are meant to define in your inventory a finished product from the parts that it's made from. This provides a means for automatic parts allocation for the purpose of assembling components into finished goods with the needed visibility and reporting that you otherwise would have to deal with manually in other painstaking ways (e.g. maintaining multiple inventories, one for manufacturing, and one for sales, etc.).

As such, the Composite Items feature allow manufacturers to have both the parts and the finished products coexist happily in one place and allocate the former into the latter as needed. It's inclusion into Inventory (and now into Commerce) has likely been a big deal for many, and a pretty significant accomplishment on Zoho's part.  Considering that that EDI can also available be integrated with Zoho Inventory, this is a pretty serious level of functionality for manufacturers that would otherwise be difficult to rival at Zoho's price point.
  
Configurable Items / Add Ons
There is however a third concept however, which I believe is very much desired, but is not yet included as part of Commerce, and oddly I think it's the arguably a feature that would probably be fairly east for the Commerce group to implement, being that it shouldn't be contingent on the changes to the Inventory Schema shared by the other Zoho apps.

I also think that it's something that is one of the more desired features, but not identified as such because it gets confused for and/or grouped in with certain other features when it's really quite a separate feature all together, for example... by that I mean that Variants and Composite Items are often being mistaken by users for what should really be considered as an entirely different and separate feature - that being the "Configurable Item with Add Ons".

The feature I'm describing here is used and implemented frequently on websites selling computers.  You sell the "bare-bones" system, which might be the enclosure and the motherboard, then you have a dropdown box to select what CPU, another dropdown box allows you to select the RAM, and another for the power supply.

It's important to understand that this is not a deductive selection (like it is with variants) in that each of the selections under each of these drop-downs is not honing down to a singular SKU.  Nor is it a Composite Item in which a single SKU is the composite of many that were preallocated into a final product.

Rather, this is an additive process at the point of sale, enabling the customer to configure their own system by selecting from multiple SKUs that are simply associated to a base "Configurable Item".  It's a function of presentation, and requires no preallocation of inventory.

It's important to understand that the base Configurable Item can be sold by itself, but is presented with optional "Add Ons".  When Add Ons are selected, pressing the "Add to Cart" button ads the base Configurable Item, along with the SKUs (and relevant Quantities, which should also be optionally presentable) of the other associated "Add On" items.

So in this way, there is never any sort of preallocation required for Add Ons within a Configurable Item.  It's only the relationship between the Configurable Item and its available Add Ons that needs to be established (e.g. perhaps within the Configurable Item's product page editor) that determines that such "Add Ons" be presented within the product page. 

Since this is only a function of presentation, the SKUs for the individual items (the base Configurable Item plus the Add On items) are still maintained within the cart, with no need to package them for the purpose of how they're seen from the perspective of the customer.

One other important distinction in this regard might be with respect to discounting.  Composite Items (not Configurable Items) can also be presented with package discounts.  Applying package discounts to Configurable Items might not be so straight forward if desired.

Anyhow, hopefully this will provide better understanding for those who are trying to strategize how to setup their inventory, and also serve as a proposed implementation that Zoho might consider in order to add in some sort of "Configurable Item / Add Ons" capability within the product page templates and be manageable on the back end via the product page editor.

This can theoretically be accomplished using custom fields and some modification to the Face product template files, but it would be nice if this functionality was part of Commerce itself without needing to hack it in.

Thanks,
Bryan
    • Recent Topics

    • I cannot receive emails.

      I need help, I've tried everything but I still can't receive emails from other people. I can send it but I can't receive emails, When I created the email it was all in order and suddenly I can't get emails from anyone anymore.
    • Incoming Gmail Email Not Coming Into Zoho

      My outbound email from Zoho is working, but when people respond to the email, it's not coming back into Zoho. I can see it when I'm in Gmail, but it's not in Zoho.
    • Não foi possível enviar a mensagem;Razão:554 5.1.8 Email Outgoing Blocked.

      Preciso de ajuda não consigo enviar emails,conta recen criada
    • Average Costing / Weighted Average Costing

      Hello fellow maadirs. I understand Zoho Books uses FIFO method of dealing with inventory costing, but do you guys have any plans to introduce average costing? We indians need average costing. It's part of our culture. Please. I beg thee. Thanks.
    • Credit note

      By mistake I issued credit note in Jan 2025 for the invoice related to Dec 2024. Now I want to delete this credit note but anable to do so. Need help in this
    • How to query for Deals record based on Pipeline?

      I want to query for Deals records that matches a specified Pipeline using a Deluge function. When I call zoho.crm.searchRecords("Deals","(Pipeline:equals:" + myPipeline + ")"), I get this error: { code: 'INVALID_QUERY' , details: {...} , message: 'Invalid
    • CRM formula field help

      Hello! i was hoping to get some help with a formula i'm creating within a module. I'm looking to make a formula that changes based on a date field but based upon the present date. This is the formula i have so far: If(Now() < ${Instructors.Start Date},
    • Change to copy/paste functionality in Deluge code editor

      Recently there was a change to the Deluge code etidor where it now inserts backslashes into strings automatically when copying/pasting strings with double quotes, it's a nightmare to have to go delete all these. Is it possible to toggle this on or off?
    • BIN Locations

      Hi, I’m new to Zoho inventory and unless Im missing something, I cannot find BIN locations anywhere in ‘items’? please tell me it’s there somewhere?!? Thanks
    • BANK FEED - MAYBANK , provider from YODLEE IS NOT WORKING

      As per topic, the provider YODLEE is not working for the BANK FEED. It have been reported since 2023 Q3, and second report on 2023 Q4. now almost end of 2024 Q1, and coming to 2024 Q2. Malaysia Bank Maybank is NOT working. can anyone check on this issue?
    • Create a custom button to modify custom fields in zoho Inventory

      I am needing a script for two buttons, 1. Button will add todays date to a custom field named cf_sent_to_sov 2. Button will mark a checkbox or unmark a checkbox field named cf_parts_ordered I have been trying to figure out deluge but have not got anywhere
    • Canadian payroll

      Hello ZOHO, is any updates on when payroll for Canada will be available?
    • Default reminders on Emails

      I have seen that it is possible to set, for each email, a reminder when the email remains unresponded for some time. This is very useful, so useful that I would like to set it for all my emails, by default. Because an unanswered email usually requires
    • in zoho assist I would like to temporarliy go into view only mode

      During a zoho assist remote support / remote control session, I would like an option to turn off control, and go into view only mode. Then later, turn back on control, all within the same session. (Many other remote login apps have this feature.) For
    • Zoho notes list issue

      Hi team, Suddenly my extension is not working and I could not find the extension in my marketplace list anymore. Extension version deprecated This version of the extension is no longer in use. Please update the extension and try again.
    • Assignment Rule: Immediate Ticket Assignment to Agents Upon Shift Start

      Dear Zoho Desk Team, I hope this message finds you well. Currently, when the option to assign tickets to offline agents is turned off, agents who come online during their shift have to wait for about 30 minutes before any tickets from the queue are assigned
    • Change email template depending on answer from form

      Is it possible to set up the following in Zoho Desk: When a user submits a ticket via the Zoho Help Center's form, they can select an answer from a dropdown field. In this example, the dropdown options are 'Option A' and 'Option B.' If a user selects
    • Kaizen #171: FAQs on COQL API

      Hello all!! Welcome back to another post in the Kaizen series! In this post, we will address some of the most frequently asked questions about Zoho CRM's COQL API from the Zoho CRM Developer Community Forum. COQL API Query API lets you query for records
    • Issue with Date Placeholder Formatting in Ticket ID Customization

      Hello Support Team, I'm experiencing an issue with the date placeholder formatting in Zoho Desk's Ticket ID customization. Specifically, when using the `{{DD}}` placeholder for the day in the prefix or suffix, the output displays the day as a single digit
    • Time Field

      Good Day, I have a question, when I save a draft and reload it. Why does the time field format keeps goes from hh:mm to hh:mm:ss? Is there a way I can force it to load to hh:mm only? I have tried example = totime(input.TimeField, "hh:mm") in the -created
    • Feature Req - See imap emails in Timeline tab of a deal

      In many other CRMs such as pipedrive and hubspot, when you are looking at the timeline of a deal you can also see snippets of emails that have been sent or received and then click to view the full message. This gives users a fast way to catch up on EVERYTHING
    • HOW TO: Searching a thread (email body/text) with a custom function, allowing filtering and specific actions

      We are still trialing out Zoho at this time, but have found a major expected feature to be missing - the ability to search within the text of an email for automation/workflows. NOTE: You need to create a connection for zohodesk under settings -> Developer
    • Partnership Proposal for Supporting Number Porting Services in Singapore

      Dear Zoho Representative’s, I hope this message finds you well. My name is Honelito Gilos, and I represent Borderless Hub Pte Ltd (Singapore). We are a Telco here in Singapore specialising in providing seamless number porting services, and I’m reaching
    • Tip #2: Prefill forms automatically with existing Zoho CRM data

      How to automatically prefill a form with existing Zoho CRM data? Prefilled forms can be useful when you want your prospects to view and confirm their data, and in a wide range of other situations. In Zoho Forms, we prefill the fields with the values from Zoho CRM using the Zoho CRM field. What is a Zoho CRM field? A Zoho CRM field acts as a two-way communication channel, by sending data to Zoho CRM from forms and fetching information from CRM into Forms. The field will look up data from your CRM
    • Transform Your Customer Support with AI-Powered Chatbots in Zoho SalesIQ

      Ever wondered how some companies seem to have superhuman customer support? Let's uncover their secret! In the digital age, customer expectations are skyrocketing. Did you know that according to McKinsey, 75% of consumers expect a response within five
    • Quickbooks conversion and Internet sales

      Hello, we are considering converting from Quickbooks enterprise to Zoho Books and using MonotorZ for our mrp needs. Today we import Internet sales under a single customer with multiple ship to addresses. We want to maintain the detail in CRM for marketing
    • How to add two columns in Zoho forms

      I would like to have two columns in Zoho forms. How can i enable two columns?
    • When creating Sales Order / Estimate via API, the line item Tax Code does not get pulled in.

      I'm creating Sales Orders via API from CRM but it does not pull in the "Tax Code" I've read within the forums that this should be done automatically but it's not happening. Not sure if it's a bug or by design? Anybody else know? Should we be adding the
    • Chart showing schedule

      I want to be able to create a chart for everyday to check and which of which driver is available on the timeframe. Here's my table Name City Day Start Time End Time Driver1 Medicine Hat Monday 11:45 AM 4:45 PM Driver 2 Medicine Hat Tuesday 11:00 AM 7:00
    • Quais são os maiores desafios que você enfrenta ao implementar o Zoho CRM?

      Olá, pessoal da comunidade Zoho Brasil! Sou parceiro autorizado da Zoho e, ao longo do tempo, tenho notado que cada implementação de CRM traz desafios únicos, dependendo do segmento de negócio, das metas da empresa e até da familiaridade da equipe com
    • 2025 Just Got More Exciting for Developers!

      Hello, Greetings to the Zoho Books Community! As we step into the New Year, we're thrilled to roll out something truly special for our Zoho Finance enthusiasts – the "Zoho Finance Developer" Community! This is your exclusive space to connect with fellow
    • Error in executing On user input script

      I'm having problems with this  this script : ; Tipo_list=List(); Tipo_rec = Tabla_factores[Periodo == input.Periodo_anos.toLong()]; Tipo_list.addAll(Tipo_rec.Clase_credito.getall()); for each Clase_credito in Tipo_list { Tipo_credito:ui.add(Clase_credito) } Error in executing On User Input script of Periodo en años. Error. Error in executing Fetch Record task. Unable to fetch Tabla_factores and update variable Tipo_rec. Error in evaluating the criteria : Error. Error evaluating NUMERIC expression
    • sync data from outside of zoho plateform

      hii team , i am creating a platform using zoho platform, i want to sync the data from out side of the platform like people-soft, but i am not able to sync the data , if it is possible , then suggest me how can i do it , i want to sync data from other
    • How to add a Data Updated As Of: dynamically in text?

      I need to add a "Data Updated As Of" in the dashboard to show when was the last date the data was updated. I tried to create a widget but it does not look really good, see below. Is there a way I can do this through the text widget and update it automatically
    • Automate search in customer list and easilly initiate email

      Hello and happy new year ! I have a customer list with name, telephone, emails and some criterias like location, type of customer, etc. I want to search that form to extract part of it, for example all customers that have a location of "Québec city" and
    • "Select All" item in the context menu

      In the Client on Android, there is a “Select all” item in the note’s context menu. There is no such item in the PC client. Can it be added in future versions of the client?
    • Syncing Leave Calendar With Shared Google Calendar Does Not Remove Canceled Leaves

      Our organization has each employee sync their Leaves calendar with a shared Google calendar, but am I right that if an employee cancels a Leave in Zoho that it will not be removed automatically from the shared Google calendar through the same sync m
    • Is it possible to display formulas in cells instead of calculated results?

      I want to export my Zoho sheet as tab separated text without losing the formulas. In excel, I would use the settings Options - Advanced - show formulas in cells instead of their calculated results then save as tab separated values. How do I do this in
    • Creator Simplified #11: Create a custom button to download files

      Hey there! This time, let's see how to create custom buttons to download the files uploaded in the file upload field. Sample use-case A training app has a module that provides the materials for all the available courses. Students can click on the corresponding
    • Zoho vault uses only password to unlock not a TouchID

      TouchID works when normally openning app but when called from keyboard while browsing or trying to log to another app it shows only password option to unlock. This behaviour is only on iPad Mini witch latest 18.2OS
    • Next Page