diff --git a/salsa_donate_page/salsa_donate_page.module b/salsa_donate_page/salsa_donate_page.module
index a01e1ea..5820aa0 100644
--- a/salsa_donate_page/salsa_donate_page.module
+++ b/salsa_donate_page/salsa_donate_page.module
@@ -45,9 +45,38 @@ function salsa_donate_page_form($form, &$form_state, $donate_page, $view_mode) {
     '#markup' => '<script type="text/javascript" src="' . variable_get('salsa_api_url') . '/api/flashMessageJS.sjs"></script>',
   );
 
+  // Add default required fields for a donation.
+  $default_required = variable_get('salsa_entity_default_donate_fields', array(
+      'First_Name',
+      'Last_Name',
+      'Street',
+      'Zip',
+      'City',
+      'State',
+    ));
+  $required = array_merge(explode(',', $form_state['salsa_object']->Required), $default_required);
+
+  // Remove all unnecessary fields from the required ones.
+  $hidden_fields = variable_get('salsa_entity_hidden_required_donate_fields', array());
+  if (!empty($hidden_fields)) {
+    foreach ($required as $k => $v) {
+      if (in_array($v, $hidden_fields)) {
+        unset($required[$k]);
+      }
+    }
+  }
+  $form_state['salsa_object']->Required = implode(',', array_unique($required));
+
   // Supporter fieldset.
   salsa_entity_supporter_fieldset($form, $form_state, 'salsa_donate_page_form');
 
+  // Remove (hide) all unnecessary fields from the form.
+  foreach ($hidden_fields as $field) {
+    if (isset($form['Supporter_Info'][$field])) {
+      $form['Supporter_Info'][$field]['#access'] = FALSE;
+    }
+  }
+
   if ($donate_page->Include_In_Honor_Of == 'true' || $donate_page->Include_In_Memory_Of == 'true') {
     $form['Supporter_Info']['honor_memory_pre_text'] = array(
       '#markup' => t('This donation is...'),
