Edited version of “Rolodex™ 67236 Rotary Business Card File” by Poolcode — Own work. Licensed under CC BY-SA 3.0 via Wikimedia Commons

Contact (mis)management

It’s 2015, and contact management sucks. How is this still true? Plaxo launched 13 years ago! Surely in that time someone could get this right.

I come to this problem with more than a passing familiarity with the issues. I worked at a tiny CRM software company from 2001 to 2004, and in that time had countless conversations with businesses about how to manage contact data for business gain. At Google, I was fortunate to work with and become friends with Joseph Smarr, the Plaxo co-founder who still thinks long and hard about the unsolved problems of contact management. The Google Contacts PM used to sit across from me. As the Google Profiles PM, I launched a few features designed to make sharing contact info about yourself easier, and had plans for several more before I moved to YouTube.

And yet. By the beginning of 2015, my address book had never been in worse shape. It’s easy to see why:

  • broken synchronization between devices over the years, which more than once resulted in duplicate contacts created, and some corrupted records
  • mal-formed contact records from long-abandoned apps, which left bizarre markup inserted into the Notes field of countless contacts
  • aborted attempts in the past to solve this problem by relying on other services to clean/merge contacts, only to abandon the effort — leaving me with incomplete fixes and no sense of which contacts were clean and which were out of date
  • out-of-sync copies of contacts — some in my corp account, others in my Gmail account

To be fair, it’s not all my fault. These days, three companies hold a considerable amount of contact data — Facebook, LinkedIn, and yes, Google — yet for various reasons they’re all walled gardens when it comes to contact info. If we’re friends on Facebook, you can look at my profile and see my cell phone number. If you choose to sync Facebook to your phone, you might even see my phone number on your phone. But open up Google Contacts? Unless you manually copy my phone number over, you’re out of luck.

The repercussions of ignoring my contacts for so long are many: my phone never had a current, comprehensive view of information I knew about people who mattered to me. I had no single source of truth about what info I knew — and applications that relied on contact data had incomplete access to info. My car, which syncs via Bluetooth to my phone, theoretically can display the names and numbers of my contacts. But because my phone was itself an unreliable resource, the car’s directory was rarely comprehensive enough to be of any use. I almost never used my phone’s Contacts app or Google Contacts — Gmail, LinkedIn, Facebook, or some combination of the three were how I found phone numbers and email addresses.


Each year for the last four years, I’ve picked a major aspect of my online life and resolved to make it better. In 2012, it was passwords and online security. In 2013, it was document/file management. In 2014, it was my family’s photos. This year, it was contacts.

First, an inventory of sources of contact info in my life:

  • 1,000+ contacts in my personal Gmail Contacts account
  • 2,000+ contacts in my corp Gmail account
  • 2,000+ LinkedIn contacts, accumulated over the past 12 years
  • 700+ Facebook friends
  • 1500+ Twitter accounts I follow
  • 200+ Google Ventures portfolio companies I interact with
  • 500+ corporate contacts at companies I interact with

After evaluating several products to help me tackle this mess, I decided on FullContact. I’m going to spell out what I did, because there were a few things I stumbled on early that could have saved time if I’d gotten right initially. But to start, I want to show the end state — this sketch helps visualize how the information flows.

In this illustration, “Gmail” = “Google Contacts”

