I’ve been thinking for a while about what would make for a great UI to merge 2 records together. For instance, let’s say you have 2 contacts in your contact list, and both are really one and the same. This happens quite a lot for me using Gmail’s contacts as Gmail automatically creates contacts based on people you correspond with, and since quite often friends have more than 1 email address that they use, I end up with “duplicate” contacts in my list.
Gmail unfortunately gives you no easy way to merge these records, and that got me thinking about the best way to handle something like this from a UI point of view, not necessarily just for Gmail (which of course I can’t change!) but for any system in general.
The concept that I’ve now come up with is a UI that lets you drag one record (e.g. a contact, a user account, etc.) from a list over on top of another record that you want to merge it with. Once you drop that record on top of the other, a modal box comes up asking you which record should be the master for the merge. Following your choice, the system then prompts you in turn for each field of data for those 2 records that will result in a conflict (or data loss, depending on how you look at it) giving you the choice to accept the master record’s data for that field, or to use the non-master’s instead. For fields where only 1 record has data and not the other, no choice need be made.
When all conflicts have been resolved, the system shows you a preview of what the final merge record would look like, which you can confirm or go back and edit any of the merge choices made earlier.
Sounds good, yes? Now we just need to build it!