A computer-implemented method performed by a server, for generating secure calendar data for a user device, the method comprising: generating a first calendar object associated with a first date and comprising a first secure token; storing the first calendar object on the server; providing the first calendar object to the user device; storing on the server a plurality of further calendar objects for communication to the user device, each of the further calendar objects being associated with a respective date and comprising content data defining an entry in the calendar; receiving a request for calendar synchronisation from the user device; generating a second calendar object associated with a second date and comprising a second secure token; storing the second calendar object on the server; notifying the user device of a respective version of the first calendar object, the second calendar object, and each of the plurality of further calendar objects stored on the server, wherein the user device is notified that the first calendar object on the server has a version older than the first calendar object provided to the user device; receiving from the user device the first calendar object and any calendar object stored on the user device having a version that is newer on the user device than the version notified by the server; authenticating the request by comparing the first secure token from the first calendar object received from the user device and the first secure token from the first calendar object stored on the server; upon successful authentication of the request, providing to the user device the second calendar object comprising the second secure token and any calendar object of the plurality of further calendar objects stored on the server having a version that is newer on the server than on the user device; and upon unsuccessful authentication of the request, restricting the user device from accessing the content data in the further calendar objects. generating a first calendar object associated with a first date and comprising a first secure token; storing the first calendar object on the server; providing the first calendar object to the user device; storing on the server a plurality of further calendar objects for communication to the user device, each of the further calendar objects being associated with a respective date and comprising content data defining an entry in the calendar; receiving a request for calendar synchronisation from the user device; generating a second calendar object associated with a second date and comprising a second secure token; storing the second calendar object on the server; notifying the user device of a respective version of the first calendar object, the second calendar object, and each of the plurality of further calendar objects stored on the server, wherein the user device is notified that the first calendar object on the server has a version older than the first calendar object provided to the user device; receiving from the user device the first calendar object and any calendar object stored on the user device having a version that is newer on the user device than the version notified by the server; authenticating the request by comparing the first secure token from the first calendar object received from the user device and the first secure token from the first calendar object stored on the server; upon successful authentication of the request, providing to the user device the second calendar object comprising the second secure token and any calendar object of the plurality of further calendar objects stored on the server having a version that is newer on the server than on the user device; and upon unsuccessful authentication of the request, restricting the user device from accessing the content data in the further calendar objects.