diff --git a/form_builder.js b/form_builder.js
index ef00ba3..f4d8582 100644
--- a/form_builder.js
+++ b/form_builder.js
@@ -94,13 +94,16 @@ Drupal.behaviors.formBuilder.attach = function(context) {
     stop: Drupal.formBuilder.stopDrag
   });
 
-  // This sets the height of the drag target to be at least as hight as the field
+  // This sets the height of the drag target to be at least as high as the field
   // palette so that field can be more easily dropped into an empty form.  IE6
   // does not respect min-height but does treat height in the same manner that
   // min-height would be expected.  So a check for browser and version is needed
   // here.
   var property = $.browser.msie && $.browser.version < 7 ? 'height' : 'min-height';
   $formbuilder.css(property, $('#form-builder-fields').height());
+
+  // Add the placeholder for an empty form.
+  Drupal.formBuilder.checkForm();
 };
 
 /**
@@ -375,7 +378,9 @@ Drupal.formBuilder.deleteField = function() {
     $('ul.form-builder-fields').find('li.' + elementId).show('slow');
     // Remove the field from the form.
     $(this).remove();
-    // Check for empty fieldsets.
+
+    // Check for an entirely empty form and for empty fieldsets.
+    Drupal.formBuilder.checkForm();
     Drupal.formBuilder.checkFieldsets(null, null, true);
   });
 };
@@ -761,6 +766,16 @@ Drupal.formBuilder.checkFieldsets = function(exclusions) {
   });
 };
 
+/**
+ * Check the root form tag and place explanatory text if the form is empty.
+ */
+Drupal.formBuilder.checkForm = function () {
+  var $formBuilder = $('#form-builder');
+  if ($formBuilder.children('div.form-builder-wrapper').length == 0) {
+    $formBuilder.append(Drupal.settings.formBuilder.emptyForm);
+  }
+};
+
 Drupal.formBuilder.setActive = function(element, link) {
   Drupal.formBuilder.unsetActive();
   Drupal.formBuilder.activeElement = element;
diff --git a/form_builder.module b/form_builder.module
index 0b2886b..642d8e9 100644
--- a/form_builder.module
+++ b/form_builder.module
@@ -73,6 +73,10 @@ function form_builder_theme() {
       'render element' => 'element',
       'file' => 'includes/form_builder.admin.inc',
     ),
+    'form_builder_empty_form' => array(
+      'variables' => array(),
+      'file' => 'includes/form_builder.admin.inc',
+    ),
     'form_builder_empty_fieldset' => array(
       'variables' => array(),
       'file' => 'includes/form_builder.admin.inc',
diff --git a/includes/form_builder.admin.inc b/includes/form_builder.admin.inc
index f2bd73a..5f0e1a2 100644
--- a/includes/form_builder.admin.inc
+++ b/includes/form_builder.admin.inc
@@ -203,6 +203,7 @@ function form_builder_preview($f, &$form_state, $form, $form_type, $form_id) {
   $form['#attached']['js'][] = 'misc/machine-name.js';
 
   $settings = array(
+    'emptyForm' => theme('form_builder_empty_form'),
     'emptyFieldset' => theme('form_builder_empty_fieldset'),
     'noFieldSelected' => theme('form_builder_no_field_selected'),
     'fieldLoading' => theme('form_builder_field_loading'),
@@ -370,6 +371,17 @@ function theme_form_builder_element_wrapper($variables) {
 }
 
 /**
+ * Placeholder for an entirely empty form before any fields are added.
+ */
+function theme_form_builder_empty_form($variables) {
+  $output = '';
+  $output .= '<div class="form-builder-empty-form form-builder-empty-placeholder">';
+  $output .= '<span>' . t('Drag a field from the palette to add it to this form.') . '</span>';
+  $output .= '</div>';
+  return $output;
+}
+
+/**
  * Placeholder for empty fieldsets during drag and drop.
  */
 function theme_form_builder_empty_fieldset($variables) {
