diff --git a/src/timeline/TimelineModel.cpp b/src/timeline/TimelineModel.cpp
index 2c97d576e09f8f0d060865ac7aa5f81ed1e954a9..8d68f24cf5ddb113028603e18aa82c3b1def3e93 100644
--- a/src/timeline/TimelineModel.cpp
+++ b/src/timeline/TimelineModel.cpp
@@ -775,6 +775,15 @@ TimelineModel::internalAddEvents(
                         if (encInfo)
                                 emit newEncryptedImage(encInfo.value());
 
+                        if (std::holds_alternative<
+                              mtx::events::RoomEvent<mtx::events::msg::CallCandidates>>(e_)) {
+                                // don't display CallCandidate events to user
+                                events.insert(id, e);
+                                if (emitCallEvents)
+                                        emit newCallEvent(e_);
+                                continue;
+                        }
+
                         if (emitCallEvents) {
                                 if (auto callInvite = std::get_if<
                                       mtx::events::RoomEvent<mtx::events::msg::CallInvite>>(&e_)) {