diff --git a/src/libclient/conversationmodel.cpp b/src/libclient/conversationmodel.cpp
index dba206bd3c99a944ff81d3bab6c0b36c1a24fe44..5604a17c21d55a0bc081a8d7f753a98e9f1e299e 100644
--- a/src/libclient/conversationmodel.cpp
+++ b/src/libclient/conversationmodel.cpp
@@ -3611,8 +3611,12 @@ ConversationModelPimpl::addIncomingMessage(const QString& peerId,
         try {
             auto contact = linked.owner.contactModel->getContact(peerId);
             isRequest = contact.profileInfo.type == profile::Type::PENDING;
-            if (isRequest && !contact.isBanned && peerId != linked.owner.profileInfo.uri) {
-                addContactRequest(peerId);
+            // if isSip, it will be a contact!
+            auto isSip = linked.owner.profileInfo.type == profile::Type::SIP;
+            if (isSip
+                || (isRequest && !contact.isBanned && peerId != linked.owner.profileInfo.uri)) {
+                if (!isSip)
+                    addContactRequest(peerId);
                 convIds.push_back(storage::beginConversationWithPeer(db, contact.profileInfo.uri));
                 auto& conv = getConversationForPeerUri(contact.profileInfo.uri).get();
                 conv.uid = convIds[0];