diff --git a/app/models/CocoModel.coffee b/app/models/CocoModel.coffee
index 94cffaea0..b75491871 100644
--- a/app/models/CocoModel.coffee
+++ b/app/models/CocoModel.coffee
@@ -51,7 +51,10 @@ class CocoModel extends Backbone.Model
     @loading = false
     @jqxhr = null
     if jqxhr.status is 402
-      Backbone.Mediator.publish 'level:subscription-required', {}
+      if _.contains(jqxhr.responseText, 'be in a course')
+        Backbone.Mediator.publish 'level:course-membership-required', {}
+      else
+        Backbone.Mediator.publish 'level:subscription-required', {}
 
   onLoaded: ->
     @loaded = true
diff --git a/app/schemas/subscriptions/play.coffee b/app/schemas/subscriptions/play.coffee
index d4f967578..303e0bd2a 100644
--- a/app/schemas/subscriptions/play.coffee
+++ b/app/schemas/subscriptions/play.coffee
@@ -171,3 +171,5 @@ module.exports =
     hero: {type: 'object'}
 
   'level:subscription-required': c.object {}
+
+  'level:course-membership-required': c.object {}
diff --git a/app/styles/play/level/loading.sass b/app/styles/play/level/loading.sass
index afbf6c6ec..10c62bee3 100644
--- a/app/styles/play/level/loading.sass
+++ b/app/styles/play/level/loading.sass
@@ -111,13 +111,13 @@
         font-variant: small-caps
         text-transform: none
 
-      .subscription-required
+      .subscription-required, .course-membership-required
         display: none
         margin-top: -160px
         color: black
         font-size: 24px
 
-        .start-subscription-button
+        .btn
           width: 100%
           margin: 0px auto
           font-size: 40px
diff --git a/app/templates/play/level/level_loading.jade b/app/templates/play/level/level_loading.jade
index 236f07d69..96930956c 100644
--- a/app/templates/play/level/level_loading.jade
+++ b/app/templates/play/level/level_loading.jade
@@ -24,6 +24,10 @@
       span(data-i18n="subscribe.subscription_required_to_play") You'll need a subscription to play this level.
       button.start-subscription-button.btn.btn-lg.btn-warning(data-i18n="subscribe.subscribe") Subscribe
 
+    .course-membership-required
+      span(data-i18n="courses.course_membership_required_to_play") You'll need to join a course to play this level.
+      a.btn.btn-lg.btn-warning(data-i18n="courses.go_to_courses", href="/courses") Go To Courses
+
   #tip-wrapper
     strong.tip(data-i18n='play_level.tip_toggle_play') Toggle play/paused with Ctrl+P.
     strong.tip(data-i18n='play_level.tip_scrub_shortcut') Ctrl+[ and Ctrl+] rewind and fast-forward.
diff --git a/app/views/play/level/LevelLoadingView.coffee b/app/views/play/level/LevelLoadingView.coffee
index f95791231..3a7211d9a 100644
--- a/app/views/play/level/LevelLoadingView.coffee
+++ b/app/views/play/level/LevelLoadingView.coffee
@@ -15,6 +15,7 @@ module.exports = class LevelLoadingView extends CocoView
   subscriptions:
     'level:loaded': 'onLevelLoaded'  # If Level loads after level loading view.
     'level:subscription-required': 'onSubscriptionRequired'  # If they'd need a subscription to start playing.
+    'level:course-membership-required': 'onCourseMembershipRequired'  # If they'd need a subscription to start playing.
     'subscribe-modal:subscribed': 'onSubscribed'
 
   shortcuts:
@@ -109,6 +110,10 @@ module.exports = class LevelLoadingView extends CocoView
     @$el.find('.level-loading-goals, .tip, .load-progress').hide()
     @$el.find('.subscription-required').show()
 
+  onCourseMembershipRequired: (e) ->
+    @$el.find('.level-loading-goals, .tip, .load-progress').hide()
+    @$el.find('.course-membership-required').show()
+
   onClickStartSubscription: (e) ->
     @openModalView new SubscribeModal()
     window.tracker?.trackEvent 'Show subscription modal', category: 'Subscription', label: 'level loading', level: @level?.get('slug') or @options.level?.get('slug')