Data Portability: Developer Preview of the Contacts Collection

The Blockstack team is excited to bring you the developer preview of Collections in the form of the Contacts Collection. In this preview, you can try out the Collections libraryblockstack-collections with alpha versions of blockstack.js and the Blockstack browser. Collections is a step towards true data portability on Blockstack.

The Collections feature allows different Blockstack apps to use the same data from a user. For example, a user’s contacts data (phone numbers, email etc.) created by one app could be read and shared by many different apps. Authorization and permissions to a data are granted through the existing onboarding flow, but future updates will allow for users to do direct management.

To learn more about the Contacts Collection and try it for yourself, see our Working with Collections (Preview) documentation.

  • NOTE : We are working on improving the Contacts Collection data schema. The schema may change between now and the production release of collections and backward compatibility to the preview will not be supported.

We want your input on the design

Blockstack is actively looking for feedback on our Collections design: please give us yours. Some specific questions or we have for developers regarding the Collections feature and its design:

  • Do you plan to use collections in your app? If so, which collection types (for example, photos, documents)?
  • Would you create new collection types yourself or use types created by Blockstack PBC and the community?
  • Do you believe collections will improve the user experience for your apps? If so, please explain how.
  • What was the most challenging part about integrating the collections API?
  • Do you think the blockstack-collections NPM package is a good repository for standardized collection data schemas? If not, what would you recommend?

You can provide feedback, and read more about the design, in this forum post.


This looks very promising, nice work. I am definitely using the contacts collection on Entaxy.
Have you guys given any thought about the management of large collections from the user point of view? Something like a collection of collections or a tagging system? I’m thinking about the thousands of photos I have on my phone.

1 Like

I integrated the contacts collection in OI Calendar so that users can add their friends’ public calendars. It was quite smooth. I just had to map the contacts structure to my own model (

Ideally I would like to have a typed object Contact with getter/setters for each attribute. I’d like to see a avatar url and a much more complex structure with a list of contact methods (social accounts, several phone numbers, etc) and a list of addresses.

I want to use collections for time taking data, for comments and for events. It will help users to make apps more useful by re-using personal data.

npm packaging is quite convenient for me.

Finally got into taking a look. I understand that a) this is an early preview, and b) we want collections to be a baseline, but the current properties of a ‘Contact’ seem inadequate. To enable real portability, the basic set of props should be extended. There wont be much value if I can take my contacts with me, but only 1 phone number and 1 email address.

I’d like see the properties expanded to at least what vcard support.

Thanks for the feedback. Updating the schema to support multiple email and phone numbers is definitely something we plan to do before the production release.

1 Like

Here are some apps that can make use of the contacts collections:

Open Source Apps

Graphite: Replace contacts with address book (@jehunter5811)
Dmail: Replace contacts with address book, whitelist contacts from address book (
Kit: use contacts (@ferrucc-io)
Pixus: Invite contacts to shared photo album
BlockDoc: Suggest contacts to share docs with
Debut: Suggest contacts to follow
Gitix: suggest users to follow from address book (@friedger)
OI Calendar: add (public) calendar from contact (@friedger)
Envelop: Encrypt file for contact (@sdsantos)
Blockusign: Get email from address book
OI Timesheet: Share timesheet with contact from address book (@friedger)

Closed Source Apps

Detacts: use contacts
Blocksurvey: share results with contact (@wilsonbright)
Arcane Maps: Navigate to contact (@Walterion)
Pgeon: Suggest contacts to follow
Timestack: Use contact address for invoice/customer
X5 Invoice: Billing email from address book (@ucefkh)

Happy to help get it done…

1 Like