Now that I've swapped my Windows Phone for a Nexus 4, I've discovered what a mess my Google Contacts are in once synced to Android and enabling Google+ to supplement contact data. It didn't matter too much on the Nexus 7 tablet, but on the phone it's more frequently used, so having the same contacts appear three times is a problem!
Note: The People app has a "join" feature that lets you merge contacts on the device; however this is stored on the device and not synced anywhere. With multiple devices (and the possibility of buying new devices/factory resets/etc.), this isn't an ideal solution, so I wanted to fix the problem at the source.
I did all the usual stuff (merging duplicates in the Google Contacts web app), but still found some contacts where I had 2, 3 or even 4 copies once they made it to Android! I spent many hours going through making tiny changes to contacts to figure out what was causing the duplicates, and I've listed all the things that bit me below.
-
"Email Contacts" in Google+ Circles
I found a number of circles that had "email" contacts in. When Google+ first launched, I just put people suggested by Google into circles. These often turned out to be non-Gmail email addresses; and the person subsequently joined Google+, making two contacts with the same name/email. The fix is easy; just remove all email contacts from circles. -
People with multiple Google+ Profiles
Because Google are pushing us into upgrading all Google accounts into Google+ Profiles (eg. you can't share pictures with Hangouts without this; despite it working in Google Talk), many people have two accounts (especially if they use Google Apps for work). To fix this; I just uncircled all but what appeared to be the "main" account for anybody with multiple. -
Google Contact records with different names to Google+
This one is pretty stupid. I had my parents named "Mum" and "Dad" in Gooogle Contacts, and some contacts as Mike and Matt that were Michael and Matthew in Gooogle+. This seemed to confuse the Google+ sync, and showed them as separate contacts in the People app. I couldn't find a fix for this; so mum and dad now have their full names in People :( -
Google+ syncs stale data!
This one bit me the hardest. Every time I thought I'd fixed the issue, dupes would reappear a few minutes later. I believe the problem was that the Google+ app cached circle data (so all my changes to circles for the above where stale) and then syncs it into People. To fix this, after each change, I did "Clear Data" on the Google+ app (in addition to the Contacts and Contacts Storage). -
Multiple profile URLs against a Google Contact
This is similar to a contact having multiple Google+ accounts. I found that when I'd added some contacts to circles, it had copied their profile URL into the contact record (under URLs, with a type of Profile). When I'd merged contacts, I ended up with multiple of these against the same record. This also caused the contact to appear twice! Fixing this was easy; I just deleted all profile URLs against all contacts, unless it was the only piece of information tying them to their Google+ profile (in most cases, I had the email address, so this was not needed).
After all these changes, I've cleared data/caches and forced syncs several times no both devices, and haven't (yet) seen any contacts duplicated again :-)