diff --git a/plugins/task_handlers/redirect_context.inc b/plugins/task_handlers/redirect_context.inc
index a148844..4238110 100644
--- a/plugins/task_handlers/redirect_context.inc
+++ b/plugins/task_handlers/redirect_context.inc
@@ -121,6 +121,7 @@ function page_manager_redirect_redirect_context_get_redirection($handler) {
     'path' => $handler->conf['path'],
     'query' => $handler->conf['query'],
     'fragment' => $handler->conf['fragment'],
+    'http_response_code' => $handler->conf['http_response_code'],
   );
 }
 
@@ -357,6 +358,13 @@ function page_manager_redirect_redirect_context_edit_settings(&$form, &$form_sta
     '#title' => t('Anchor name'),
     '#description' => t('A destination fragment identifier for the redirection. This may mark a place on a page to skip to (for example: <em>#section3</em>). You may include or omit the <em>#</em>.'),
   );
+
+  $form['conf']['http_response_code'] = array(
+    '#type' => 'textfield',
+    '#default_value' => $conf['http_response_code'],
+    '#title' => t('HTTP response code'),
+    '#description' => t('The http response code for the redirect. For example: 301 for a "Moved Permanently" redirect. Valid values for an actual "goto" as per RFC 2616 section 10.3 are:<ul><li>301 Moved Permanently</li><li>302 Found</li><li>303 See Other</li><li>304 Not Modified</li><li>305 Use Proxy</li><li>307 Temporary Redirect</li></ul>'),
+  );
 }
 
 /**
@@ -367,6 +375,7 @@ function page_manager_redirect_redirect_context_edit_settings_submit(&$form, &$f
   $form_state['handler']->conf['path'] = $form_state['values']['path'];
   $form_state['handler']->conf['query'] = $form_state['values']['query'];
   $form_state['handler']->conf['fragment'] = $form_state['values']['fragment'];
+  $form_state['handler']->conf['http_response_code'] = $form_state['values']['http_response_code'];
 }
 
 /**
@@ -441,6 +450,15 @@ function page_manager_redirect_redirect_context_render_actual(&$handler, $contex
         $conf['fragment'] = substr($conf['fragment'], 1);
       }
     }
+
+    //check the 'http_response_code', for use in drupal_goto() as drupal_goto doesn't check it if it is set
+    if (isset($conf['http_response_code'])) {
+      if ($conf['http_response_code'] == '' || $conf['http_response_code'] == NULL) {
+        $conf['http_response_code'] = 302;
+      }
+    } else {
+        $conf['http_response_code'] = 302;
+    }
   }
 
   if ($preview) {
@@ -456,6 +474,6 @@ function page_manager_redirect_redirect_context_render_actual(&$handler, $contex
   else {
     // We're assuming drupal_goto can handle any unsafe things passed to it. 
     // This may turn out to be a false assuption, but looks correct to me.
-    drupal_goto($conf['path'], $conf['query'], $conf['fragment']);
+    drupal_goto($conf['path'], $conf['query'], $conf['fragment'], $conf['http_response_code']);
   }
 }
