diff --git a/eck.api.php b/eck.api.php
index 3f6be55..0e7cb70 100644
--- a/eck.api.php
+++ b/eck.api.php
@@ -29,4 +29,22 @@ function hook_eck_entity_type_update(EntityType $entity_type) {
  */
 function hook_eck_entity_type_delete(EntityType $entity_type) {
 
-}
\ No newline at end of file
+}
+
+/**
+ * Alter the message shown when an ECK entity is saved.
+ *
+ * @param string &$save_message
+ *   The default message. This can be altered.
+ *
+ * @param object $entity
+ *   The entity object.
+ */
+function hook_eck_entity_save_message_alter(&$save_message, $entity) {
+  if ($entity->entityType() == 'my_entity_type' && $entity->bundle() == 'my_bundle') {
+    $save_message = t('Saved my custom @bundle entity: @label', array(
+      '@bundle' => $entity->bundle(),
+      '@label' => entity_label($entity->entityType(), $entity)
+    ));
+  }
+}
diff --git a/eck.entity.inc b/eck.entity.inc
index 68b1689..f578697 100644
--- a/eck.entity.inc
+++ b/eck.entity.inc
@@ -510,7 +510,18 @@ function eck__entity__form_submit($form, &$state) {
   
   $entity->save();
 
-  drupal_set_message(t("Entity {$entity->id} - @entity_label has been saved", array("@entity_label" => entity_label($form['#entity_type'], $entity)) ));
+  $entity_info = entity_get_info($entity->entityType());
+  $save_message = t("@bundle - @entity_label has been saved", array(
+    "@bundle" => $entity_info['bundles'][$entity->bundle()]['label'],
+    "@entity_label" => entity_label($entity->entityType(), $entity)
+  ));
+
+  drupal_alter('eck_entity_save_message', $save_message, $entity);
+
+  if (!empty($save_message)) {
+    drupal_set_message($save_message);
+  }
+
   $uri = eck__entity__uri($entity);
   $state['redirect'] = $uri['path'];
 }
