diff --git a/plugins/FeedsUserProcessor.inc b/plugins/FeedsUserProcessor.inc
index d01db43..a707401 100644
--- a/plugins/FeedsUserProcessor.inc
+++ b/plugins/FeedsUserProcessor.inc
@@ -54,6 +54,19 @@ class FeedsUserProcessor extends FeedsProcessor {
     if (empty($account->name) || empty($account->mail) || !valid_email_address($account->mail)) {
       throw new FeedsValidationException(t('User name missing or email not valid.'));
     }
+
+    if (!empty($uid)) {
+      $account->uid = $uid;
+    }
+
+    // If uid is set and a user with that id doesn't exist, flag as new.
+    if (!empty($account->uid) && !user_load($account->uid)) {
+      $account->is_new = TRUE;
+    }
+    else {
+      $account->is_new = FALSE;
+      throw new FeedsValidationException(t($account->uid.' already exists.'));
+    }
   }
 
   /**
@@ -158,6 +171,11 @@ class FeedsUserProcessor extends FeedsProcessor {
   public function getMappingTargets() {
     $targets = parent::getMappingTargets();
     $targets += array(
+      'uid' => array(
+        'name' => t('User ID'),
+        'description' => t('The user ID. NOTE: use this feature with care, user IDs are usually assigned by Drupal.'),
+        'optional_unique' => TRUE,
+       ),
       'name' => array(
         'name' => t('User name'),
         'description' => t('Name of the user.'),
