diff --git a/includes/webform.pages.inc b/includes/webform.pages.inc
index 97c9395..388d15e 100644
--- a/includes/webform.pages.inc
+++ b/includes/webform.pages.inc
@@ -222,6 +222,23 @@ function webform_configure_form($form, &$form_state, $node) {
     '#default_value' => $node->webform['submit_notice'],
     '#description' => t('Show the previous submissions notification that appears when users have previously submitted this form.'),
   );
+  $form['advanced']['no_storage'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Do not store submitted data.'),
+    '#default_value' => $node->webform['no_storage'],
+    '#description' => t('No submitted data will be stored in the database. Will automatically disable saving as draft.'),
+  );
+  $form['advanced']['no_meta_data'] = array(
+    '#type' => 'checkbox',
+    '#title' => t('Do not store submission meta-data.'),
+    '#default_value' => $node->webform['no_meta_data'],
+    '#description' => t('If left unchecked, Webform will store the date and time that a submission was made, the user who made submission and the IP address the submission came from (no submitted data will be stored).'),
+    '#states' => array(
+      'invisible' => array(
+       'input[name="no_storage"]' => array('checked' => FALSE),
+      ),
+    ),
+  );
   $form['advanced']['submit_text'] = array(
     '#type' => 'textfield',
     '#title' => t('Submit button text'),
@@ -334,6 +351,22 @@ function webform_configure_form_submit($form, &$form_state) {
   // Set submit notice.
   $node->webform['submit_notice'] = $form_state['values']['submit_notice'];
 
+  // Set no storage.
+  $node->webform['no_storage'] = $form_state['values']['no_storage'];
+
+  // Disable saving as draft when not storing submissions.
+  if ($node->webform['no_storage']) {
+    // Unset any draft settings.
+    $node->webform['allow_draft'] = '';
+    $node->webform['auto_save'] = '';
+    // Set no meta data.
+    $node->webform['no_meta_data'] = $form_state['values']['no_meta_data'];
+  }
+  else {
+    // Unset no meta data.
+    $node->webform['no_meta_data'] = FALSE;
+  }
+
   // Set submit button text.
   $node->webform['submit_text'] = $form_state['values']['submit_text'];
 }
diff --git a/includes/webform.report.inc b/includes/webform.report.inc
index 8fc1d03..2ff4390 100644
--- a/includes/webform.report.inc
+++ b/includes/webform.report.inc
@@ -51,24 +51,35 @@ function webform_results_submissions($node, $user_filter, $pager_count) {
       $row[] = theme('username', array('account' => $submission));
       $row[] = $submission->remote_addr;
     }
-    $row[] = l(t('View'), "node/$node->nid/submission/$sid");
-    $operation_count = 1;
     // No need to call this multiple times, just reference this in a variable.
     $destination = drupal_get_destination();
-    if (webform_submission_access($node, $submission, 'edit', $user)) {
-      $row[] = l(t('Edit'), "node/$node->nid/submission/$sid/edit", array('query' => $destination));
-      $operation_count++;
+    if ($node->webform['no_storage']) {
+      $row[] = array('data' => l(t('Delete'), "node/$node->nid/submission/$sid/delete", array('query' => $destination)), 'colspan' => 1);
     }
-    if (webform_submission_access($node, $submission, 'delete', $user)) {
-      $row[] = l(t('Delete'), "node/$node->nid/submission/$sid/delete", array('query' => $destination));
-      $operation_count++;
-    }
-    if ($operation_count < $operation_total) {
-      $row[count($row) - 1] = array('data' => $row[count($row) - 1], 'colspan' => $operation_total - $operation_count + 1);
+    else {
+      $row[] = l(t('View'), "node/$node->nid/submission/$sid");
+      $operation_count = 1;
+      if (webform_submission_access($node, $submission, 'edit', $user)) {
+        $row[] = l(t('Edit'), "node/$node->nid/submission/$sid/edit", array('query' => $destination));
+        $operation_count++;
+      }
+      if (webform_submission_access($node, $submission, 'delete', $user)) {
+        $row[] = l(t('Delete'), "node/$node->nid/submission/$sid/delete", array('query' => $destination));
+        $operation_count++;
+      }
+      if ($operation_count < $operation_total) {
+        $row[count($row) - 1] = array('data' => $row[count($row) - 1], 'colspan' => $operation_total - $operation_count + 1);
+      }
+      if ($operation_count < $operation_total) {
+        $row[count($row) - 1] = array('data' => $row[count($row) - 1], 'colspan' => $operation_total - $operation_count + 1);
+      }
     }
     $rows[] = $row;
   }
 
+  // Check if we need to alert user that this form stores no data.
+  webform_no_storage_message($node);
+
   $element['#theme'] = 'webform_results_submissions';
   $element['#node'] = $node;
   $element['#submissions'] = $submissions;
@@ -185,6 +196,10 @@ function webform_results_table($node, $pager_count = 0) {
   if ($pager_count) {
     $output .= theme('pager');
   }
+
+  // Check if we need to alert user that this form stores no data.
+  webform_no_storage_message($node);
+
   return $output;
 }
 
@@ -230,7 +245,7 @@ function theme_webform_results_table($variables) {
 
   // Generate a row for each submission.
   foreach ($submissions as $sid => $submission) {
-    $cell[] = l($sid, 'node/' . $node->nid . '/submission/' . $sid);
+    $cell[] = $node->webform['no_storage'] ? $sid : l($sid, 'node/' . $node->nid . '/submission/' . $sid);
     $cell[] = format_date($submission->submitted, 'small');
     $cell[] = theme('username', array('account' => $submission));
     $cell[] = $submission->remote_addr;
@@ -245,7 +260,6 @@ function theme_webform_results_table($variables) {
         $cell[] = $submission_output;
       }
     }
-
     $rows[] = $cell;
     unset($cell);
   }
@@ -255,9 +269,10 @@ function theme_webform_results_table($variables) {
 
   if (count($rows) == 0) {
     $rows[] = array(array('data' => t('There are no submissions for this form. <a href="!url">View this form</a>.', array('!url' => url('node/' . $node->nid))), 'colspan' => 4));
+    // Check if we need to alert user that this form stores no data.
+    webform_no_storage_message($node);
   }
 
-
   $output = '';
   $output .= theme('webform_results_per_page', array('total_count' => $total_count, 'pager_count' => $pager_count));
   $output .= theme('table', array('header' => $header, 'rows' => $rows));
@@ -447,6 +462,9 @@ function webform_results_download_form($form, &$form_state, $node) {
     '#value' => t('Download'),
   );
 
+  // Check if we need to alert user that this form stores no data.
+  webform_no_storage_message($node);
+
   return $form;
 }
 
@@ -924,6 +942,9 @@ function theme_webform_results_analysis($variables) {
     $rows[] = array(array('data' => t('There are no submissions for this form. <a href="!url">View this form</a>.', array('!url' => url('node/' . $node->nid))), 'colspan' => 20));
   }
 
+  // Check if we need to alert user that this form stores no data.
+  webform_no_storage_message($node);
+
   return theme('table', array('header' => $header, 'rows' => $rows, 'attributes' => array('class' => array('webform-results-analysis'))));
 }
 
diff --git a/includes/webform.submissions.inc b/includes/webform.submissions.inc
index 925aff5..f73a92c 100644
--- a/includes/webform.submissions.inc
+++ b/includes/webform.submissions.inc
@@ -103,20 +103,24 @@ function webform_submission_insert($node, $submission) {
       $function($node, $submission);
     }
     $submission->nid = $node->webform['nid'];
-    drupal_write_record('webform_submissions', $submission);
+    if (!$node->webform['no_meta_data']) {
+      drupal_write_record('webform_submissions', $submission);
+    }
     $is_new = TRUE;
   }
 
