diff --git a/postal_code.install b/postal_code.install
index ea20a58..e1d373f
--- a/postal_code.install
+++ b/postal_code.install
@@ -32,7 +32,7 @@ function postal_code_uninstall() {
 function postal_code_field_schema($field) {
   if ($field['type'] == 'postal_code') {
     $columns = array(
-      'postal' => array(
+      'value' => array(
         'type'      => 'varchar',
         'length'    => '16',
         'not null'  => FALSE,
@@ -41,3 +41,25 @@ function postal_code_field_schema($field) {
   }
   return array('columns' => $columns);
 }
+
+/**
+ * Change postal column to value to allow entity api integration.
+ */
+function postal_code_update_7100() {
+  foreach (field_info_fields() as $field) {
+    if ($field['type'] == 'postal_code') {
+      $tables = array(
+        _field_sql_storage_tablename($field),
+        _field_sql_storage_revision_tablename($field)
+      );
+      $column_old = $field['field_name'] . '_postal';
+      $column_new = $field['field_name'] . '_value';
+      $field_schema = postal_code_field_schema($field);
+      $spec = $field_schema['columns']['value'];
+
+      foreach ($tables as $table) {
+        db_change_field($table, $column_old, $column_new, $spec);
+      }
+    }
+  }
+}
diff --git a/postal_code.module b/postal_code.module
index 6907d5a..22ff01e 100755
--- a/postal_code.module
+++ b/postal_code.module
@@ -121,11 +121,13 @@ function postal_code_admin_settings() {
 function postal_code_field_info() {
   return array(
     'postal_code' => array(
-      'label'             => t('Postal Code'),
-      'description'       => t('Postal Code field.'),
-      'settings'          => array('max_length' => 16),
-      'default_widget'    => 'postal_code_any_postal_code_form',
-      'default_formatter' => 'postal_code_simple_text',
+      'label'              => t('Postal Code'),
+      'description'        => t('Postal Code field.'),
+      'settings'           => array('max_length' => 16),
+      'default_widget'     => 'postal_code_any_postal_code_form',
+      'default_formatter'  => 'postal_code_simple_text',
+      'property_type'      => 'text',
+      'property_callbacks' => array('entity_metadata_field_text_property_callback'),
     ),
   );
 }
@@ -134,7 +136,7 @@ function postal_code_field_info() {
  * Implements hook_field_is_empty().
  */
 function postal_code_field_is_empty($item, $field) {
-  return empty($item['postal']);
+  return empty($item['value']);
 }
 
 /**
@@ -175,12 +177,12 @@ function postal_code_field_widget_info() {
 function postal_code_field_widget_form(&$form, &$form_state, $field, $instance, $langcode, $items, $delta, $element) {
   $matches = array();
   if (preg_match('/^postal_code_([a-z]{2,3})_postal_code_form$/', $instance['widget']['type'], $matches)) {
-    $element['postal'] = array(
+    $element['value'] = array(
       '#type'           => 'textfield',
       '#title'          => filter_xss_admin($instance['label']),
       '#maxlength'      => 16,
       '#required'       => $element['#required'],
-      '#default_value'  => isset($items[$delta]['postal']) ? check_plain($items[$delta]['postal']) : NULL,
+      '#default_value'  => isset($items[$delta]['value']) ? check_plain($items[$delta]['value']) : NULL,
       '#element_validate' => array('_postal_code_postal_validate'),
       '#description'    => filter_xss_admin($instance['description']),
     );
@@ -263,7 +265,7 @@ function postal_code_field_formatter_view($entity_type, $entity, $field, $instan
   switch ($display['type']) {
     case 'postal_code_simple_text':
       foreach ($items as $delta => $item) {
-        $element[$delta] = array('#markup' => check_plain($item['postal']));
+        $element[$delta] = array('#markup' => check_plain($item['value']));
       }
       break;
   }
