diff --git a/includes/DeployPlan.inc b/includes/DeployPlan.inc
index 5a2286e..2abafb2 100644
--- a/includes/DeployPlan.inc
+++ b/includes/DeployPlan.inc
@@ -142,9 +142,19 @@ class DeployPlan {
           $this->processor->deploy($deployment_key, $endpoint, $lock_name);
         }
         else {
-          throw new DeployPlanException(t("The plan @plan can't be deployed because the endpoint @endpoint is invalid.", array('@plan' => $this->name, '@endpoint' => $endpoint_name)));
+          if (!empty($endpoint)) {
+            throw new DeployPlanException(t("The plan @plan can't be deployed because the endpoint @endpoint is invalid.", array('@plan' => $this->name, '@endpoint' => $endpoint_name)));
+          }
+          elseif ((int) $endpoint == 0) {
+            $endpoint_available = TRUE;
+          }
         }
       }
+      // If no endpoints were loaded but an endpoint does exist (though unchecked for plan)
+      // throw error indicating endpoint is available but must be selected.
+      if (empty($endpoints) && isset($endpoint_available)) {
+        throw new DeployPlanException(t("The plan @plan can't be deployed; no endpoint is selected.", array('@plan' => $this->name)));
+      }
       foreach ($endpoints as $endpoint) {
         $this->processor->publish($deployment_key, $endpoint, $lock_name);
       }
