Contacts in the Browser

Contacts as first class objects in the browser

Update: The most recent Contacts release is 0.3. Read about it here

Today, we’re announcing the release of an experimental version of our new Contacts addon. With Contacts, we’ve enhanced your browser by making it aware of your online contacts and friend lists. You can then search and browse your contacts in the browser, and a website can ask for permission to access them through an API.

Screenshot of Contacts Services pane

The Service Import pane

Screenshot of the Contact View

The Contact View pane

Screenshot of E-Mail autocompletion


Screenshot of the Contact Permissions screen

Contact Access Permissions screen

Why is this information important? Address books and buddy lists have become an integral part of how we manage our relationships online. Your email addresses, twitter handle and openID are used in hundreds of ways as you connect, follow and share online.

Every desktop operating system, and hundreds of web-based service providers, has some way of representing “who-you-know”. Managing all of this information can be a lot of work. There are multiple copies of your data, and they are inconsistent and disjointed.

This information is also special, because it represents the boundary between “my data” and “your privacy”. When you disclose your friends’ email addresses on a website (maybe you want to invite them to a cool new site you just joined), you are trusting the website to keep that address private. At most sites today, you do this by sharing an entire contact list from some other website (say, your Yahoo address book), and don’t have much ability to restrict what information gets shared. The disclosure of your friends’ contact information is an important step: we think you should be in control of it.

How it works:

The Contacts prototype consists of these pieces:

  • A browser-based Contacts database that stays in sync with your address books (so far, it supports GMail, Twitter and Mac OS Address book)
  • A generic importer system for Contacts from desktop or web-based address books (so you can implement missing ones)
  • An email autocompletion feature, which demonstrates how the browser can auto-complete email addresses on any website. The autocompletion is performed entirely in the browser, without sharing the your list of contacts with the website.
  • A Javascript API that websites can use to access the Contacts database, with explicit user permission and filtering

Try it out!

There is an experimental, pre-alpha version of the addon available for download here.

Please be aware that this experimental code. If you are not comfortable with running software that can crash your browser, or cause you lose work, you may want to wait. Please read the Release Notes first.

This version has support for importing from Gmail, Twitter, and, on MacOS-based machines, the local Address Book. This list of importers is far from final — it simply represents three interesting classes of address book data. We’re going to keep working on the list of supported importers, and we will be documenting an open importer API to let everybody join in (and, of course, if a site uses an open standard like Portable Contacts, everybody’s job is much easier!)

Dig deeper

