diff --git a/app/templates/clans/clan-details.jade b/app/templates/clans/clan-details.jade
index a19a0e5f2..5cb9e97f8 100644
--- a/app/templates/clans/clan-details.jade
+++ b/app/templates/clans/clan-details.jade
@@ -107,7 +107,15 @@ block content
                 if isOwner && member.id !== clan.get('ownerID')
                   button.btn.btn-xs.btn-warning.remove-member-btn(data-id="#{member.id}", data-i18n="clans.rem_hero") Remove Hero
               td.progress-cell
-
+                p
+                  div.level-progression-campaign(style='color:#317EAC;') Concepts
+                  each concept in conceptsProgression
+                    if userConceptsMap[member.id] && userConceptsMap[member.id][concept] === 'complete'
+                      span.spr.progress-level-cell.progress-level-cell-complete(data-i18n="concepts." + concept)
+                    else if userConceptsMap[member.id] && userConceptsMap[member.id][concept] === 'started'
+                      span.spr.progress-level-cell.progress-level-cell-started(data-i18n="concepts." + concept)
+                    else
+                      span.spr.progress-level-cell.progress-level-cell-not-started(data-i18n="concepts." + concept)
                 each campaign in campaignLevelProgressions
                   if lastUserCampaignLevelMap[member.id] && lastUserCampaignLevelMap[member.id][campaign.ID]
                     div.level-progression-campaign= campaign.name
@@ -164,7 +172,7 @@ block content
                           .level-popup-container
                             h3 #{i}. #{level.name}
                             div
-                              span(data-i18n="choose_hero.status") Status
+                              span(data-i18n="clans.status") Status
                                 span.spr :
                                 span(data-i18n="clans.not_started_2") Not Started
                       if lastUserCampaignLevelMap[member.id][campaign.ID].levelSlug === level.slug
diff --git a/app/views/clans/ClanDetailsView.coffee b/app/views/clans/ClanDetailsView.coffee
index 6946ae4cd..99c8eb2e6 100644
--- a/app/views/clans/ClanDetailsView.coffee
+++ b/app/views/clans/ClanDetailsView.coffee
@@ -67,6 +67,7 @@ module.exports = class ClanDetailsView extends RootView
     context = super()
     context.campaignLevelProgressions = @campaignLevelProgressions ? []
     context.clan = @clan
+    context.conceptsProgression = @conceptsProgression ? []
     if application.isProduction()
       context.joinClanLink = "https://codecombat.com/clans/#{@clanID}"
     else
@@ -84,6 +85,7 @@ module.exports = class ClanDetailsView extends RootView
     # Find last campaign level for each user
     lastUserCampaignLevelMap = {}
     maxLastUserCampaignLevel = 0
+    userConceptsMap = {}
     if @campaigns.loaded
       for campaign in @campaigns.models
         campaignID = campaign.id
@@ -98,10 +100,16 @@ module.exports = class ClanDetailsView extends RootView
                 levelSlug: levelSlug
                 index: lastLevelIndex
               maxLastUserCampaignLevel = lastLevelIndex if lastLevelIndex > maxLastUserCampaignLevel
+              if level.concepts?
+                userConceptsMap[member.id] ?= {}
+                for concept in level.concepts
+                  continue if userConceptsMap[member.id][concept] is 'complete'
+                  userConceptsMap[member.id][concept] = context.memberLevelStateMap[member.id][levelSlug].state
           lastLevelIndex++
 
     context.lastUserCampaignLevelMap = lastUserCampaignLevelMap
     context.showExpandedProgress = maxLastUserCampaignLevel <= 30 or @showExpandedProgress
+    context.userConceptsMap = userConceptsMap
     context
 
   afterRender: ->
@@ -124,6 +132,7 @@ module.exports = class ClanDetailsView extends RootView
   onCampaignSync: ->
     return unless @campaigns.loaded
     @campaignLevelProgressions = []
+    @conceptsProgression = []
     for campaign in @campaigns.models
       continue if campaign.get('slug') is 'auditions'
       campaignLevelProgression =
@@ -136,6 +145,9 @@ module.exports = class ClanDetailsView extends RootView
           ID: levelID
           slug: level.slug
           name: level.name
+        if level.concepts?
+          for concept in level.concepts
+            @conceptsProgression.push concept unless concept in @conceptsProgression
       @campaignLevelProgressions.push campaignLevelProgression
     @render?()