How should a certain action be disabled, when the user has run out of necessary permissions to perform that action?

Specifically, I am designing a search engine where each search may take up to an hour (after it has been run, it can be an hour before the results are ready). User can run only a certain amount of concurrent searches, based on the type of account that they have.

For example: User has an account which allows 2 concurrent searches (for other accounts this number can be anywhere from 1 to 5). So, the user will run one search, then another and then they can't run another one, until the first one is over.

My question is, when the user hits this limit, how should the search be disabled?

I have come up with three possible solutions, and am unsure which one (if any) is the best way to do this. I welcome alternatives:

  1. Disabled (grayed) action button, with a tooltip on hover, explaining why it is disabled

    • Pros: Unobtrusive, lets user still fill in the form
    • Cons: Not very obvious and users might not read the tooltip on hover. Might be annoying that after the form was filled, user can't run the search
  2. Overlay with an explanation and a possibility to upgrade account. (It is over the form)

    • Pros: Obvious and a possible solution (upgrade). Stops right away (before user has filled the form)
    • Cons: Intrusive and kind of annoying. Also feels like an error has occured.
  3. After action button has been pressed, layover with an explanation
    • Pros: It lets user fill in the form. Unobtrusive. Can disappear when searching is available again (a nice visual cue)
    • Cons: 'Fails' only after action button has been pressed - might be annoying.

Please note, that some users may have a concurrency limit of 1 search, meaning that this 'disable' will happen often. Also note that this is the main functionality of the app.

Here is an example of 2nd option. Example

2 Answers 2


Of your three options, I prefer the second because it adds an upgrade option, empowering the user to solve the search availability issue.

Alternatively... Create a button for each concurrent search that your user's current account can perform and replace each one with a confidence animation when its search is running. Something like...

Concurrent Search Example

  • Do you think that option 2 might feel like an error has occured (like, something went wrong kind of error)? I've heard that a couple of times, so I'm kind of worried about that.
    – zanderle
    Nov 13, 2014 at 21:04
  • Possibly, but I think that could easily be handle by the imagery and text on the popup. I wouldn't immediately think error if a popup containing a big smiley face appeared, happily thanking me for using the service and suggesting that an upgraded account would serve me better. Nov 14, 2014 at 16:50

I think it depends on if this is the primary purpose of the app or not (or at least the page). If it is, then in my opinion it SHOULD be obtrusive and I vote for option #2.

Regarding #3, I don't see allowing user to enter text as a "pro". You're allowing a user to think they're doing something only to present them with an error afterwards. It's wasting their time. On the other hand it could help generate revenue if the user wasted their time and the only way to proceed is to pay.

I would have a prominent counter in the header that shows their remaining searches. Color it red when they are down to their last available search.

  • What I'm worried about, is that it might seem like an error, if it's obtrusive... Thoughts?
    – zanderle
    Nov 13, 2014 at 10:42

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.