diff --git modules/customer/commerce_customer.features.inc modules/customer/commerce_customer.features.inc
new file mode 100644
index 0000000..a95b9b5
--- /dev/null
+++ modules/customer/commerce_customer.features.inc
@@ -0,0 +1,101 @@
+<?php
+
+/**
+ * Export Drupal Commerce Profiles to Features.
+ *
+ * This features implementation cares only about the fields assigned to a
+ * customer type. The customer type itself has still to defined with the
+ * hook_commerce_customer_profile_info().
+ */
+
+/**
+ * Profile Type export
+ */
+function commerce_customer_features_api() {
+  return array(
+  'commerce_customer' => array(
+    'name' => t('Commerce Customer Profile Types'),
+    'default_hook' => 'customer_default_types',
+    'features_source' => TRUE,
+    ),
+  );
+}
+
+/**
+ * Defines the default hook for features integration.
+ *
+ * Since the commerce_customer module doesn't implement this
+ * it's done here :)
+ */
+function commerce_customer_customer_default_types() {
+  return commerce_customer_commerce_customer_profile_info();
+}
+
+/**
+ * Implements hook_features_export_options().
+ */
+function commerce_customer_features_export_options() {
+  $options = array();
+  $profile_types = commerce_customer_profile_types();
+  if (!empty($profile_types)) {
+    foreach ($profile_types as $type) {
+      $options[$type->type] = $type->name;
+    }
+  }
+  return $options;
+}
+
+/**
+* Build the export information for features.
+*/
+function commerce_customer_features_export($data, &$export, $module_name = '') {
+  $pipe = array();
+
+  // Add commerce_customer_profile as dependency
+  $export['dependencies']['commerce_customer'] = 'commerce_customer';
+
+  foreach ($data as $type) {
+    $export['features']['commerce_customer'][$type] = $type;
+
+    // Add module dependencies
+    $info = commerce_customer_profile_type_load($type);
+    $export['dependencies'][$info->module] = $info->module;
+
+    // Fetch fields of the profile type and add them as dependency
+    $fields = field_info_instances('commerce_customer_profile', $type);
+    foreach ($fields as $name => $field) {
+      $pipe['field'][] = "commerce_customer_profile-{$field['bundle']}-{$field['field_name']}";
+    }
+  }
+  return $pipe;
+}
+
+/**
+ * Implements hook_features_export_render().
+ */
+function commerce_customer_features_export_render($module, $data) {
+  // Return nothing, since the appropriate code has to exist already
+  return array();
+}
+
+
+/**
+ * Implements hook_features_revert().
+ */
+function commerce_customer_features_revert($module) {
+  // Nothing to do here besides recaching - fields are handled by the fields
+  // implementation of features.
+
+  // Re-Cache
+  drupal_static_reset('commerce_customer_profile_types');
+  commerce_customer_profile_types();
+
+  return TRUE;
+}
+
+/**
+ * Implements hook_features_rebuild().
+ */
+function commerce_customer_features_rebuild($module) {
+  return commerce_customer_features_revert($module);
+}
diff --git modules/customer/commerce_customer.info modules/customer/commerce_customer.info
index e6aabeb..60387fb 100644
--- modules/customer/commerce_customer.info
+++ modules/customer/commerce_customer.info
@@ -18,3 +18,6 @@ files[] = includes/views/handlers/commerce_customer_handler_field_customer_profi
 
 ; Simple tests
 ; files[] = tests/commerce_customer.test
