diff --git a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp
--- a/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp
+++ b/native/cpp/CommonCpp/DatabaseManagers/SQLiteQueryExecutor.cpp
@@ -628,6 +628,18 @@
   return create_table(db, query, "thread_activity");
 }
 
+bool create_received_messages_to_device(sqlite3 *db) {
+  std::string query =
+      "CREATE TABLE IF NOT EXISTS received_messages_to_device ("
+      "  id INTEGER PRIMARY KEY,"
+      "  message_id TEXT NOT NULL,"
+      "  sender_device_id TEXT NOT NULL,"
+      "  plaintext TEXT NOT NULL,"
+      "  status TEXT NOT NULL"
+      ");";
+  return create_table(db, query, "received_messages_to_device");
+}
+
 bool create_schema(sqlite3 *db) {
   char *error;
   sqlite3_exec(
@@ -757,6 +769,14 @@
       "  thread_activity_store_entry TEXT NOT NULL"
       ");"
 
+      "CREATE TABLE IF NOT EXISTS received_messages_to_device ("
+      "  id INTEGER PRIMARY KEY,"
+      "  message_id TEXT NOT NULL,"
+      "  sender_device_id TEXT NOT NULL,"
+      "  plaintext TEXT NOT NULL,"
+      "  status TEXT NOT NULL"
+      ");"
+
       "CREATE INDEX IF NOT EXISTS media_idx_container"
       "  ON media (container);"
 
@@ -1009,7 +1029,8 @@
      {40, {create_keyservers_synced, true}},
      {41, {create_aux_user_table, true}},
      {42, {add_version_column_to_olm_persist_sessions_table, true}},
-     {43, {create_thread_activity_table, true}}}};
+     {43, {create_thread_activity_table, true}},
+     {44, {create_received_messages_to_device, true}}}};
 
 enum class MigrationResult { SUCCESS, FAILURE, NOT_APPLIED };
 
diff --git a/web/shared-worker/_generated/comm_query_executor.wasm b/web/shared-worker/_generated/comm_query_executor.wasm
index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000
GIT binary patch
literal 0
Hc$@<O00001

literal 0
Hc$@<O00001