1. A method for synchronizing data between endpoint data stores, comprising: performing a set-intersection on a first local schema associated with a first endpoint data store and a second local schema associated with a second endpoint data store, wherein each of the first and second local schemas organizes data into one or more fields of the corresponding first and second endpoint data stores; generating a virtual schema based on the set-intersection on the first local schema and the second local schema, wherein the virtual schema maps a field in the first local schema to a field in the second local schema; synchronizing data between the first and second endpoint data stores using the virtual schema, the synchronizing comprising: receiving, by a synchronization server including a processor, data according to the first local schema from the first endpoint data store, and processing, by the synchronization server using the virtual schema, the received data to produce data according to the second local schema for sending over a network to the second endpoint data store; computing a hash value of the data according to the first local schema based only on content of at least one field of the data according to the first local schema that is mapped by the virtual schema to at least one field of the second local schema; and determining, based on the hash value, a consistency of the data according to the first local schema with the data according to the second local schema.