diff --git a/migrate.api.php b/migrate.api.php
index 3afa242..8814150 100644
--- a/migrate.api.php
+++ b/migrate.api.php
@@ -11,11 +11,26 @@
 function hook_migrate_api() {
   $api = array(
     'api' => 2,
+    'migrations' => array(
+      'HookExample' => array('class_name' => 'HookExampleMigration'),
+    ),
   );
   return $api;
 }
 
 /**
+ * Alter information from all implementations of hook_migrate_api().
+ *
+ * @param array $info
+ *   An array of results from hook_migrate_api(), keyed by module name.
+ */
+function hook_migrate_api_alter(array &$info) {
+  if (isset($info['MODULE_NAME']['migrations']['HookExample'])) {
+    $info['MODULE_NAME']['migrations']['HookExample']['class_name'] = 'MyBetterHookMigration';
+  }
+}
+
+/**
  * Provides text to be displayed at the top of the dashboard page (migrate_ui).
  */
 function hook_migrate_overview() {
diff --git a/migrate.module b/migrate.module
index 5836322..893a962 100644
--- a/migrate.module
+++ b/migrate.module
@@ -274,6 +274,9 @@ function migrate_hook_info() {
   $hooks['migrate_api'] = array(
     'group' => 'migrate',
   );
+  $hooks['migrate_api_alter'] = array(
+    'group' => 'migrate',
+  );
   return $hooks;
 }
 
@@ -300,6 +303,9 @@ function migrate_get_module_apis($reset = FALSE) {
                 '%version' => MIGRATE_API_VERSION)));
       }
     }
+
+    // Allow modules to alter the migration information.
+    drupal_alter('migrate_api', $cache);
   }
 
   return $cache;