As with all Mozilla projects, Contacts is developed in the open, and we welcome participation from everyone.
Hack on the project sources.
Discuss on our forums.
Chat with us on IRC (, #labs)

Learn More

  • We’re indebted to our friends and colleagues at Mozilla Messaging, who have been working on address book integration in Thunderbird for years, and have the exciting new Raindrop messaging application in experimental development now. We are working on integrating the Raindrop project with the Contacts API!
  • The Portable Contacts initiative is an important effort to define a common data definition for contact data. We use the Portable Contacts definition internally for Contacts.
  • The W3C Contacts initiative is defining an industry-standard, cross-platform API for access to contact data in the browser. The spec is new and evolving, and now is the time to experiment and provide feedback!

56 responses

  1. Yvaine wrote on :

    It's a good idea.
    Would it work with outlook?

  2. Sebastian Halbig wrote on :

    Great AddOn! How about a button to quickly access the Contacts?

  3. Shah Khan wrote on :

    It's a good idea.
    Would it work with outlook?

  4. Romi wrote on :

    This addon is great. But I think the order of the name in the list must not always using last name. I tried to open the sqlite database, and from my point of view, it is not "culture-free". There are parts in this world that has no family name, like in my country (Indonesia). And I believe the Chinese has their family name comes first before given name.

  5. rodin wrote on :

    This addon is great. But when I'm trying to look at to the sqlite database, I don't think the table schema is not quite "culture-free". There are other parts in this world that doesn't have family name and given name. There are also another part of this world which family name comes first before given name. In Indonesia, only a few of them have family name. And they expect the name is ordered by first name.

  6. Bruno wrote on :

    Great and useful idea!

    Thanks again Mozilla

  7. JOHNMOSES wrote on :

    Thanks for your work .
    Great add-on to Firefox!

  8. Andy Mabbett wrote on :

    [Importing from other sources]

    If you parse hCard microformats as suggested above (code libraries are available) I could have a button or menu command to “add contacts on this page to my contacts”. Or you could work with Mike Kaply to add a script to his Operator extension to do that.

    This would allow users to add new contacts whose details they don’t already have in an existing address book or social network/

    1. mozilla_labs wrote on :

      @Andy Mabbett – yes, we're using Firefox's built-in microformats parser to handle HCard imports from profile pages discovered through Webfinger. Once we get the import API stable it should be quite simple to tie into Operator.

  9. Urbano wrote on :

    This is great.

    It would be great if can be integrated in Thunderbird!

    Is it possible? Taking in attention that the underlying engine is the same – GECKO?

    It is awesome, seeing Mozilla be in the front-line of innovation.

    I think this kind of services could bring even more people to use Mozilla products, and can help Mozilla to generate revenue, so it can reinvest on even greater and more useful innovations.

  10. Rin wrote on :

    I’m I missing something with regard to gmail imports? I have one contact in an account and it appears to be connecting just not picking up the contact.

    1. mhanson wrote on :

      @Rin: Hi, Rin – yes, we got a bug report for that. Looks like sometimes we miss the last record in a GMail import. We’ll get a fix in the next release.

  11. Cef wrote on :


    Contacts is really cool, and this makes out of Firefox a kind of online community like Facebook. What would also be cool would be a calendar, where the people would write up there events they are going at, and could recommend an event to other people, so Firefox would become to a really personal Browser, through which you can share your interests and leisure activities with your best friends.

    greetings Cef

  12. the-edmeister wrote on :

    How about if Mozilla Labs would work on all the unresolved print-related Bugs in Gecko?

    What good are all these bells and whistles that Mozilla Labs comes up with, if the basic product (Firefox) is so horribly broken when it comes to a basic feature like printing a web page?

  13. mbk28 wrote on :

    I’m french and for my contacts, there is problems with the รฉ or รจ….
    Why we can’t order the list of contacts?

    1. mhanson wrote on :

      @mbk28: Yes, sorry about the Unicode-handling bugs. We’ll get those worked out ASAP. And the capabilities of the contact viewer will grow over time — it’s obviously a very bare-bones system right now.

  14. Kirill Maximov wrote on :

    I think the API for such addon should be used by any web-site which allows to invite peers, colleagues and so on.

    Going to try to integrate the API to

    Great idea, thanks!

  15. Ganeshram Iyer wrote on :

    Wow. I didn’t realize I would need this add-on, this much. Thanks.

  16. Andrew Lewis wrote on :

    LinkedIn, Facebook, Metafilter, Exchange

    Those are my suggestions.

  17. Shrijit wrote on :

    Amazing Michael. Waiting for the stable version soon. You guys rock. I hope it doesnt take much memory, becoz I already have around 100 add-ons in my FF ๐Ÿ™‚

  18. beriberikix wrote on :

    How is the native-site support different then via the JS API? Is Gmail, Twitter and Mac OS address book just built via that API?

    Cool indeed!

    1. mhanson wrote on :

      @beriberikix: The short answer is that there are two APIs. The internal “importer” API, which can only be accessed by extensions, allows you to perform arbitrary network and OS-level operations to get information into the system. The external “content” API, which can be accessed by any web page, allows you to request access to contact data (and then starts the “permission” dialog, where the user can choose what access to grant).

      We’re working on a registry that will allow other extensions to add new importers dynamically, but that’s not in the first release.

  19. Mark wrote on :

    I have been using Zindus addon for Thunderbird to sync contacts between Google Apps accounts and Gmail and Thunderbird.

    Is this similar? Does it work with Google Apps or only Gmail?


  20. Will Peavy wrote on :

    Is integration with the Thunderbird address book planned?

    1. mhanson wrote on :

      Re: Thunderbird integration – we’ve been talking a lot with the Thunderbird team about how to make our systems work together. The Thunderbird address book system is a big, tightly-integrated body of code, and it would have been really hard to get it into a small add-on that people can just download and try out. We decided that it was more important to start getting feedback about the user experience and the Javascript API than to get the databases integrated at this point. We definitely want to get those two systems onto a common footing when possible, but I wouldn’t expect it until the design has settled down a bit.

  21. Yva wrote on :

    Why does Mozilla’s products (Contacts, Ubiquity,…) never interact with Thunderbird but rather with GMail?

  22. Andreas wrote on :

    First off, thanx for your work – great addition to Firefox!
    However I experience a little problem with the extension: In my portable FF I the contacts page remains empty – none are showing. Even though the extension reports 400+ contacts in its database. Also aut-complete works nicely. What gives?

    1. mhanson wrote on :

      @Andreas: Could you hop over to the mailing list and provide a bit more detail so we can hunt that down?

  23. keithy397 wrote on :

    Will the information source/database for the Contacts extension be accessible from multiple profiles? For instance, I can use ReminderFox on multiple profiles and the data is exactly the same on each profile. This is because I can share one individual file between the profiles. If that isn’t achievable, is there an import/export function?
    I know it’s early days but fantastic extensions (which I’m sure this will be, as far as I’m concerned anyway!) don’t always pan out if you’re a multiple profile user and you cannot share a centralised data source.

  24. newbeewan wrote on :


    What’s about unified the storage format of contacts between Contact, Thunderbird, eventually using weave to synchronize them ?

    Afaik, it will be a great feature !


  25. Andy Mabbett wrote on :

    P.S. If you emit hCard microformats from the contact and permission panes, then users will be able to export/ reuse their contacts elsewhere, using Operator.

  26. Andy Mabbett wrote on :

    P.S. If you also emit hCard microformats in the view and permissions panes, then it will make it easy for people to export/ reuse their contacts elsewhere, using Operator.

  27. Andy Mabbett wrote on :

    +1 the request to support hCard microformats

  28. RJ wrote on :

    I wish I could have Contacts not inside the browser, but as a separate program, like MacOS contacts. I don’t use the browser to read mail, I use Thunderbird. Separated programs for each task are, to me, the most important considerate.

  29. Richard Tibbett wrote on :

    May I congratulate you on this announcement.

    I look forward to the feedback of the developers with a view to incorporating this in to the W3C Contacts API over the coming months.

  30. Phil wrote on :

    This is an interesting idea. What scope is there for expanding the ways in which contacts can be found on the web? Have you considered microformat (hCard) or RDFa support? Leveraging these widely-available specifications would likely set Firefox apart from any other player in the market.

  31. Stefano Maffulli wrote on :

    I’d love Contacts to support Funambol, too. I can sponsor development. See my blog post for details

  32. Dave wrote on :

    Very cool idea guys. I have a question though: when you import contacts from another service — say gmail — does the browser address book stay synced when my gmail contacts’ properties update, or new ones get added? Or do I have to remember to update the browser address as well?


    1. mhanson wrote on :

      @Dave: Right now, Dave, you’d have to nuke your contacts database and re-import — which actually works pretty well, as a workaround. One of our current areas of work is to make the underlying database smart enough to let us refresh the data from a single service (i.e. Gmail) and keep all the linkages between services intact.

    2. mhanson wrote on :

      @Dave: Right now, you have to empty your contact database and re-import — which actually works pretty well, as a workaround. But one of the things we’re working on right now are some changes to the database schema to let us selectively wipe-and-refresh a service, while maintaining the connections between the data. Once we get that done, automatic updates of (say) Gmail account data should work well.

  33. TurboFool wrote on :

    I’m hoping you can also integrate this into your otherwise-fantastic Thunderbird client, as well. Its lack of native ability to sync with Gmail contacts, among others, has remained a limiting factor, and now that you’re getting into contact management it would seem reasonable to tie the two together.

  34. Johannes Ernst wrote on :

    I think having all contacts in a single column, perhaps in groups, is much easier to scan in the permissions screen. Also, that would not squeeze me in the bottom-right corner! ๐Ÿ˜‰

  35. bcj wrote on :

    Will this work in Thunderbird soon?

  36. Josh Bjornson wrote on :

    “Address books and buddy lists have become an integral part of how we manage our relationships online.”

    Don’t forget about on our mobile phones as well. As smart phones (iPhone, Android, Blackberry, …) become more prevalent, the availability of this information on your phone becomes more and more important. People want to email, text, post to facebook or maybe even call their friends from their phone!

    It would be great if all of this contact information was available across all of your different environments (phone, home computer, work computer, wii, …). I currently use SyncML to synchronize my contacts with my phone, but this is definitely not a complete solution.

    There are services that try to cover this (for example plaxo and funambol), but these are pay services and you have to put your data into their hands.

    I would love to have a central place where all my contact information is sourced from and hopefully this initiative is a step towards that.

  37. Glenn Brooks wrote on :

    Will .tel URLs be supported?

  38. wH1sp wrote on :

    It’s great, will it be coming to Thunderbird?

  39. ken wrote on :

    can this be used in google chrome browser? if yes, how?

    1. mhanson wrote on :

      @ken: This addon uses features of the local file and operating system that aren’t supported by Chrome’s extension model.

  40. jonathan wrote on :

    Does this also cover automagic detection and import of hCard info [and possibly other microformats] already present in web pages ?

    If not [and this is not an outrageous cry of dismay, just a genuine request for the thinking behind the decision] why not ?

    1. mhanson wrote on :

      @jonathan: Just because we haven’t got to it yet! I’d like to see integration with the Operator addon ( in the future as well. We want to make sure the underlying database has all the capabilities we want, then that the APIs are right, and then to pull in as much data as we can. The first couple importers are there to give us all a taste of how it could work.

  41. AM wrote on :

    It sounds great, but where can we find the javascript api documentation ?

  42. John wrote on :

    Fantastic. Will this always be Firefox-only, or is expanding to other browsers a possibility?

    Also, for those of us in China that can’t connect directly to Twitter (which is blocked in the PRC), some kind of proxy option would be much appreciated.

  43. Amit Banerjee wrote on :

    Looks great ! Why not integrate other email providers like Yahoo and Hotmail ?

    1. mhanson wrote on :

      We’d love to, Amit! We wanted to demonstrate a couple different kinds of service, and those were the ones that got done first. More providers are coming as we get them done.

      Our plan is to open the importer API up as a service, so that Firefox extensions can add support for new providers dynamically. We’re still working out the details on that, and will probably need to do some database work before it’s ready.

  44. Chicha wrote on :

    Mozilla is definitely going into the right direction with raindrop, weave and now contacts ! Congratulation to all of you for this amazing work !

    A quick question : do you plan a weave integration ?

    1. mhanson wrote on :

      We definitely intend to sync through Weave, Chicha, though there’s a lot more work to do yet. Until then, it works well if you sync your account information through Weave and then import contacts on each device.