diff --git a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
index 17b359e5a..978030f92 100644
--- a/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
+++ b/app/src/main/java/com/nextcloud/talk/activities/CallActivity.java
@@ -2081,6 +2081,10 @@ public class CallActivity extends CallBaseActivity {
                 callParticipants.get(sessionId).setUserId(userId);
             }
 
+            if (participant.getInternal() != null) {
+                callParticipants.get(sessionId).setInternal(participant.getInternal());
+            }
+
             String nick;
             if (hasExternalSignalingServer) {
                 nick = webSocketClient.getDisplayNameForSession(sessionId);
@@ -2440,6 +2444,10 @@ public class CallActivity extends CallBaseActivity {
     }
 
     private void addParticipantDisplayItem(CallParticipantModel callParticipantModel, String videoStreamType) {
+        if (callParticipantModel.isInternal() != null && callParticipantModel.isInternal()) {
+            return;
+        }
+
         String defaultGuestNick = getResources().getString(R.string.nc_nick_guest);
 
         ParticipantDisplayItem participantDisplayItem = new ParticipantDisplayItem(baseUrl,
diff --git a/app/src/main/java/com/nextcloud/talk/call/CallParticipant.java b/app/src/main/java/com/nextcloud/talk/call/CallParticipant.java
index 20d03fe05..d3e202a0c 100644
--- a/app/src/main/java/com/nextcloud/talk/call/CallParticipant.java
+++ b/app/src/main/java/com/nextcloud/talk/call/CallParticipant.java
@@ -148,6 +148,10 @@ public class CallParticipant {
         callParticipantModel.setNick(nick);
     }
 
+    public void setInternal(Boolean internal) {
+        callParticipantModel.setInternal(internal);
+    }
+
     public void setPeerConnectionWrapper(PeerConnectionWrapper peerConnectionWrapper) {
         if (this.peerConnectionWrapper != null) {
             this.peerConnectionWrapper.removeObserver(peerConnectionObserver);
diff --git a/app/src/main/java/com/nextcloud/talk/call/CallParticipantList.java b/app/src/main/java/com/nextcloud/talk/call/CallParticipantList.java
index 6135ab991..34ddc2fb5 100644
--- a/app/src/main/java/com/nextcloud/talk/call/CallParticipantList.java
+++ b/app/src/main/java/com/nextcloud/talk/call/CallParticipantList.java
@@ -132,6 +132,7 @@ public class CallParticipantList {
         private Participant copyParticipant(Participant participant) {
             Participant copiedParticipant = new Participant();
             copiedParticipant.setInCall(participant.getInCall());
+            copiedParticipant.setInternal(participant.getInternal());
             copiedParticipant.setLastPing(participant.getLastPing());
             copiedParticipant.setSessionId(participant.getSessionId());
             copiedParticipant.setType(participant.getType());
diff --git a/app/src/main/java/com/nextcloud/talk/call/CallParticipantModel.java b/app/src/main/java/com/nextcloud/talk/call/CallParticipantModel.java
index 24d8b3ffd..c8b1491d9 100644
--- a/app/src/main/java/com/nextcloud/talk/call/CallParticipantModel.java
+++ b/app/src/main/java/com/nextcloud/talk/call/CallParticipantModel.java
@@ -75,6 +75,8 @@ public class CallParticipantModel {
     protected Data<String> userId;
     protected Data<String> nick;
 
+    protected Data<Boolean> internal;
+
     protected Data<RaisedHand> raisedHand;
 
     protected Data<PeerConnection.IceConnectionState> iceConnectionState;
@@ -91,6 +93,8 @@ public class CallParticipantModel {
         this.userId = new Data<>();
         this.nick = new Data<>();
 
+        this.internal = new Data<>();
+
         this.raisedHand = new Data<>();
 
         this.iceConnectionState = new Data<>();
@@ -114,6 +118,10 @@ public class CallParticipantModel {
         return nick.getValue();
     }
 
+    public Boolean isInternal() {
+        return internal.getValue();
+    }
+
     public RaisedHand getRaisedHand() {
         return raisedHand.getValue();
     }
diff --git a/app/src/main/java/com/nextcloud/talk/call/MutableCallParticipantModel.java b/app/src/main/java/com/nextcloud/talk/call/MutableCallParticipantModel.java
index a70f76c85..2772b0030 100644
--- a/app/src/main/java/com/nextcloud/talk/call/MutableCallParticipantModel.java
+++ b/app/src/main/java/com/nextcloud/talk/call/MutableCallParticipantModel.java
@@ -41,6 +41,10 @@ public class MutableCallParticipantModel extends CallParticipantModel {
         this.nick.setValue(nick);
     }
 
+    public void setInternal(Boolean internal) {
+        this.internal.setValue(internal);
+    }
+
     public void setRaisedHand(boolean state, long timestamp) {
         this.raisedHand.setValue(new RaisedHand(state, timestamp));
     }
diff --git a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt
index ba79acc6b..3b085025b 100644
--- a/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt
+++ b/app/src/main/java/com/nextcloud/talk/models/json/participants/Participant.kt
@@ -27,7 +27,6 @@ import com.bluelinelabs.logansquare.annotation.JsonObject
 import com.nextcloud.talk.models.json.converters.EnumActorTypeConverter
 import com.nextcloud.talk.models.json.converters.EnumParticipantTypeConverter
 import kotlinx.parcelize.Parcelize
-import java.util.ArrayList
 
 @Parcelize
 @JsonObject
@@ -48,6 +47,9 @@ data class Participant(
     @JsonField(name = ["userId"])
     var userId: String? = null,
 
+    @JsonField(name = ["internal"])
+    var internal: Boolean? = null,
+
     @JsonField(name = ["type", "participantType"], typeConverter = EnumParticipantTypeConverter::class)
     var type: ParticipantType? = null,
 
@@ -90,7 +92,7 @@ data class Participant(
 ) : Parcelable {
     // This constructor is added to work with the 'com.bluelinelabs.logansquare.annotation.JsonObject'
     constructor() : this(
-        null, null, null, null, null, null, null, null,
+        null, null, null, null, null, null, null, null, null,
         0, null, ArrayList(0), 0, 0, null,
         null, null
     )
diff --git a/app/src/main/java/com/nextcloud/talk/signaling/SignalingMessageReceiver.java b/app/src/main/java/com/nextcloud/talk/signaling/SignalingMessageReceiver.java
index a8e201817..ad18751a8 100644
--- a/app/src/main/java/com/nextcloud/talk/signaling/SignalingMessageReceiver.java
+++ b/app/src/main/java/com/nextcloud/talk/signaling/SignalingMessageReceiver.java
@@ -389,6 +389,7 @@ public abstract class SignalingMessageReceiver {
         //                     "participantType": #INTEGER#,
         //                     "userId": #STRING#, // Optional
         //                     "nextcloudSessionId": #STRING#, // Optional
+        //                     "internal": #BOOLEAN#, // Optional
         //                     "participantPermissions": #INTEGER#, // Talk >= 13
         //                 },
         //                 ...
@@ -480,6 +481,10 @@ public abstract class SignalingMessageReceiver {
             participant.setUserId(participantMap.get("userId").toString());
         }
 
+        if (participantMap.get("internal") != null && Boolean.parseBoolean(participantMap.get("internal").toString())) {
+            participant.setInternal(Boolean.TRUE);
+        }
+
         // Only in external signaling messages
         if (participantMap.get("participantType") != null) {
             int participantTypeInt = Integer.parseInt(participantMap.get("participantType").toString());