+
+; Features integration
+files[] = commerce_customer.features.inc
diff --git modules/product/commerce_product.features.inc modules/product/commerce_product.features.inc
new file mode 100644
index 0000000..618e28e
--- /dev/null
+++ modules/product/commerce_product.features.inc
@@ -0,0 +1,130 @@
+<?php
+
+/**
+ * Export Drupal Commerce products to Features.
+ */
+
+/**
+ * Product Type export
+ */
+function commerce_product_features_api() {
+  return array(
+  'commerce_product' => array(
+    'name' => t('Commerce Products'),
+    'default_hook' => 'product_default_types',
+    'default_file' => FEATURES_DEFAULTS_INCLUDED,
+    'features_source' => TRUE,
+    ),
+  );
+}
+
+/**
+* Defines the default hook for features integration.
+*
+* Since the commerce_product module doesn't implement this
+* it's done here :)
+*/
+function commerce_product_product_default_types() {
+  return db_query("SELECT * FROM {commerce_product_type} WHERE type = 'product'")->fetchAllAssoc('type');
+}
+
+/**
+ * Implements hook_features_export_options().
+ */
+function commerce_product_features_export_options() {
+  $options = array();
+  $product_types = commerce_product_types();
+  if (!empty($product_types)) {
+    foreach ($product_types as $type) {
+      $options[$type->type] = $type->name;
+    }
+  }
+  return $options;
+}
+
+/**
+ * Build the export information for features.
+ */
+function commerce_product_features_export($data, &$export, $module_name = '') {
+  $pipe = array();
+
+  // Add commerce_product as dependency
+  $export['dependencies']['commerce_product'] = 'commerce_product';
+
+  foreach ($data as $type) {
+    $export['features']['commerce_product'][$type] = $type;
+
+    $fields = field_info_instances('commerce_product', $type);
+    foreach ($fields as $name => $field) {
+      $pipe['field'][] = "commerce_product-{$field['bundle']}-{$field['field_name']}";
+    }
+  }
+  return $pipe;
+}
+
+/**
+ * Implements hook_features_export_render().
+ */
+function commerce_product_features_export_render($module, $data) {
+  $output = array();
+  $output[] = '  $items = array(';
+  foreach ($data as $type) {
+    $info = commerce_product_type_load($type);
+    if (!empty($info)) {
+      $output[] = "  (object) array(";
+      foreach ($info as $key => $t) {
+        if ($t) {
+          $text = str_replace("'", "\'", $info->$key);
+          $text = (!empty($text) && $key != 'type') ? "t('{$text}')" : "'{$text}'";
+          $output[] = "      '{$key}' => {$text},";
+        }
+        else {
+          $output[] = "      '{$key}' => '{$info->$key}',";
+        }
+      }
+      $output[] = "    ),";
+    }
+  }
+  $output[] = '  );';
+  $output[] = '  return $items;';
+  $output = implode("\n", $output);
+  return array('product_default_types' => $output);
+}
+
+
+/**
+ * Implements hook_features_revert().
+ */
+function commerce_product_features_revert($module) {
+  // Get default product types
+  if (module_hook($module, 'product_default_types')) {
+    $default_types = module_invoke($module, 'product_default_types');
+    $existing_types = commerce_product_types();
+    foreach ($default_types as $type) {
+      // Add / or update
+      if (!isset($existing_types[$type->type])) {
+        $type->is_new = TRUE;
+      }
+      // Use UI function because it provides already the logic we need
+      module_invoke('commerce_product_ui', 'product_type_save', $type);
+    }
+  }
+  else {
+    drupal_set_message(t('Could not load default product types.'), 'error');
+    return FALSE;
+  }
+
+  // Re-Cache
+  drupal_static_reset('commerce_product_types');
+  commerce_product_types();
+
+  menu_rebuild();
+  return TRUE;
+}
+
+/**
+ * Implements hook_features_rebuild().
+ */
+function commerce_product_features_rebuild($module) {
+  return commerce_product_features_revert($module);
+}
diff --git modules/product/commerce_product.info modules/product/commerce_product.info
index c7003db..f4cd802 100644
--- modules/product/commerce_product.info
+++ modules/product/commerce_product.info
@@ -21,3 +21,9 @@ files[] = includes/views/handlers/commerce_product_handler_field_product_operati
 
 ; Simple tests
 files[] = tests/commerce_product.test
+
+; Third-party module integration
+files[] = commerce_product.features.inc