In the application I am developing, the user cannot make a new product if they have not first created at least one category and one supplier to associate the product with.

My question is: how should I indicate this to the user if, for instance, they try to create a new product without doing this first? Should I simply grey out the 'New Product' link with a tooltip?

  • Is having a category a prerequisite for going into the product creation flow, or just for creating one? Usually if you have something like a category to pick, it is useful to allow creating a new category from the product creation flow anyway. This often happens with things like labels and tags. E.g. how new labels can be created in a filter creation flow in Gmail, or how new folders can be created when adding a browser bookmark. With that, having an existing category is no longer a prerequisite.
    – Frax
    Commented Sep 29, 2022 at 13:02
  • Paul, I did something similar many years ago. The UI looked like a train line with stations, each of which was one step in the process, and the user could see only those options that were valid at that station. Commented Sep 30, 2022 at 4:36

6 Answers 6


Good question, and I think actually a very important interaction to get right. Here are some aspects that I think play into it:

Preliminary Thoughts

  • Self-Efficacy: We humans, in general, want to be able to influence the world. Not being able to do something we think we should be allowed to to (like clicking a button) feels frustrating.
  • Getting Told What To Do: Remember being really motivated to clean your room right up until your mom told you to do it? We also react very allergic to any kind of "you have to do this" - including "please do this action first"
  • Developer/User Mental Model Mismatch: You, the designer, has a certain model of this interaction in your head - from what I gather it might go something like

"Products have suppliers and categories, that's just how to organize it best. Since the former two are parent classes, obviously you would create them first - now how do I communicate this..."

while a user might go

"Huh, interesting app. Let's see if I can run my business here. Let's put Dual Blade Shaver X356 in here as a test. What are categories? Don't care yet - just want to put in a product. Why doesn't this work?!".

This is quite a dangerous mismatch!

(Please don't take this as a personal attack of any kind - I am kinda brazenly pretending to know your thoughts to make a general point)

  • Danger of Bouncing: I presume this is a scenario that would be encountered mostly by new users, who might have just discovered your app. If it's an online SaaS, any of the above frustrations might lead to the user just leaving never to return, or at least to form a bad first impression!

Some General Guidelines

So with all this in mind, you can certainly do something like greyed-out and tooltip. However, I would urge you to be very gentle and obvious about why! You need to explain everything in a way that makes sense to the user (not just: "my app needs it like that") and buffer any frustration (like StackExchange with their cute little message when you attempt to do an action you are not allowed to). Also you should then design your flow in a way that the user usually already has a category and supplier when encountering the New Product button as to mostly avoid this situation wholesale. Doable, but hard.

A possible elegant solution?

Now what I would do if I understand your app correctly and if it's technically feasible:

Do not disable the button in any way. Just let the user click it, and then just have a dialog going like Hey! Let's create a product. First, enter the category of the product.... You see where I am going? So you kinda just have this optional two screens when the parent objects in question do not exist yet, but for the user it feels like they are just creating a product - because they don't care how your database works ;).

Now I know this may be a bit of pain depending how your backend is setup, but I would call it a very elegant side-stepping of the whole problem from a UX perspective...

  • 5
    Thanks so much for the answer! I've implemented this as a little process that guides the user through the category and supplier creation pages first with messages explaining the process, and it's definitely feeling like the right move! :D
    – Basil
    Commented Sep 27, 2022 at 9:33
  • Cool! I think it might be valuable to update the post with info on how it goes once you have some usage data - might be some interesting learnings :)
    – Kolja Sam
    Commented Sep 27, 2022 at 13:21
  • 1
    Welcome to ux.stackexchange @koljapluemer, what a nice start in this community. Chapeau! Commented Sep 29, 2022 at 21:10

If the user is unaware that they need to create a category first, disabling the 'new product' link is probably going to confuse or frustrate them. Remember also that tooltips will generally not show on touch devices until the control has been tapped. This is generally not very discoverable, as it requires interaction. You'll want to avoid having your new users play a guessing game on how your application works.

If your application requires them to create a category first, then you could consider:

  1. Allowing them to visit the 'new product' page, but show a notification there and show a quick link to the 'new category' page.
  2. Mentioning this in the docs.
  3. If your design affords it, consider allowing the user to add a category on the product page.

Hope this helps.


I've implemented something a bit like this. The New product screen requires selecting (at least) one category from the list of available categories, and a supplier from the list of available suppliers. There are also links "create a new category" and "register a new supplier". (If these are privileged operations, instead supply instructions on what business process is required to get them created).

So the user isn't told that he can't do it. He's instructed about the related entities which have to exist before a new product can exist.

You might want to add special hand-holding for the case where there are no pre-existing categories or suppliers to choose from, lest the user thinks that the software is broken (i.e. won't show him what it says it's going to).


Just put "Unknown" or "Other" or "Uncategorized" options. Especially for category, probably some people can go their entire user experience with no categories for products, especially if you can provide robust text search. Supplier seems like it might be more reasonable to be mandatory, but what are people going to do if a supplier goes out of business? Do they have to delete the product at that point? What if they don't know the supplier yet? Do any of those things make sense in your software?

  • Your points about supplier are key! Typical stuff in reality. :-)
    – Pablo H
    Commented Sep 28, 2022 at 16:15

Is there customer business requirement for mandatory categories and supplier information?

If so, then proceed with asking for information enough to create the new category in the "new product" dialogue. Perhaps a field "Category" with help text "Please write the name of a category for your product. When you have existing categories, they will also be possible to select here". And some suitable combo widget that can both select existing objects or create new ones.

Otherwise, if it's not a requirement: How about making it non-mandatory? If you make a general app, perhaps some users would like to organize into categories, some won't. Some users would like to use your app for supplier information, some perhaps have other procedures for that.

If you make this non-mandatory, it will be easier to start using your app, and users can enable more features and structure if and when they need it. You could also have an option in the customer-controllable settings "require categories", if they would like to impose such order.


Depending on the business process, and on how complex the implementation may be, perhaps you can make such rules more flexible.

For example, what do you need the category and the supplier of a product for? Listings? You can write "n/a". For stock? For payables? So perhaps instead of validating all the rules beforehand, some can be checked case by case.

For example, a product without supplier cannot be stocked. So when stocking, if there are products without suppliers you can add a button or panel that lists products wihout suppliers; or in a search, the product appears but cannot be added and you explain "because no supplier".

Or, you cannot sell products without category because category is used for tax purposes (say). So when trying to add to invoice the user gets info about the problem (no category) and solution (create category, add product to category).

Of course, having "invalid" products may cause its own load of problems, so you should consider the tradeoffs. :-)

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.