In a web application we have functionality that enables users to reschedule an appointment that they have previously booked, by clicking on a call to action/link on their summary page.

However, there are some business rules around this - we don't allow users to reschedule the appointment the day before their existing appointment after 12:00pm, so we need to inform the user they cannot change their appointment.

I see 3 options for handling error messages in this context:

  • When the user clicks the link, then show an error message
    • risks disappointing the user, as they expected to be able to change the appointment and now they can't
  • Show the error message on page load, so the user knows they can't change the appointment, and disable the link
    • risks annoying the user, as we are showing them a error message anticipating a journey which they didn't plan to do
  • Hide the link when the business rules are met (ie past the 12:00 noon deadline) and the user can't do anything*
    • user may be frustrated that they are unable to change appointment, and have no information to guide them as to why

Which approach, 1, 2 or 3 (or something else?) is the best user experience?

I am leaning towards option 2, but showing an 'error message' when only a proportion of users would be going to the page seems a bit counter-intuitive.

  • 3 won't work, what if a user logs in, goes to that page, then waits untul 6, for some reason?
    – Bálint
    Commented Apr 25, 2016 at 9:49
  • so you mean if you load the page at 11.59am, then at 12.01pm you click the link? interesting but you would just get an error message, like in scenarios 1 and 2
    – Midas
    Commented Apr 25, 2016 at 15:46
  • yes I do. I thought they're strict approaches, so you only choose one of them.
    – Bálint
    Commented Apr 25, 2016 at 17:34

7 Answers 7


As a general principle, I always think of error messages as inferior design/ UI, which in most cases can and should be avoided. If the user interaction triggers an error message, why would the UI allow users the option in the first place?


  • error message "password is not good enough" -> better: live indicator to signal password strength
  • error message "user name is taken" -> better: live indicator to signal availability
  • error message "please fill in required field x" -> better: disable save-button until all required fields are filled (and make it is obvious which fields are required fields)

In your case, I would prefer a variant of option 3, but with an info icon/ mouseover inline. Something like this:


download bmml source – Wireframes created with Balsamiq Mockups

To catch the (possibly exotic) scenario of users going to page with button, then wait for x time, then try to reschedule, you could still keep a validation with error message behind the button.

  • This is basically the same as my answer. Using notifications to explain to users what is going on and use validation errors as a fallback.
    – jazZRo
    Commented May 9, 2016 at 22:04
  • 2
    @jazZRo maybe you meant the same thing, but your answer is different. Without a picture, "notification" could mean a lot of things. In the increasingly important mobile space, one may think of slide-down or popup messages, not directly triggered by a user interaction. Also, our explanations for why the solution is preferred are different.
    – wintvelt
    Commented May 10, 2016 at 7:34
  • 2
    +1 The best thing to do is to help users avoid errors. This solution does that. Commented May 10, 2016 at 12:35
  • 1
    Makes sense - only problem is the hover state for mobile but that could easily be addressed
    – Midas
    Commented May 10, 2016 at 13:31
  • 1
    @Midas good point about mobile. I admit the (?) symbol with mouse-over is somewhat of a compromise. The (?) communicates "hover or click here for more info", but it does not communicate any info in itself. The alternative (e.g. button or link with text like "rescheduling policy") also has drawbacks: it takes up more space, and needlessly communicates a negative point to those users who do NOT care to reschedule...
    – wintvelt
    Commented May 10, 2016 at 14:04

Show a notification and eventually an error.

Keep your interface consistent and show the link. You can simply disable it and show a notification. It won't be annoying if it's friendly and informative. On the contrary, it would do your users a favor! It doesn't create misleading expectations with a working link or confusion by hiding the link all of a sudden.

If someone has not reloaded the page yet and sees the link enabled, than show an error when it gets clicked. This might not happen often but will make a better experience when it does.


I don't think you should ever present an error message until the user actually triggers one.

Eg I hate when sites trigger a validation error for a required field that I either clicked on or tabbed through but didn't enter an invalid value into yet.

Thus in your case I would only show a note/warning/error message if the user tried to pick a datetime that was before a given threshold.

In addition I've always favored providing a UI that helps the user by restricting options that would cause them to get stuck in an error condition. Eg if picking a date for a future event, the date field/calendar control should not even allow selection of dates before today.


I would opt to option 2, but without showing the message explicitly. Just disable the link and put information message into its title attribute, so that the user sees it upon hovering the link. In this way only those who did want to cancel an appointment would receive the information.

Additionally, you could place ? sign with a similar 'disabled' formatting, which can contain the same message within its title, lead to a page with explanation of business regulations, or both.


The most appropriate way in my opinion should be, disable the reschedule button and an informative message already written next or below the reschedule button telling user that the appointment cannot be rescheduled since the time left in their appointment is less than 24 hours, or whatever the condition applies.


I feel answer 2 is the best option but it needs some minor tweaks. With error message include the info on how and when can reschedule the appointment. So that user feel comfortable with the flow of changing appointment.


So if it's the business rule it's obvious to follow, but considering the JOURNEY OF USER here is what you can do:

First approach - Show them the link of changing appointment, cause I believe we are giving them the flexibility with this feature.

Reaction of user - The user has viewed the link, he is educated and is satisfied to know the same, so far.

Second approach - Allow them to click and move ahead so that they get aware of this functionality and memories the same; Cause some times it will be the right time when they will be allowed to reschedule the same.

Reaction of user - The user has experienced the functionality, and is happy.

Third approach - Allow them to click but display and error message so that they also get educated with the LIMITATION, I repeat with LIMITATION of functionality, obviously he/she might get disappointed but I guess an appropriate business rule rationale might help him/her to calm them selves.

Make sure all the education, either it's positive or negative, it's provided with an modal, where the user can read the content right in center of the screen and accept the same with OK button.

This is what I think might work well, but still you are the better judge.

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.