A computer-implemented method, comprising: receiving, at a client computing device, a reply message that is intended to be delivered to another client computing device that sent a message to the client computing device over a first communication channel; identifying, by the client computing device, a unique identifier in the reply message; generating, by the client computing device, an identified reply message that includes the unique identifier; sending, by the client computing device, the identified reply message to a computer system; receiving the reply message at the computer system; selecting, by the computer system, the unique identifier in the reply message; determining, by the computer system, that the message is not a duplicate based on a comparison of the unique identifier with a repository of unique message identifiers; storing, in response to the determining, the unique identifier in the repository of unique message identifiers; generating, by the computer system, a modified message that comprises the message with at least a portion of the unique identifier removed; sending, by the computer system, the modified reply message to the sender device; receiving the modified reply message and outputting the modified reply message by the other client computing device; receiving at the computer system, a second instance of the reply message that has been sent to the other client computing device over a second communication channel that is different to the first communication channel; determining whether said second instance of the reply message is a duplicate based on a comparison of a unique identifier in the second instance of the reply message with the repository of unique message identifiers; and if it is determined that said second instance of the reply message is a duplicate discarding the second instance of the reply message without transmitting said second instance of the reply message to the other client computing device. receiving, at a client computing device, a reply message that is intended to be delivered to another client computing device that sent a message to the client computing device over a first communication channel; identifying, by the client computing device, a unique identifier in the reply message; generating, by the client computing device, an identified reply message that includes the unique identifier; sending, by the client computing device, the identified reply message to a computer system; receiving the reply message at the computer system; selecting, by the computer system, the unique identifier in the reply message; determining, by the computer system, that the message is not a duplicate based on a comparison of the unique identifier with a repository of unique message identifiers; storing, in response to the determining, the unique identifier in the repository of unique message identifiers; generating, by the computer system, a modified message that comprises the message with at least a portion of the unique identifier removed; sending, by the computer system, the modified reply message to the sender device; receiving the modified reply message and outputting the modified reply message by the other client computing device; receiving at the computer system, a second instance of the reply message that has been sent to the other client computing device over a second communication channel that is different to the first communication channel; determining whether said second instance of the reply message is a duplicate based on a comparison of a unique identifier in the second instance of the reply message with the repository of unique message identifiers; and if it is determined that said second instance of the reply message is a duplicate discarding the second instance of the reply message without transmitting said second instance of the reply message to the other client computing device.