A quick note: if you plan on doing this yourself, I recommend disabling any apps that sync to your phone’s contact store other than Gmail. (Twitter, Facebook, LinkedIn, Google+, Waze (!), and several other apps all wanted to update my address book. I don’t let them.)

  1. Added Gmail, LinkedIn, Facebook, Twitter, etc. to my FullContact account. FullContact created a “unified contacts” view from these sources, which merged dupes (including across sources), and also pulled in additional info from the web based on that contact’s info. (For instance, the individual’s email address will often discover other social accounts, find pictures associated with those accounts, and append it to that contact record.) Given the volume (nearly 4,500 contacts), I accepted all suggested updates and merged all dupes.
  2. Purged Unified Contacts of unnecessary records. There are a lot of LinkedIn connections who are no longer working in industries that are relevant to me, there are people for whom I have next to no contact info (nor do I need it). There are accounts I follow on Twitter that I don’t need to have in my address book. Over a period of a few weeks, I tackled a bunch of contacts at a time, eventually whittling my address book down to roughly 1,500 contacts who actually mattered.
  3. Added in contacts from other sources. I store info about Google Ventures portfolio founders and employees, along with employees at companies I engage with through our Partnerships program, in Salesforce. I exported the records of the contacts I cared about, and added them as separate address books in FullContact. (Note: not all of Salesforce’s column headers are recognized out of the box. I had to edit the column headers from the export file to match the FullContact CSV format; after that, all the data came through.) FullContact added these contacts to the unified contacts view, pulled in additional data, and merged those records with contacts I already had in my address book.
  4. Manually updated data. Both Facebook and Google have settings that let you share your contact data with your friends. In Facebook’s case, it makes it visible within the Facebook UI, and possibly visible (but not synced) on your phone. In Google’s, it will be visible when you look at the user’s profile or view their contact record — but it does not actually write that info to the contact record. Since I wanted a single source of contact info universally accessible wherever my contacts were viewed, I decided to manually update this info over time. As I progressed through step #2, I simply pulled up the individual’s Facebook or G+ account (in most cases, this was already linked from their contact record, thanks to FullContact) and copied/pasted info if it was visible to me.

With my contacts in a good state, they now sync bi-directionally with Gmail, and Gmail syncs bi-directionally with my phone. FullContact’s Chrome extension has dramatically improved my ability to work with my (clean!) contacts from within Gmail — I now have a fully searchable interface to my contacts from the inbox and from any message view. I can create new contacts directly from a message, and every time I read an email, the related contact record is displayed alongside the message — which makes adding updated info a snap. Unexpectedly, the most useful feature of the Chrome extension is the ability to create Google Calendar entries directly from a contact record — something I’ve ended up using a dozen or more times per week.

The final piece of my contact management puzzle is business cards. (Say it with me: it’s 2015. How are business cards still a thing?!) FullContact has a great app for both Android and iOS that scans business cards. Instead of trying to OCR the card (something that’s easy to describe, but given the many fonts, font sizes, creative layouts, etc. — something that never seems to work in practice), FullContact sends the scanned card to human transcriptionists. I’ve scanned 30+ cards in the past week and had zero errors. Within 20 minutes of the card scan, the contact’s info is in my FullContact account, synced to Gmail, and pushed to my phone.

With each new contact — whether from the Chrome Extension in Gmail, a scanned business card, or a contact added on my phone that syncs back to FullContact — FullContact does what it can to find new information about that person, suggests a merge into an existing record if one exists, and appends a profile pic if it can find one. This all happens automatically, in the background, without any intervention from me. Given how bad things were just a couple months ago, this is a radically better setup. I no longer dread looking at my address book!

As I’ve gone through this exercise, I have a few tips:

  • Share your contact info with those you trust. On Facebook, click ‘update info’ on your Profile and choose who to share with. (More info here.) On Google, go to your profile, click ‘About’ and under Contact Info click ‘edit’. You can choose to share as much or as little as you like, and you can choose which people can see it. (More info here.)
  • Simplify which apps have the ability to write to your contacts app on your phone. Though there’s some convenience when multiple apps are populating contact info, it can get all but impossible to identify where a particular (often wrong) piece of information is coming from. In my setup diagrammed above, I know that the info in FullContact will always be authoritative.
  • Disable Gmail’s contact auto-creation. Go to “Settings | Create contacts for auto-complete” and select “I’ll create contacts myself”. Otherwise, every time you reply to an email, a new (mostly empty) contact is created.
  • If you choose to use FullContact similar to how I set it up, pay particular attention to the Sync Settings for each address book. You will want to decide which setting is preferred before you start editing your Unified Contacts view — otherwise you will run the risk of having the address book re-populate the Unified Contacts with contact records you’ve previously removed.

