diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index 11fbb37d1a39926c98db6e9634b05efd0bba2194..265530ea73f1a1db179ee46ca30f612a65332e54 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -103,7 +103,6 @@
     <string name="add_link">Add link</string>
     <string name="switch_user">Switch User</string>
     <string name="search_people">Search people</string>
-    <string name="wants_to_follow_you">wants to follow you</string>
     <string name="notification_unknown_room_name">Room</string>
     <string name="notification_new_invitation">New Invitation</string>
     <string name="sent_a_video">Video</string>
diff --git a/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDataSource.kt
index 8c557703f183425a62fee4180dae1df189304ae3..bfb75278ca2c52401e6d0a5fa21b7edba227e9e2 100644
--- a/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDataSource.kt
@@ -14,16 +14,22 @@ import org.futo.circles.core.extensions.createResult
 import org.futo.circles.core.extensions.getKnownUsersFlow
 import org.futo.circles.core.feature.room.knoks.KnockRequestsDataSource
 import org.futo.circles.core.feature.workspace.SharedCircleDataSource
+import org.futo.circles.core.mapping.toCirclesUserSummary
+import org.futo.circles.core.model.ConnectionInviteListItem
 import org.futo.circles.core.model.FollowRequestListItem
 import org.futo.circles.core.model.GALLERY_TYPE
 import org.futo.circles.core.model.GROUP_TYPE
+import org.futo.circles.core.model.InviteHeader
+import org.futo.circles.core.model.InviteListItem
 import org.futo.circles.core.model.InviteTypeArg
 import org.futo.circles.core.model.RoomInviteListItem
 import org.futo.circles.core.model.TIMELINE_TYPE
+import org.futo.circles.core.model.convertToCircleRoomType
 import org.futo.circles.core.model.toCircleUser
 import org.futo.circles.core.model.toRoomInviteListItem
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.matrix.android.sdk.api.session.getRoom
+import org.matrix.android.sdk.api.session.getUserOrDefault
 import org.matrix.android.sdk.api.session.room.model.Membership
 import org.matrix.android.sdk.api.session.room.model.RoomSummary
 import org.matrix.android.sdk.api.session.room.model.RoomType
@@ -40,15 +46,45 @@ class InvitesDataSource @Inject constructor(
     private val roomIdsToUnblurProfile = MutableStateFlow<Set<String>>(emptySet())
 
     fun getInvitesFlow(type: InviteTypeArg) = when (type) {
-        InviteTypeArg.People -> getProfileRoomMembersKnockFlow()
+        InviteTypeArg.People -> getPeopleInvites()
         else -> getRoomInvitesFlow(type)
     }
 
+    private fun getPeopleInvites() = combine(
+        getProfileSpaceInvitesFlow(),
+        getProfileRoomMembersKnockFlow()
+    ) { invites, knocks ->
+        val list = mutableListOf<InviteListItem>()
+        if (invites.isNotEmpty()) {
+            list.add(InviteHeader.connectInvitesHeader)
+            list.addAll(invites)
+        }
+        if (knocks.isNotEmpty()) {
+            list.add(InviteHeader.followRequestHeader)
+            list.addAll(knocks)
+        }
+        list
+    }
+
     private fun getProfileRoomMembersKnockFlow(): Flow<List<FollowRequestListItem>> =
         knockRequestsDataSource.getKnockRequestsListItemsLiveData(profileRoomId)?.map { list ->
             list.map { FollowRequestListItem(it.toCircleUser(), it.message) }
         }?.asFlow() ?: flowOf()
 
+    private fun getProfileSpaceInvitesFlow(): Flow<List<ConnectionInviteListItem>> =
+        session?.roomService()?.getRoomSummariesLive(
+            roomSummaryQueryParams {
+                excludeType = null
+                memberships = listOf(Membership.INVITE)
+            })?.map {
+            it.filter { it.roomType == RoomType.SPACE }.map {
+                ConnectionInviteListItem(
+                    it.roomId,
+                    session.getUserOrDefault(it.inviterId ?: "").toCirclesUserSummary()
+                )
+            }
+        }?.asFlow() ?: flowOf()
+
     private fun getRoomInvitesFlow(
         inviteType: InviteTypeArg
     ): Flow<List<RoomInviteListItem>> = combine(
@@ -72,7 +108,7 @@ class InvitesDataSource @Inject constructor(
                 }
             }.map {
                 it.toRoomInviteListItem(
-                    inviteType,
+                    convertToCircleRoomType(it.roomType),
                     shouldBlurIconFor(it, knownUsersIds, roomIdsToUnblur)
                 )
             }
diff --git a/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDialogFragment.kt b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDialogFragment.kt
index 580649a0cc4be76356caa8c4675cf23b9f8bbb46..93a961d460189a48a2b22b3ae6fb30769d1eff69 100644
--- a/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDialogFragment.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesDialogFragment.kt
@@ -15,8 +15,11 @@ import org.futo.circles.core.extensions.observeResponse
 import org.futo.circles.core.extensions.showNoInternetConnection
 import org.futo.circles.core.feature.room.invites.list.InvitesAdapter
 import org.futo.circles.core.model.CircleRoomTypeArg
+import org.futo.circles.core.model.ConnectionInviteListItem
+import org.futo.circles.core.model.FollowRequestListItem
 import org.futo.circles.core.model.InviteListItem
 import org.futo.circles.core.model.InviteTypeArg
+import org.futo.circles.core.model.RoomInviteListItem
 import org.futo.circles.core.view.EmptyTabPlaceholderView
 
 @AndroidEntryPoint
@@ -66,7 +69,7 @@ class InvitesDialogFragment : BaseFullscreenDialogFragment(DialogFragmentInvites
             InviteTypeArg.Circle -> R.string.circle_invitations
             InviteTypeArg.Group -> R.string.group_invitations
             InviteTypeArg.Photo -> R.string.gallery_invitations
-            InviteTypeArg.People -> R.string.follow_requests
+            InviteTypeArg.People -> R.string.connection_invites_requests
         }
     )
 
