diff --git a/includes/webform.pages.inc b/includes/webform.pages.inc
index 99bc8a8..7bb4941 100644
--- a/includes/webform.pages.inc
+++ b/includes/webform.pages.inc
@@ -226,6 +226,19 @@ function webform_configure_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('Used in conjunction with "Do not store submitted data". 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.'),
+    ),
+  );
   $form['advanced']['submit_text'] = array(
     '#type' => 'textfield',
     '#title' => t('Submit button text'),
@@ -338,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 b075060..0b1cc96 100644
--- a/includes/webform.report.inc
+++ b/includes/webform.report.inc
@@ -51,24 +51,34 @@ function webform_results_submissions($node, $user_filter, $pager_count) {
       $row[] = theme('username', $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;
+      // 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 (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);
+      }
     }
     $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;
@@ -179,6 +189,10 @@ function webform_results_table($node, $pager_count = 0) {
   if ($pager_count) {
     $output .= theme('pager', NULL, $pager_count, 0);
   }
+
+  // Check if we need to alert user that this form stores no data.
+  webform_no_storage_message($node);
+
   return $output;
 }
 
@@ -218,7 +232,7 @@ function theme_webform_results_table($node, $components, $submissions, $total_co
 
   // 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', $submission);
     $cell[] = $submission->remote_addr;
@@ -243,6 +257,8 @@ function theme_webform_results_table($node, $components, $submissions, $total_co
 
   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);
   }
 
 
@@ -436,6 +452,9 @@ function webform_results_download_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;
 }
 
@@ -901,6 +920,9 @@ function theme_webform_results_analysis($node, $data, $sids = array(), $analysis
     $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', $header, $rows, array('class' => 'webform-results-analysis'));
 }
 
diff --git a/includes/webform.submissions.inc b/includes/webform.submissions.inc
index d8a5bbd..01a0f18 100644
--- a/includes/webform.submissions.inc
+++ b/includes/webform.submissions.inc
@@ -101,20 +101,24 @@ function webform_submission_insert($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);
+      }
     }
   }
 
@@ -687,6 +691,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 (empty($previous)) {
+    // Query the required submission data.
+    $query = 'SELECT s.*, u.name, u.mail, u.status ' .
+             'FROM {webform_submissions} s ' .
+             'LEFT JOIN {users} u ON u.uid = s.uid ' .
+             'WHERE s.sid IN (' . db_placeholders($sids) . ') ' .
+             // By adding the NID to this query we allow MySQL to use the primary
+             // key in webform_submitted_data for sorting (nid_sid_cid_no).
+             (isset($filters['nid']) ? 'AND s.nid = %d ' : '') .
+             'ORDER BY s.sid ASC';
+
+    $args = $sids;
+    if (isset($filters['nid'])) {
+      $args[] = $filters['nid'];
+    }
+
+    $result = db_query($query, $args);
+
+    // Convert the queried rows into submissions.
+    $previous = array();
+    while ($row = db_fetch_object($result)) {
+      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 2ab991b..c25322a 100644
--- a/webform.install
+++ b/webform.install
@@ -110,6 +110,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'),
   );
@@ -1533,3 +1547,19 @@ function _webform_recursive_delete($path) {
     @rmdir($path);
   }
 }
+
+
+/**
+ * Add additional columns for control of not storing submitted data.
+ */
+function webform_update_6332() {
+  if (!db_column_exists('webform', 'no_storage')) {
+    db_add_field($ret, 'webform', 'no_storage', array('type' => 'int', 'not null' => TRUE, 'default' => 0));
+  }
+
+  if (!db_column_exists('webform', 'no_meta_data')) {
+    db_add_field($ret, 'webform', 'no_meta_data', array('type' => 'int', 'not null' => TRUE, 'default' => 0));
+  }
+
+  return $ret;
+}
diff --git a/webform.module b/webform.module
index c4a88a6..c1e8eb0 100644
--- a/webform.module
+++ b/webform.module
@@ -362,6 +362,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_result(db_query('SELECT COUNT(eid) FROM {webform_emails} WHERE nid = %d', array($nid))) == 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;
 }
 
@@ -2389,7 +2394,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);
   }
 
@@ -3716,3 +3724,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);
+  }
+}
