I am currently working on an error prevention concept for a Windows Forms application.

When the user is going to delete an object, how important is it to tell what the exact consequences are? In my application, other data can be tied to this object, data that might or might not be present. E.g. a "person" object can have related "finance" data stored. Losing this data without knowledge can result in a lot of work lost.

How should I communicate this in a confirmation dialog?

1. Just being generic and rely on the user knowing what he is doing?

Are you sure you want to delete this person? [Yes][No]

2. Always assuming that there is related data? (without checking if there actually is)

By deleting this person you will also lose related financing and payout data. Are you sure you want to delete this person? [Yes][No]

3. Exactly stating what will be deleted

By deleting this person you will also lose the following related data: financing, payout. Are you sure you want to delete this person? [Yes][No]

5 Answers 5


My suggestion:

Delete John Doe?

You will lose his financing and payout information.

[Cancel] [Delete]

  1. Make clear what action will occur.
  2. Use verbs in the text.
  • I was thinking about invert the order of the Cancel and Delete. IMO, the most right one should be the more safe option. I don't remember what the Apple Guidelines says...
    – ArturoTena
    Commented Apr 1, 2015 at 16:30
  • 1
    A study conducted by the NNgroup shows that it doesn't matter which one is put first or last: nngroup.com/articles/ok-cancel-or-cancel-ok
    – UXerUIer
    Commented Apr 6, 2015 at 18:37
  • @Majo0od Interesting. TL;RD: "Deviate from the [platform UI] standard, and you'll easily cost users several minutes." I wish to see the methodology of the study, though. ;-)
    – ArturoTena
    Commented Apr 6, 2015 at 19:24
  • As do I. The NNgroup is highly reliable however. One of their founder (Don Norman) is considered the "father" of UX.
    – UXerUIer
    Commented Apr 6, 2015 at 19:50

By deleting this person you will also delete (lose) the following related data:
financing - x records
payout - y records
Are you sure you want to delete this person?
[Cancel] [Delete]

And I would make Cancel the default (enter key)


The answer, not surprisingly, is "it depends on the app". (eg how catastrophic is the loss, is it recoverable, how familiar are users with the app, and other parameters that are specific to your application).

But the good news is, you've already laid out the options very thoughtfully in order of progressive levels of disclosure, so you're 90% of the way there.

The only remaining step is to place yourself in the user's position and ask, what would I want to know to complete this task?.

How you answer that question depends on how much time, experience and budget you have. You can use your own intuition. You can interview users, or conduct tests. But when you feel confident that you can answer that question, I would bet the farm that the answer to what level of disclosure will become forehead-slappingly obvious to you.

  • I know that user testing is a powerfull tool, but it also needs time and effort and a good understanding of the user base. I was looking for a more heuristic, common-sense approach since error prevention is nothing new and many people most likely have know-how on it.
    – J_rgen
    Commented Mar 24, 2015 at 10:06
  • @J_rgen It's hard for an outside designer to provide a generic answer here. I'd suggest awakening the designer within you and imagining you are the typical user. What level of warning do you think you need before you confirm your deletion? Then, ask some members of your team the same question. You will find a comfortable answer without a lot of time or budget.
    – tohster
    Commented Mar 24, 2015 at 17:47

Loss of data is classified with the highest of severity when it comes to design issues. So only go with option 1 if you are 100% sure that the user will know what he is doing.

Option 2 will lead to frustration. The last thing you want to tell your users is that an action may have negative consequences. They'll immediately hesitate, and wish that you'd spell out said consequences. This will lead to a lack of user confidence.

Option 3 sounds good, but can you present it in a more natural way? When you visualize "the person", can you include snippets of the financial and payout information? That'll let the user know that the data is associated without making it sound mechanical.

Also, whenever dealing with data loss scenarios, the ability to undo is a must. People mis-click, or change their minds pretty often.

Good luck!

  • Thanks for your thoughts. Undo is incredibly difficult to implement and my application is not prepared for such a feature, so I don't really have that option. Thats the main reason why I need good error prevention. Does the wording in option 3 really sound mechanical? "Finance" and "Payout" are separate views in the application, so I though just listing them will suffice.
    – J_rgen
    Commented Mar 24, 2015 at 9:59
  • I have a pretty technical background, so I understand the hesitation to implement it. Take a look at the Memento Pattern, which really makes the implementation straightforward. Undo is one of those cases where the implementation cost is actually worth the usability gains.
    – V Maharajh
    Commented Mar 24, 2015 at 17:32
  • And concerning the mechanical tone - Perhaps your users are super intimate with those terms and I misjudged because I'm not familiar with your users. However I do like the idea using visualization instead of wording to show that the data will be included in the deletion; it seems more intuitive and friendly.
    – V Maharajh
    Commented Mar 24, 2015 at 17:35

I agree with Blam and would like to add to his response (I don't have enough cred to "Add a comment" yet).

If space is not a concern, and deleting is not a regular occurrence, you might consider a recycle bin to allow the user to restore the data. You need to be concerned with duplicates on a restore - you wouldn't want to restore a duplicate and wipe out a newer entry. There are a number of ways to handle this, and it's arguably more work than you've bit off here. That one time the user really needs to get that data back makes it worth the effort.

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.