diff --git a/entity.info.inc b/entity.info.inc
index 1f626cc..3062406 100644
--- a/entity.info.inc
+++ b/entity.info.inc
@@ -72,7 +72,9 @@ class EntityDefaultMetadataController {
     $info['properties'] = $this->convertSchema();
     foreach ($info['properties'] as $name => &$property) {
       // Add a description.
-      $property['description'] = t('@entity "@property" property.', array('@entity' => drupal_ucfirst($entity_label), '@property' => $name));
+      if (!isset($property['description'])) {
+        $property['description'] = t('@entity "@property" property.', array('@entity' => drupal_ucfirst($entity_label), '@property' => $name));
+      }
     }

     // Set better metadata for known entity keys.
@@ -157,6 +159,9 @@ function entity_metadata_convert_schema($table) {
         // As we cannot know about any setter access, leave out the setter
         // callback. For getting usually no further access callback is needed.
       );
+      if (isset($info['description'])) {
+        $properties[$name]['description'] = t($info['description']);
+      }
       if ($info['type'] == 'serial') {
         $properties[$name]['validation callback'] = 'entity_metadata_validate_integer_positive';
       }
