diff --git a/conditional_fields.api.php b/conditional_fields.api.php
index d937047..07b1068 100644
--- a/conditional_fields.api.php
+++ b/conditional_fields.api.php
@@ -193,3 +193,29 @@ function conditional_fields_example_fancy_view_behavior($dependee, $dependent, $
     $build['#prefix'] .= 'foo';
   }
 }
+
+/**
+ * Alter the dependee before dumping it as a code.
+ *
+ * @param array $dependee
+ *   A dependee to process.
+ * @param string $module_name
+ *   The name of module providing the data.
+ *
+ * @see conditional_fields_features_export_render()
+ */
+function hook_conditional_fields_features_export_render_alter(array &$dependee, $module_name) {
+}
+
+/**
+ * Alter the dependee before adding it to a database.
+ *
+ * @param array $dependee
+ *   A dependee to process.
+ * @param string $module_name
+ *   The name of module providing the data.
+ *
+ * @see conditional_fields_features_rebuild()
+ */
+function hook_conditional_fields_features_rebuild_alter(array &$dependee, $module_name) {
+}
diff --git a/conditional_fields.features.inc b/conditional_fields.features.inc
new file mode 100644
index 0000000..e1d878f
--- /dev/null
+++ b/conditional_fields.features.inc
@@ -0,0 +1,87 @@
+<?php
+
+/**
+ * @file
+ * Features integration.
+ */
+
+/**
+ * Implements hook_conditional_fields_features_export_render_alter().
+ *
+ * @internal
+ */
+function conditional_fields_conditional_fields_features_export_render_alter(array &$dependee, $module_name) {
+  conditional_fields_features_entity_reference_process($dependee, 'entity_get_uuid_by_id');
+}
+
+/**
+ * Implements hook_conditional_fields_features_rebuild_alter().
+ *
+ * @internal
+ */
+function conditional_fields_conditional_fields_features_rebuild_alter(array &$dependee, $module_name) {
+  conditional_fields_features_entity_reference_process($dependee, 'entity_get_id_by_uuid');
+}
+
+/**
+ * Allows exporting UUIDs of referenced entities instead of their IDs.
+ *
+ * @param array $dependee
+ *   A dependee to process.
+ * @param string $exchanger
+ *   A callback function to swap ID with UUID and vice versa.
+ *
+ * @internal
+ */
+function conditional_fields_features_entity_reference_process(array &$dependee, $exchanger) {
+  static $field_info = array();
+
+  if (function_exists($exchanger)) {
+    $field_parents_callback = function ($i) {
+      return array('value', $i, 'target_id');
+    };
+
+    // Check for the entity reference field by specific parents.
+    if (NULL !== drupal_array_get_nested_value($dependee['options'], $field_parents_callback(0))) {
+      if (!isset($field_info[$dependee['dependee']])) {
+        $field_info[$dependee['dependee']] = field_info_field($dependee['dependee']);
+      }
+
+      // Distinguish the type of widget by the parents in "value_form".
+      foreach (array(
+        // Hierarchical select widget.
+        function ($i) {
+          return array('value_form', 'hierarchical_select', 'selects', $i);
+        },
+        // Default widgets.
+        function ($i) {
+          return array('value_form', $i, 'target_id');
+        },
+      ) as $widget_parents_callback) {
+        if (NULL !== drupal_array_get_nested_value($dependee['options'], $widget_parents_callback(0))) {
+          $ids_list = array();
+
+          foreach ($dependee['options']['value'] as $i => $option) {
+            $ids_list[$i] = $option['target_id'];
+          }
+
+          $ids = $exchanger($field_info[$dependee['dependee']]['settings']['target_type'], $ids_list);
+
+          // Need to iterate over the initial list to preserve ordering of
+          // values.
+          foreach ($ids_list as $i => $id) {
+            if (isset($ids[$id])) {
+              // Set value for the field and its form.
+              foreach (array($field_parents_callback($i), $widget_parents_callback($i)) as $parents) {
+                drupal_array_set_nested_value($dependee['options'], $parents, $ids[$id]);
+              }
+            }
+          }
+
+          // A single field cannot have more than one widget so stop here.
+          break;
+        }
+      }
+    }
+  }
+}
diff --git a/conditional_fields.module b/conditional_fields.module
index 5b50edd..9e927b8 100644
--- a/conditional_fields.module
+++ b/conditional_fields.module
@@ -95,6 +95,23 @@ function conditional_fields_permission() {
   );
 }
 
+/**
+ * Implements hook_hook_info().
+ */
+function conditional_fields_hook_info() {
+  $info = array();
+
+  $info['conditional_fields_features_export_render_alter'] = array(
+    'group' => 'features',
+  );
+
+  $info['conditional_fields_features_rebuild_alter'] = array(
+    'group' => 'features',
+  );
+
+  return $info;
+}
+
 /**
  * Implements hook_menu().
  */
diff --git a/includes/conditional_fields.features.inc b/includes/conditional_fields.features.inc
index 24c2885..b0f1fd3 100644
--- a/includes/conditional_fields.features.inc
+++ b/includes/conditional_fields.features.inc
@@ -59,13 +59,15 @@ function conditional_fields_features_export_render($module_name, $data, $export
       $code[] = '  $items["' . $option . '"] = array(';
       foreach ($info['dependents'] as $dependent_field_name => $dependees) {
         foreach ($dependees as $dependee) {
-          $code[] = "    array(";
-          $code[] = "      'entity' => '" . $entity . "',";
-          $code[] = "      'bundle' => '" . $bundle . "',";
-          $code[] = "      'dependent' => '" . $dependent_field_name . "',";
-          $code[] = "      'dependee' => '" . $dependee['dependee'] . "',";
-          $code[] = "      'options' => " . features_var_export($dependee['options'], '      ') . ',';
-          $code[] = '    ),';
+          $dependee = array(
+            'entity' => $entity,
+            'bundle' => $bundle,
+            'dependent' => $dependent_field_name,
+          ) + $dependee;
+
+          drupal_alter(__FUNCTION__, $dependee, $module_name);
+
+          $code[] = '    ' . features_var_export($dependee, '    ') . ',';
         }
       }
 
@@ -94,8 +96,10 @@ function conditional_fields_features_rebuild($module) {
     $dependencies = conditional_fields_load_dependencies();
     $instances = field_info_instances();
     foreach ($defaults as $item) {
-      foreach($item as $field) {
+      foreach ($item as $field) {
         if (isset($dependencies[$field['entity']][$field['bundle']])) {
+          drupal_alter(__FUNCTION__, $field, $module);
+
           foreach ($dependencies[$field['entity']][$field['bundle']] as $dependancy_type => $field_dep_settings) {
             if ($dependancy_type == 'dependees' && !empty($field_dep_settings)) {
               foreach ($field_dep_settings as $dep_setting) {
