diff --git a/packages/loot-core/src/client/shared-listeners.js b/packages/loot-core/src/client/shared-listeners.js
index 766189bb7d6576fa1faf7ece20a67812e8766e7c..55b393a13ed47df17d1570ecb06f1535ac7a42bf 100644
--- a/packages/loot-core/src/client/shared-listeners.js
+++ b/packages/loot-core/src/client/shared-listeners.js
@@ -227,6 +227,7 @@ export function listenForSyncEvent(actions, store) {
           }
           break;
         case 'invalid-schema':
+          console.trace('invalid-schema', meta);
           notif = {
             title: 'Update required',
             message:
@@ -236,6 +237,7 @@ export function listenForSyncEvent(actions, store) {
           };
           break;
         case 'apply-failure':
+          console.trace('apply-failure', meta);
           notif = {
             message: `We couldn't apply that change to the database. Please report this as a bug by [opening a Github issue](${githubIssueLink}).`,
           };
@@ -245,6 +247,7 @@ export function listenForSyncEvent(actions, store) {
           // Show nothing
           break;
         default:
+          console.trace('unkown error', info);
           notif = {
             message: `We had problems syncing your changes. Please report this as a bug by [opening a Github issue](${githubIssueLink}).`,
           };
diff --git a/packages/loot-core/src/server/spreadsheet/spreadsheet.js b/packages/loot-core/src/server/spreadsheet/spreadsheet.js
index eda4175bee46112220061b842c282a41b1b425ef..6873d1b9a2b2b8bc75a0135f8ebaeeab280976e2 100644
--- a/packages/loot-core/src/server/spreadsheet/spreadsheet.js
+++ b/packages/loot-core/src/server/spreadsheet/spreadsheet.js
@@ -133,7 +133,7 @@ export default class Spreadsheet {
 
           if (result instanceof Promise) {
             console.warn(
-              'dynamic cell returned a promise! this is discouraged because errors are not handled properly',
+              `dynamic cell ${name} returned a promise! this is discouraged because errors are not handled properly`,
             );
           }
         } else if (node.sql) {
diff --git a/packages/loot-core/src/server/sync/index.js b/packages/loot-core/src/server/sync/index.js
index 5805ece55b15e8ab4abd3b6fceae2a3819ae1550..5343a23dd070e636122b7e758bc5fb2606dc8796 100644
--- a/packages/loot-core/src/server/sync/index.js
+++ b/packages/loot-core/src/server/sync/index.js
@@ -75,8 +75,8 @@ function apply(msg, prev) {
   if (dataset === 'prefs') {
     // Do nothing, it doesn't exist in the db
   } else {
+    let query;
     try {
-      let query;
       if (prev) {
         query = {
           sql: db.cache(`UPDATE ${dataset} SET ${column} = ? WHERE id = ?`),
@@ -90,9 +90,11 @@ function apply(msg, prev) {
       }
 
       db.runQuery(query.sql, query.params);
-    } catch (e) {
-      //console.log(e);
-      throw new SyncError('invalid-schema');
+    } catch (error) {
+      throw new SyncError('invalid-schema', {
+        error: { message: error.message, stack: error.stack },
+        query,
+      });
     }
   }
 }
@@ -128,8 +130,8 @@ async function fetchAll(table, ids) {
     try {
       let rows = await db.runQuery(sql, partIds, true);
       results = results.concat(rows);
-    } catch (e) {
-      throw new SyncError('invalid-schema');
+    } catch (error) {
+      throw new SyncError('invalid-schema', { error, sql, params: partIds });
     }
   }
 
@@ -415,9 +417,10 @@ async function _sendMessages(messages) {
         app.events.emit('sync', {
           type: 'error',
           subtype: 'apply-failure',
+          meta: e.meta,
         });
       } else {
-        app.events.emit('sync', { type: 'error' });
+        app.events.emit('sync', { type: 'error', meta: e.meta });
       }
     }