diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTracker.java b/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTracker.java
index 5d6418f0aceaf17b46714509ec96c881187a31f1..bd9cee3215e72979585ec6fa9429d538a3022f1e 100644
--- a/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTracker.java
+++ b/briar-api/src/main/java/org/briarproject/briar/api/client/MessageTracker.java
@@ -12,6 +12,12 @@ import javax.annotation.Nullable;
 @NotNullByDefault
 public interface MessageTracker {
 
+	/**
+	 * Initializes the group count with zero messages,
+	 * but uses the current time as latest message time for sorting.
+	 */
+	void initializeGroupCount(Transaction txn, GroupId g) throws DbException;
+
 	/**
 	 * Gets the number of visible and unread messages in the group
 	 * as well as the timestamp of the latest message
diff --git a/briar-core/src/main/java/org/briarproject/briar/client/ConversationClientImpl.java b/briar-core/src/main/java/org/briarproject/briar/client/ConversationClientImpl.java
index 4ba35c0205963dcd6ee6ff273a16df9155610580..9d12c5aba0180ea7556e4bd01890cdcd0c2ad0f0 100644
--- a/briar-core/src/main/java/org/briarproject/briar/client/ConversationClientImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/client/ConversationClientImpl.java
@@ -31,6 +31,15 @@ public abstract class ConversationClientImpl extends BdfIncomingMessageHook
 		this.messageTracker = messageTracker;
 	}
 
+	/**
+	 * Initializes the group count with zero messages,
+	 * but uses the current time as latest message time for sorting.
+	 */
+	protected void initializeGroupCount(Transaction txn, GroupId g)
+			throws DbException {
+		messageTracker.initializeGroupCount(txn, g);
+	}
+
 	@Override
 	public GroupCount getGroupCount(Transaction txn, ContactId contactId)
 			throws DbException {
diff --git a/briar-core/src/main/java/org/briarproject/briar/client/MessageTrackerImpl.java b/briar-core/src/main/java/org/briarproject/briar/client/MessageTrackerImpl.java
index 18e034027c906507119141a3b5e99993f9f7429d..ef3fcb7023bedc848eb9e249aed1ffcca8cc11b7 100644
--- a/briar-core/src/main/java/org/briarproject/briar/client/MessageTrackerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/client/MessageTrackerImpl.java
@@ -11,6 +11,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.Message;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.briar.api.client.MessageTracker;
 
 import javax.annotation.Nullable;
@@ -29,11 +30,22 @@ class MessageTrackerImpl implements MessageTracker {
 
 	private final DatabaseComponent db;
 	private final ClientHelper clientHelper;
+	private final Clock clock;
 
 	@Inject
-	MessageTrackerImpl(DatabaseComponent db, ClientHelper clientHelper) {
+	MessageTrackerImpl(DatabaseComponent db, ClientHelper clientHelper,
+			Clock clock) {
 		this.db = db;
 		this.clientHelper = clientHelper;
+		this.clock = clock;
+	}
+
+	@Override
+	public void initializeGroupCount(Transaction txn, GroupId g)
+			throws DbException {
+		long now = clock.currentTimeMillis();
+		GroupCount groupCount = new GroupCount(0, 0, now);
+		storeGroupCount(txn, g, groupCount);
 	}
 
 	@Override
diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
index 4f20d13a958bbd3d4e15ab4ed541bf63e5392ebe..2dbd584bef985d452c1ae741c45306ee613eaf49 100644
--- a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
+++ b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java
@@ -93,6 +93,8 @@ class MessagingManagerImpl extends ConversationClientImpl
 		} catch (FormatException e) {
 			throw new AssertionError(e);
 		}
+		// Initialize the group count with current time
+		initializeGroupCount(txn, g.getId());
 	}
 
 	@Override
diff --git a/briar-core/src/test/java/org/briarproject/briar/client/MessageTrackerTest.java b/briar-core/src/test/java/org/briarproject/briar/client/MessageTrackerTest.java
index a7e8603202c358a92e625380282fbba3e35d619e..c46e3549602e5e683173a6c802ce87a238821dbb 100644
--- a/briar-core/src/test/java/org/briarproject/briar/client/MessageTrackerTest.java
+++ b/briar-core/src/test/java/org/briarproject/briar/client/MessageTrackerTest.java
@@ -4,16 +4,22 @@ import org.briarproject.bramble.api.client.ClientHelper;
 import org.briarproject.bramble.api.data.BdfDictionary;
 import org.briarproject.bramble.api.data.BdfEntry;
 import org.briarproject.bramble.api.db.DatabaseComponent;
+import org.briarproject.bramble.api.db.Transaction;
 import org.briarproject.bramble.api.sync.GroupId;
 import org.briarproject.bramble.api.sync.MessageId;
+import org.briarproject.bramble.api.system.Clock;
 import org.briarproject.bramble.test.BrambleMockTestCase;
 import org.briarproject.bramble.test.TestUtils;
 import org.briarproject.briar.api.client.MessageTracker;
 import org.jmock.Expectations;
-import org.junit.Assert;
 import org.junit.Test;
 
+import static org.briarproject.briar.client.MessageTrackerConstants.GROUP_KEY_LATEST_MSG;
+import static org.briarproject.briar.client.MessageTrackerConstants.GROUP_KEY_MSG_COUNT;
 import static org.briarproject.briar.client.MessageTrackerConstants.GROUP_KEY_STORED_MESSAGE_ID;
+import static org.briarproject.briar.client.MessageTrackerConstants.GROUP_KEY_UNREAD_COUNT;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
 
 public class MessageTrackerTest extends BrambleMockTestCase {
 
@@ -21,13 +27,31 @@ public class MessageTrackerTest extends BrambleMockTestCase {
 	protected final ClientHelper clientHelper =
 			context.mock(ClientHelper.class);
 	private final DatabaseComponent db = context.mock(DatabaseComponent.class);
+	private final Clock clock = context.mock(Clock.class);
 	private final MessageId messageId = new MessageId(TestUtils.getRandomId());
 	private final MessageTracker messageTracker =
-			new MessageTrackerImpl(db, clientHelper);
+			new MessageTrackerImpl(db, clientHelper, clock);
 	private final BdfDictionary dictionary = BdfDictionary.of(
 			new BdfEntry(GROUP_KEY_STORED_MESSAGE_ID, messageId)
 	);
 
+	@Test
+	public void testInitializeGroupCount() throws Exception {
+		Transaction txn = new Transaction(null, false);
+		long now = 42L;
+		BdfDictionary dictionary = BdfDictionary.of(
+				new BdfEntry(GROUP_KEY_MSG_COUNT, 0),
+				new BdfEntry(GROUP_KEY_UNREAD_COUNT, 0),
+				new BdfEntry(GROUP_KEY_LATEST_MSG, now)
+		);
+		context.checking(new Expectations() {{
+			oneOf(clock).currentTimeMillis();
+			will(returnValue(now));
+			oneOf(clientHelper).mergeGroupMetadata(txn, groupId, dictionary);
+		}});
+		messageTracker.initializeGroupCount(txn, groupId);
+	}
+
 	@Test
 	public void testMessageStore() throws Exception {
 		context.checking(new Expectations() {{
@@ -43,8 +67,8 @@ public class MessageTrackerTest extends BrambleMockTestCase {
 			will(returnValue(dictionary));
 		}});
 		MessageId loadedId = messageTracker.loadStoredMessageId(groupId);
-		Assert.assertNotNull(loadedId);
-		Assert.assertTrue(messageId.equals(loadedId));
+		assertNotNull(loadedId);
+		assertEquals(messageId, loadedId);
 	}
 
 }