@@ -74,16 +77,26 @@ class InvitesDialogFragment : BaseFullscreenDialogFragment(DialogFragmentInvites
 
     private fun onInviteClicked(item: InviteListItem, isAccepted: Boolean) {
         if (showNoInternetConnection()) return
-        when (item.inviteType) {
-            InviteTypeArg.Circle -> if (isAccepted) onAcceptCircleInviteClicked(item.id)
-            else viewModel.rejectRoomInvite(item.id)
+        when (item) {
+            is ConnectionInviteListItem -> viewModel.onConnectionInviteAnswered(
+                item.roomId, isAccepted
+            )
+
+            is FollowRequestListItem -> viewModel.onFollowRequestAnswered(item.id, isAccepted)
+            is RoomInviteListItem -> when (item.roomType) {
+                CircleRoomTypeArg.Circle -> handleCircleInvite(item.id, isAccepted)
+                else -> handleRoomInvite(item.id, isAccepted, item.roomType)
+            }
 
-            InviteTypeArg.Group -> handleRoomInvite(item.id, isAccepted, CircleRoomTypeArg.Group)
-            InviteTypeArg.Photo -> handleRoomInvite(item.id, isAccepted, CircleRoomTypeArg.Photo)
-            InviteTypeArg.People -> viewModel.onFollowRequestAnswered(item.id, isAccepted)
+            else -> {}
         }
     }
 
+    private fun handleCircleInvite(roomId: String, isAccepted: Boolean) {
+        if (isAccepted) onAcceptCircleInviteClicked(roomId)
+        else viewModel.rejectRoomInvite(roomId)
+    }
+
     private fun handleRoomInvite(roomId: String, isAccepted: Boolean, type: CircleRoomTypeArg) {
         if (isAccepted) viewModel.acceptRoomInvite(roomId, type)
         else viewModel.rejectRoomInvite(roomId)
diff --git a/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesViewModel.kt b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesViewModel.kt
index bc0ab872ecab923b92a97c2dd29e25bb14a5437f..eafb2308fca561599efef7c1e5c35387b1cdacba 100644
--- a/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesViewModel.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/room/invites/InvitesViewModel.kt
@@ -9,6 +9,7 @@ import org.futo.circles.core.extensions.Response
 import org.futo.circles.core.extensions.getOrThrow
 import org.futo.circles.core.extensions.launchBg
 import org.futo.circles.core.feature.room.invite.ManageInviteRequestsDataSource
+import org.futo.circles.core.feature.workspace.SharedCircleDataSource
 import org.futo.circles.core.model.CircleRoomTypeArg
 import org.futo.circles.core.model.InviteTypeArg
 import javax.inject.Inject
@@ -17,7 +18,8 @@ import javax.inject.Inject
 class InvitesViewModel @Inject constructor(
     savedStateHandle: SavedStateHandle,
     private val dataSource: InvitesDataSource,
-    private val manageInviteRequestsDataSource: ManageInviteRequestsDataSource
+    private val manageInviteRequestsDataSource: ManageInviteRequestsDataSource,
+    private val sharedCircleDataSource: SharedCircleDataSource
 ) : ViewModel() {
 
     private val inviteType: InviteTypeArg = savedStateHandle.getOrThrow("type")
@@ -41,7 +43,6 @@ class InvitesViewModel @Inject constructor(
         }
     }
 
-
     fun onFollowRequestAnswered(userId: String, accepted: Boolean) {
         launchBg {
             val result = if (accepted) dataSource.acceptFollowRequest(userId)
@@ -50,10 +51,18 @@ class InvitesViewModel @Inject constructor(
         }
     }
 
-
     fun unblurProfileIcon(roomId: String) {
         dataSource.unblurProfileImageFor(roomId)
     }
 
+    fun onConnectionInviteAnswered(roomId: String, accepted: Boolean) {
+        if (accepted)
+            launchBg {
+               val result =  sharedCircleDataSource.acceptSharedCircleInvite(roomId)
+                inviteResultLiveData.postValue(result)
+            }
+        else rejectRoomInvite(roomId)
+    }
+
 
 }
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesAdapter.kt b/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesAdapter.kt
index 95e490b3b28c0fb954c76c2589aa010f52ff3e70..3a619e8e3319105b34e09652423c85f678868eb9 100644
--- a/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesAdapter.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesAdapter.kt
@@ -2,22 +2,36 @@ package org.futo.circles.core.feature.room.invites.list
 
 import android.view.ViewGroup
 import org.futo.circles.core.base.list.BaseRvAdapter
+import org.futo.circles.core.model.CircleRoomTypeArg
+import org.futo.circles.core.model.ConnectionInviteListItem
+import org.futo.circles.core.model.FollowRequestListItem
+import org.futo.circles.core.model.InviteHeader
 import org.futo.circles.core.model.InviteListItem
-import org.futo.circles.core.model.InviteTypeArg
+import org.futo.circles.core.model.RoomInviteListItem
 
+enum class InviteViewType { Circle, Group, Photo, Header, PeopleInvite, PeopleKnock }
 
 class InvitesAdapter(
     private val onInviteClicked: (InviteListItem, Boolean) -> Unit,
     private val onUnblurProfileIconClicked: (InviteListItem) -> Unit
 ) : BaseRvAdapter<InviteListItem, InviteViewHolder>(DefaultIdEntityCallback()) {
 
-    override fun getItemViewType(position: Int): Int = getItem(position).inviteType.ordinal
+    override fun getItemViewType(position: Int): Int = when (val item = getItem(position)) {
+        is ConnectionInviteListItem -> InviteViewType.PeopleInvite.ordinal
+        is FollowRequestListItem -> InviteViewType.PeopleKnock.ordinal
+        is InviteHeader -> InviteViewType.Header.ordinal
+        is RoomInviteListItem -> when (item.roomType) {
+            CircleRoomTypeArg.Circle -> InviteViewType.Circle.ordinal
+            CircleRoomTypeArg.Group -> InviteViewType.Group.ordinal
+            CircleRoomTypeArg.Photo -> InviteViewType.Photo.ordinal
+        }
+    }
 
     override fun onCreateViewHolder(
         parent: ViewGroup,
         viewType: Int
-    ) = when (InviteTypeArg.entries[viewType]) {
-        InviteTypeArg.Circle -> InvitedCircleViewHolder(
+    ) = when (InviteViewType.entries[viewType]) {
+        InviteViewType.Circle -> InvitedCircleViewHolder(
             parent = parent,
             onInviteClicked = { position, isAccepted ->
                 onInviteClicked(getItem(position), isAccepted)
@@ -26,7 +40,7 @@ class InvitesAdapter(
                 onUnblurProfileIconClicked(getItem(position))
             })
 
-        InviteTypeArg.Group -> InvitedGroupViewHolder(
+        InviteViewType.Group -> InvitedGroupViewHolder(
             parent = parent,
             onInviteClicked = { position, isAccepted ->
                 onInviteClicked(getItem(position), isAccepted)
@@ -35,16 +49,24 @@ class InvitesAdapter(
                 onUnblurProfileIconClicked(getItem(position))
             })
 
-        InviteTypeArg.Photo -> InvitedGalleryViewHolder(
+        InviteViewType.Photo ->
+            InvitedGalleryViewHolder(
+                parent = parent,
+                onInviteClicked = { position, isAccepted ->
+                    onInviteClicked(getItem(position), isAccepted)
+                },
+                onShowProfileIconClicked = { position ->
+                    onUnblurProfileIconClicked(getItem(position))
+                })
+
+        InviteViewType.Header -> InviteHeaderViewHolder(parent)
+        InviteViewType.PeopleInvite -> ConnectionInviteViewHolder(
             parent = parent,
-            onInviteClicked = { position, isAccepted ->
+            onRequestClicked = { position, isAccepted ->
                 onInviteClicked(getItem(position), isAccepted)
-            },
-            onShowProfileIconClicked = { position ->
-                onUnblurProfileIconClicked(getItem(position))
             })
 
-        InviteTypeArg.People -> FollowRequestViewHolder(
+        InviteViewType.PeopleKnock -> FollowRequestViewHolder(
             parent = parent,
             onRequestClicked = { position, isAccepted ->
                 onInviteClicked(getItem(position), isAccepted)
diff --git a/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesViewHolder.kt b/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesViewHolder.kt
index a828270461566ab84e7693aea41eed144a709eda..751bdaa70c61224f955fb02fb67a64b58110485f 100644
--- a/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesViewHolder.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/room/invites/list/InvitesViewHolder.kt
@@ -6,6 +6,8 @@ import androidx.recyclerview.widget.RecyclerView
 import org.futo.circles.core.R
 import org.futo.circles.core.base.list.ViewBindingHolder
 import org.futo.circles.core.base.list.context
+import org.futo.circles.core.databinding.ListItemConnectionInviteBinding
+import org.futo.circles.core.databinding.ListItemInviteHeaderBinding
 import org.futo.circles.core.databinding.ListItemInvitedCircleBinding
 import org.futo.circles.core.databinding.ListItemInvitedGalleryBinding
 import org.futo.circles.core.databinding.ListItemInvitedGroupBinding
@@ -17,6 +19,7 @@ import org.futo.circles.core.extensions.setIsEncryptedIcon
 import org.futo.circles.core.extensions.setIsVisible
 import org.futo.circles.core.model.CirclesUserSummary
 import org.futo.circles.core.model.FollowRequestListItem
+import org.futo.circles.core.model.InviteHeader
 import org.futo.circles.core.model.InviteListItem
 import org.futo.circles.core.model.RoomInviteListItem
 
@@ -159,3 +162,44 @@ class FollowRequestViewHolder(
         }
     }
 }
+
+class ConnectionInviteViewHolder(
+    parent: ViewGroup,
+    private val onRequestClicked: (Int, Boolean) -> Unit
+) : InviteViewHolder(inflate(parent, ListItemConnectionInviteBinding::inflate)) {
+
+    private companion object : ViewBindingHolder
+
+    private val binding = baseBinding as ListItemConnectionInviteBinding
+
+    init {
+        onClick(binding.btnAccept) { position -> onRequestClicked(position, true) }
+        onClick(binding.btnDecline) { position -> onRequestClicked(position, false) }
+    }
+
+    override fun bind(data: InviteListItem) {
+        val user = (data as? FollowRequestListItem)?.user ?: return
+        bindUser(user)
+    }
+
+    private fun bindUser(user: CirclesUserSummary) {
+        with(binding) {
+            tvUserName.text = user.name
+            ivUserImage.loadUserProfileIcon(user.avatarUrl, user.id)
+        }
+    }
+}
+
+class InviteHeaderViewHolder(
+    parent: ViewGroup,
+) : InviteViewHolder(inflate(parent, ListItemInviteHeaderBinding::inflate)) {
+
+    private companion object : ViewBindingHolder
+
+    private val binding = baseBinding as ListItemInviteHeaderBinding
+
+    override fun bind(data: InviteListItem) {
+        if (data !is InviteHeader) return
+        binding.tvHeader.text = context.getString(data.titleRes)
+    }
+}
diff --git a/core/src/main/java/org/futo/circles/core/feature/workspace/SharedCircleDataSource.kt b/core/src/main/java/org/futo/circles/core/feature/workspace/SharedCircleDataSource.kt
index 900d9666415c83b3ce7f184f6104cc320c480712..08f95dd54097e356cb57459e241e41339c567839 100644
--- a/core/src/main/java/org/futo/circles/core/feature/workspace/SharedCircleDataSource.kt
+++ b/core/src/main/java/org/futo/circles/core/feature/workspace/SharedCircleDataSource.kt
@@ -1,12 +1,12 @@
 package org.futo.circles.core.feature.workspace
 
+import org.futo.circles.core.extensions.createResult
 import org.futo.circles.core.extensions.getRoomOwner
 import org.futo.circles.core.feature.room.RoomRelationsBuilder
 import org.futo.circles.core.model.PROFILE_SPACE_ACCOUNT_DATA_KEY
 import org.futo.circles.core.provider.MatrixSessionProvider
 import org.futo.circles.core.utils.getJoinedRoomById
 import org.futo.circles.core.utils.getTimelineRoomFor
-import org.matrix.android.sdk.api.session.Session
 import org.matrix.android.sdk.api.session.getRoomSummary
 import org.matrix.android.sdk.api.session.room.model.RoomSummary
 import javax.inject.Inject
@@ -56,9 +56,10 @@ class SharedCircleDataSource @Inject constructor(
         return sharedCirclesTimelineIds.contains(timelineId)
     }
 
-    private suspend fun acceptSharedCircleInvite(session: Session, roomId: String) {
-        session.roomService().joinRoom(roomId)
-        val sharedCirclesSpaceId = getSharedCirclesSpaceId() ?: return
+    suspend fun acceptSharedCircleInvite(roomId: String) = createResult {
+        MatrixSessionProvider.getSessionOrThrow().roomService().joinRoom(roomId)
+        val sharedCirclesSpaceId =
+            getSharedCirclesSpaceId() ?: throw IllegalArgumentException("Profile space not found")
         roomRelationsBuilder.setRelations(roomId, sharedCirclesSpaceId)
     }
 }
\ No newline at end of file
diff --git a/core/src/main/java/org/futo/circles/core/model/CircleRoomTypeArg.kt b/core/src/main/java/org/futo/circles/core/model/CircleRoomTypeArg.kt
index ee94c2cd42a961c66ec675a39988e4b25d7dbbbd..1178ad13a17c6665048692b2edd468f35a40e866 100644
--- a/core/src/main/java/org/futo/circles/core/model/CircleRoomTypeArg.kt
+++ b/core/src/main/java/org/futo/circles/core/model/CircleRoomTypeArg.kt
@@ -6,4 +6,11 @@ fun CircleRoomTypeArg.toShareUrlType() = when (this) {
     CircleRoomTypeArg.Circle -> ShareUrlTypeArg.TIMELINE
     CircleRoomTypeArg.Group -> ShareUrlTypeArg.GROUP
     CircleRoomTypeArg.Photo -> ShareUrlTypeArg.GALLERY
-}
\ No newline at end of file
+}
+
+fun convertToCircleRoomType(roomType: String?) = when (roomType) {
+    GROUP_TYPE -> CircleRoomTypeArg.Group
+    TIMELINE_TYPE -> CircleRoomTypeArg.Circle
+    GALLERY_TYPE -> CircleRoomTypeArg.Photo
+    else -> CircleRoomTypeArg.Group
+}
diff --git a/core/src/main/java/org/futo/circles/core/model/InviteListItem.kt b/core/src/main/java/org/futo/circles/core/model/InviteListItem.kt
index 51039bda2e837edb1e882ea34a11e1574198ed06..7cd4a690ab9cd53b2b134e99c83132c364d5b7de 100644
--- a/core/src/main/java/org/futo/circles/core/model/InviteListItem.kt
+++ b/core/src/main/java/org/futo/circles/core/model/InviteListItem.kt
@@ -1,5 +1,6 @@
 package org.futo.circles.core.model
 
+import org.futo.circles.core.R
 import org.futo.circles.core.base.list.IdEntity
 import org.futo.circles.core.extensions.notEmptyDisplayName
 import org.futo.circles.core.mapping.toRoomInfo
@@ -8,32 +9,46 @@ import org.matrix.android.sdk.api.session.getUserOrDefault
 import org.matrix.android.sdk.api.session.room.model.RoomSummary
 
 sealed class InviteListItem(
-    override val id: String,
-    open val inviteType: InviteTypeArg
+    override val id: String
 ) : IdEntity<String>
 
+
+data class InviteHeader(
+    val titleRes: Int
+) : InviteListItem(titleRes.toString()) {
+    companion object {
+        val connectInvitesHeader = InviteHeader(R.string.invites)
+        val followRequestHeader = InviteHeader(R.string.requests)
+    }
+}
+
 data class RoomInviteListItem(
     val roomId: String,
-    override val inviteType: InviteTypeArg,
+    val roomType: CircleRoomTypeArg,
     val info: RoomInfo,
     val isEncrypted: Boolean,
     val inviterName: String,
     val shouldBlurIcon: Boolean
-) : InviteListItem(roomId, inviteType)
+) : InviteListItem(roomId)
 
 data class FollowRequestListItem(
     val user: CirclesUserSummary,
     val reasonMessage: String?
-) : InviteListItem(user.id, InviteTypeArg.People)
+) : InviteListItem(user.id)
+
+data class ConnectionInviteListItem(
+    val roomId: String,
+    val user: CirclesUserSummary,
+) : InviteListItem(roomId)
 
-fun RoomSummary.toRoomInviteListItem(inviteType: InviteTypeArg, shouldBlurIcon: Boolean) =
+fun RoomSummary.toRoomInviteListItem(roomType: CircleRoomTypeArg, shouldBlurIcon: Boolean) =
     RoomInviteListItem(
         roomId = roomId,
         info = toRoomInfo(),
         inviterName = getInviterName(),
         isEncrypted = isEncrypted,
         shouldBlurIcon = shouldBlurIcon,
-        inviteType = inviteType
+        roomType = roomType
     )
 
 fun RoomSummary.getInviterName() =
diff --git a/core/src/main/res/layout/list_item_connection_invite.xml b/core/src/main/res/layout/list_item_connection_invite.xml
new file mode 100644
index 0000000000000000000000000000000000000000..1e9d9a3718c80298b10a6da164b3cf8106cb96ea
--- /dev/null
+++ b/core/src/main/res/layout/list_item_connection_invite.xml
@@ -0,0 +1,81 @@
+<?xml version="1.0" encoding="utf-8"?>
+<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
+    xmlns:app="http://schemas.android.com/apk/res-auto"
+    xmlns:tools="http://schemas.android.com/tools"
+    android:layout_width="match_parent"
+    android:layout_height="wrap_content"
+    android:paddingHorizontal="8dp"
+    android:paddingVertical="4dp"
+    tools:parentTag="androidx.constraintlayout.widget.ConstraintLayout">
+
+    <com.google.android.material.imageview.ShapeableImageView
+        android:id="@+id/ivUserImage"
+        android:layout_width="72dp"
+        android:layout_height="72dp"
+        android:scaleType="centerCrop"
+        app:layout_constraintStart_toStartOf="parent"
+        app:layout_constraintTop_toTopOf="parent"
+        app:shapeAppearanceOverlay="@style/ShapeAppearanceOverlay.App.CornerSize50Percent"
+        tools:background="@color/blue" />
+
+    <TextView
+        android:id="@+id/tvUserName"
+        style="@style/title2"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:layout_marginStart="8dp"
+        android:layout_marginEnd="8dp"
+        android:ellipsize="end"
+        android:lines="1"
+        app:layout_constraintBottom_toTopOf="@id/tvInvitesToConnect"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@id/ivUserImage"
+        app:layout_constraintTop_toTopOf="parent"
+        app:layout_constraintVertical_chainStyle="packed"
+        tools:text="Android01" />
+
+    <TextView
+        android:id="@+id/tvInvitesToConnect"
+        style="@style/subheadline"
+        android:layout_width="0dp"
+        android:layout_height="wrap_content"
+        android:ellipsize="end"
+        android:lines="1"
+        android:text="@string/invites_you_to_connect"
+        android:textSize="13sp"
+        app:layout_constraintEnd_toEndOf="@id/tvUserName"
+        app:layout_constraintStart_toStartOf="@id/tvUserName"
+        app:layout_constraintTop_toBottomOf="@id/tvUserName" />
+
+    
+    <com.google.android.material.button.MaterialButton
+        android:id="@+id/btnAccept"
+        style="@style/AccentButtonStyle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:layout_marginTop="4dp"
+        android:layout_marginEnd="8dp"
+        android:padding="0dp"
+        android:text="@string/accept"
+        android:textSize="14sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toStartOf="@id/btnDecline"
+        app:layout_constraintStart_toEndOf="@id/ivUserImage"
+        app:layout_constraintTop_toBottomOf="@id/tvInvitesToConnect"
+
+        />
+
+    <com.google.android.material.button.MaterialButton
+        android:id="@+id/btnDecline"
+        style="@style/NegativeButtonStyle"
+        android:layout_width="wrap_content"
+        android:layout_height="wrap_content"
+        android:padding="0dp"
+        android:text="@string/decline"
+        android:textSize="14sp"
+        app:layout_constraintBottom_toBottomOf="parent"
+        app:layout_constraintEnd_toEndOf="parent"
+        app:layout_constraintStart_toEndOf="@id/btnAccept"
+        app:layout_constraintTop_toTopOf="@id/btnAccept" />
+
+</androidx.constraintlayout.widget.ConstraintLayout>
\ No newline at end of file
diff --git a/core/src/main/res/layout/list_item_people_request.xml b/core/src/main/res/layout/list_item_people_request.xml
index 1c760fdfa8cbd57782b08c81a5b2a581ead3625e..7315a0483d7eb54de5ca420b9fbab1f1ec389c92 100644
--- a/core/src/main/res/layout/list_item_people_request.xml
+++ b/core/src/main/res/layout/list_item_people_request.xml
@@ -41,7 +41,7 @@
         android:layout_height="wrap_content"
         android:ellipsize="end"
         android:lines="1"
-        android:text="@string/wants_to_follow_you"
+        android:text="@string/requests_to_follow_you"
         android:textSize="13sp"
         app:layout_constraintEnd_toEndOf="@id/tvUserName"
         app:layout_constraintStart_toStartOf="@id/tvUserName"
diff --git a/core/src/main/res/values/strings.xml b/core/src/main/res/values/strings.xml
index e9c97fd11bd275fb56b3d8518f5376fca79aba89..6af3af1dbc7b45cd6304d5bf464c2174712f2b6d 100644
--- a/core/src/main/res/values/strings.xml
+++ b/core/src/main/res/values/strings.xml
@@ -145,7 +145,7 @@
     <string name="create">Create</string>
     <string name="show">Show</string>
     <string name="gallery_invites_notification_format">Show %d Gallery invitations</string>
-    <string name="follow_requests">Follow requests</string>
+    <string name="connection_invites_requests">Connection invites/requests</string>
     <string name="group_invitations">Group invitations</string>
     <string name="gallery_invitations">Gallery invitations</string>
     <string name="circle_invitations">Circle invitations</string>
@@ -162,4 +162,8 @@
     <string name="user_ignored">User ignored</string>
     <string name="user_unignored">User un ignored</string>
     <string name="not_following_any_circles_format">Not following any Circles for %s</string>
+    <string name="requests_to_follow_you">requests to follow you</string>
+    <string name="invites_you_to_connect">invites you to connect</string>
+    <string name="invites">Invites</string>
+    <string name="requests">Requests</string>
 </resources>
\ No newline at end of file