1. A method comprising, by one or more computing systems: receiving a message including a thread identifier or a list of conversation participants; if the message includes a thread identifier, then appending the message to a locally-stored conversation thread possessing the same thread identifier; if the message includes a list of participants, then: searching a plurality of locally-stored conversation threads for a conversation threads having participants matching the list of participants; and in response to a match, appending the message to the matching thread; in response to failing to find a match, generating an offline identifier for the message and storing the message locally.