diff --git a/src/account.cpp b/src/account.cpp
index 0efbb8e3c60db6faae663956f125c54ed5935bb6..4d25ef5c11e83a9ff4aefa528a090edc6f998482 100644
--- a/src/account.cpp
+++ b/src/account.cpp
@@ -158,15 +158,21 @@ Account::setRegistrationState(RegistrationState state, unsigned detail_code, con
     if (state != registrationState_) {
         registrationState_ = state;
         // Notify the client
-        emitSignal<DRing::ConfigurationSignal::RegistrationStateChanged>(
-            accountID_,
-            mapStateNumberToString(registrationState_),
-            detail_code,
-            detail_str);
-
-        emitSignal<DRing::ConfigurationSignal::VolatileDetailsChanged>(
-            accountID_,
-            getVolatileAccountDetails());
+        runOnMainThread([
+                accountId = accountID_,
+                state = mapStateNumberToString(registrationState_),
+                detail_code,
+                detail_str,
+                details = getVolatileAccountDetails()
+        ]{
+            emitSignal<DRing::ConfigurationSignal::RegistrationStateChanged>(
+                accountId,
+                state,
+                detail_code,
+                detail_str);
+
+            emitSignal<DRing::ConfigurationSignal::VolatileDetailsChanged>(accountId, details);
+        });
     }
 }