-  foreach ($submission->data as $cid => $values) {
-    foreach ($values['value'] as $delta => $value) {
-      $data = array(
-        'nid' => $node->webform['nid'],
-        'sid' => $submission->sid,
-        'cid' => $cid,
-        'no' => $delta,
-        'data' => is_null($value) ? '' : $value,
-      );
-      drupal_write_record('webform_submitted_data', $data);
+  if (!$node->webform['no_storage']) {
+    foreach ($submission->data as $cid => $values) {
+      foreach ($values['value'] as $delta => $value) {
+        $data = array(
+          'nid' => $node->webform['nid'],
+          'sid' => $submission->sid,
+          'cid' => $cid,
+          'no' => $delta,
+          'data' => is_null($value) ? '' : $value,
+        );
+        drupal_write_record('webform_submitted_data', $data);
+      }
     }
   }
 
@@ -705,6 +709,43 @@ function webform_get_submissions($filters = array(), $header = NULL, $pager_coun
     $previous = $row->sid;
   }
 
+  // If $previous is unset, obtain submission meta-data only (form does not store submitted data).
+  if ($previous === 0) {
+    // Query the required submission data.
+    $query = db_select('webform_submissions', 's');
+    $query->leftJoin('users', 'u', 'u.uid = s.uid');
+    $query
+      ->fields('s')
+      ->fields('u', array('name'))
+      ->condition('s.sid', $sids, 'IN')
+      ->orderBy('s.sid', 'ASC');
+
+    // By adding the NID to this query we allow MySQL to use the primary key on
+    // in webform_submitted_data for sorting (nid_sid_cid_no).
+    if (isset($filters['nid'])) {
+      $query->condition('s.nid', $filters['nid']);
+    }
+
+    $result = $query->execute();
+
+    // Convert the queried rows into submissions.
+    $previous = 0;
+    foreach ($result as $row) {
+      if ($row->sid != $previous) {
+        $submissions[$row->sid] = new stdClass();
+        $submissions[$row->sid]->sid = $row->sid;
+        $submissions[$row->sid]->nid = $row->nid;
+        $submissions[$row->sid]->submitted = $row->submitted;
+        $submissions[$row->sid]->remote_addr = $row->remote_addr;
+        $submissions[$row->sid]->uid = $row->uid;
+        $submissions[$row->sid]->name = $row->name;
+        $submissions[$row->sid]->is_draft = $row->is_draft;
+        $submissions[$row->sid]->data = array();
+      }
+      $previous = $row->sid;
+    }
+  }
+
   foreach (module_implements('webform_submission_load') as $module) {
     $function = $module . '_webform_submission_load';
     $function($submissions);
diff --git a/webform.install b/webform.install
index 19dacf4..9ea7db4 100644
--- a/webform.install
+++ b/webform.install
@@ -109,6 +109,20 @@ function webform_schema() {
         'not null' => TRUE,
         'default' => -1,
       ),
+      'no_storage' => array(
+        'description' => 'Boolean value for whether to not store submitted data.',
+        'type' => 'int',
+        'size' => 'tiny',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
+      'no_meta_data' => array(
+        'description' => 'Boolean value for whether to not store submission met-data (in conjunction with no_storage).',
+        'type' => 'int',
+        'size' => 'tiny',
+        'not null' => TRUE,
+        'default' => 0,
+      ),
     ),
     'primary key' => array('nid'),
   );
@@ -831,3 +845,16 @@ function webform_update_7319(&$sandbox) {
 function webform_update_7320() {
   db_query("UPDATE {file_managed} SET status = 1 WHERE fid IN (SELECT fid FROM {file_usage} WHERE module = :module_name)", array(':module_name' => 'webform'));
 }
+
+/**
+ * Add additional columns for control of not storing submitted data.
+ */
+function webform_update_7321() {
+  if (!db_field_exists('webform', 'no_storage')) {
+    db_add_field('webform', 'no_storage', array('type' => 'int', 'not null' => TRUE, 'default' => 0));
+  }
+
+  if (!db_field_exists('webform', 'no_meta_data')) {
+    db_add_field('webform', 'no_meta_data', array('type' => 'int', 'not null' => TRUE, 'default' => 0));
+  }
+}
diff --git a/webform.module b/webform.module
index 050f949..53b9718 100644
--- a/webform.module
+++ b/webform.module
@@ -364,6 +364,11 @@ function webform_menu_load($nid) {
   if (!isset($node->type) || !in_array($node->type, webform_variable_get('webform_node_types'))) {
     return FALSE;
   }
+  else {
+    if ($node->webform['no_storage'] && db_query('SELECT COUNT(eid) FROM {webform_emails} WHERE nid = :nid', array(':nid' => $nid))->fetchField() == 0) {
+      drupal_set_message(t('The form %title is not saving submissions and no e-mails have been configured - data may be lost!', array('%title' => $node->title)), 'warning', FALSE);
+    }
+  }
   return $node;
 }
 
@@ -2504,7 +2509,10 @@ function webform_client_form_submit($form, &$form_state) {
 
   // Check if this form is sending an email.
   if (!$is_draft && !$form_state['values']['details']['finished']) {
-    $submission = webform_get_submission($node->webform['nid'], $sid, TRUE);
+    // Don't reset submission data if not storing submitted data.
+    if (!$node->webform['no_storage']) {
+      $submission = webform_get_submission($node->webform['nid'], $sid, TRUE);
+    }
     webform_submission_send_mail($node, $submission);
   }
 
@@ -3885,3 +3893,22 @@ function webform_mollom_form_info($form_id) {
 
   return $form_info;
 }
+
+/**
+ * Set a message warning user that form is not storing data.
+ *
+ * @param $node
+ *   The Webform node.
+ */
+function webform_no_storage_message($node) {
+  // Show warning on Submissions, Table, Download, and Analysis pages.
+  if ($node->webform['no_storage']) {
+    if ($node->webform['no_meta_data']) {
+      $no_storage_msg = t('The form %title is saving neither submission meta-data, nor submitted data.', array('%title' => $node->title));
+    }
+    else {
+      $no_storage_msg = t('The form %title is not saving submitted data.', array('%title' => $node->title));
+    }
+    drupal_set_message($no_storage_msg, 'warning', FALSE);
+  }
+}