There are other apps that can help get your contacts under control. (Lifehacker has a nice collection of its contact management articles over time here.) EverContact in particular is pretty slick: give it access to your Gmail inbox, and it will scan incoming emails for what appears to be updated contact info. If it sees new info (a new email address, a changed phone number, etc.) it will update your contact. For a fee, they’ll even crawl past email (up to 5 years’ worth) to find any info buried in emails that can improve your address book. As a rule, I don’t give third party services access to my work inbox, so EverContact doesn’t work for me — but if you’re willing to give access to your inbox, it offers a lot of promise.

Going forward, some periodic housekeeping should keep my contacts in good shape. Roughly once/month, I will export any new info from Salesforce so that I have copies in my contacts, and FullContact will handle the dupe reconciliation and info updates. As I send and receive email, I glance at the contact record in the FullContact Chrome extension to see if there’s new info to update. FullContact’s support of tags offers some intriguing possibilities for more actively managing my contacts, but I haven’t spent much time thinking about that yet.


P.S.

Throughout this process, I kept a running log of bugs, feature requests, and miscellaneous thoughts on how this could go better. Mostly so I can get this out of my head and stop obsessing over it, here they are:

  • Advanced search: I would love the ability to search for attributes (such as ‘all contacts without an email address’, ‘contacts missing a title’, etc.) so I could group contacts that need updating
  • Exception identification: it would be great to identify contacts I’m not yet connected to on LinkedIn, or people in my address book who have Twitter accounts who I’m not following.
  • Power-user front-end to contacts: the current presentation of contacts in FullContact is a single column of contacts that takes up less than 20% of the screen real estate. Would love to have more contacts viewable on screen at a time (either in list form or in card form).
  • In-list navigation is top-down or bottom-up, with no ability to get anywhere in between except by scrolling. And FullContact doesn’t load the entire contact list into your browser’s memory, so you’re stuck scrolling ahead by just a dozen or so contacts at a time. The bigger your list of contacts gets, the more frustrating this gets.
  • Latency: FullContact’s front-end could use some performance tweaks. Often there is a enough of a lag between a click and the corresponding action happening on screen that you notice. And leaving the app open for long periods of time seems to make the app progressively degrade. (Reloading the page helps.)
  • Address book sync: I have the LinkedIn and Twitter address books set to update existing contacts. From the unified contacts view, I removed a ton of Twitter contacts that don’t need to be in my address book. If I now change the sync setting on Twitter to add to unified contacts (as I follow new people on Twitter, it would create new contacts), it’ll re-add all of the contacts I previously deleted. Feels like there should be an option to respect prior deletions and only add new contacts.
  • Simplified Salesforce import: Given my setup, FullContact is now my single-source-of-truth for my own contact data. But for a variety of things I do for work, I want to keep track of interactions in Salesforce with contacts that I’ve added into FullContact. At the very least I can sort contacts by date added and export the most recent contacts… but it’d be nice to streamline this. (And I’m under no illusion that this is in any way simple — each new bi-directional sync endpoint you add is at least adding exponential complexity to the setup.)

Thanks to Erik Heels and Brad Feld for their consistent recommendations to give FullContact a try. I knew how bad a state my contacts were in, but not what it would take to clean them up. FullContact is not without its limits, but I’ve been impressed with the team’s responsiveness and the app does what it does well. Here’s hoping they have a long and successful road in front of them!

Disclosure: I have worked at Google in a variety of roles for the last 8 years; for the past 4 years I’ve been at Google Ventures. We are not investors in FullContact or any of the other companies mentioned here — I just really wanted to solve this problem.