Index: references.inc
===================================================================
--- references.inc	(revision 88)
+++ references.inc	(working copy)
@@ -33,6 +33,18 @@
         'description' => t('The @label field of the node matched by node ID.', array('@label' => $instance['label'])),
         'real_target' => $name);
 
+      $targets[$name . ':url'] = array(
+        'name' => $instance['label'] . t(' (Node reference by Feeds URL)'),
+        'callback' => 'references_feeds_set_target',
+        'description' => t('The @label field of the node matched by Feeds URL.', array('@label' => $instance['label'])),
+        'real_target' => $name);
+
+      $targets[$name . ':guid'] = array(
+        'name' => $instance['label'] . t(' (Node reference by Feeds GUID)'),
+        'callback' => 'references_feeds_set_target',
+        'description' => t('The @label field of the node matched by Feeds GUID.', array('@label' => $instance['label'])),
+        'real_target' => $name);
+
       $targets[$name . ':title:duplicates'] = array(
         'name' => $instance['label'] . t(' (Node reference by node title) -- allow duplicate nodes'),
         'callback' => 'references_feeds_set_target',
@@ -70,6 +82,18 @@
         'description' => t('The @label field of the user matched by user ID.', array('@label' => $instance['label'])),
         'real_target' => $name);
 
+      $targets[$name . ':url'] = array(
+        'name' => $instance['label'] . t(' (User reference by Feeds URL)'),
+        'callback' => 'references_feeds_set_target',
+        'description' => t('The @label field of the node matched by Feeds URL.', array('@label' => $instance['label'])),
+        'real_target' => $name);
+
+      $targets[$name . ':guid'] = array(
+        'name' => $instance['label'] . t(' (User reference by Feeds GUID)'),
+        'callback' => 'references_feeds_set_target',
+        'description' => t('The @label field of the node matched by Feeds GUID.', array('@label' => $instance['label'])),
+        'real_target' => $name);
+
       $targets[$name . ':name:duplicates'] = array(
         'name' => $instance['label'] . t(' (User reference by user name) -- allow duplicate users'),
         'callback' => 'references_feeds_set_target',
@@ -109,7 +133,7 @@
     $value = array($value);
   }
 
-  // Determine whether we are matching against the title/user or nid/uid, and whether duplicates are allowed.
+  // Determine whether we are matching against the title/user, nid/uid, GUID, URL, and whether duplicates are allowed.
   list($target, $match_key, $duplicates) = explode(':', $target, 3);
   if (empty($duplicates)) {
     $value = array_unique($value);
@@ -139,6 +163,23 @@
     $id = NULL;
 
     switch ($match_key) {
+      case 'url':
+        $result = db_query('SELECT f.entity_id FROM {feeds_item} f WHERE f.url = :v', array( ':v' => $v) );
+        $id = $result->fetchField();
+        // Alert if no match is found.
+        if (empty($id)) {
+          drupal_set_message(t('Unique Feeds ID does not match an existing '.$typename));
+        }
+        break;
+      case 'guid':
+        $result = db_query('SELECT f.entity_id FROM {feeds_item} f WHERE f.guid = :v', array( ':v' => $v) );
+        $id = $result->fetchField();
+        // Alert if no match is found.
+        if (empty($id)) {
+          drupal_set_message(t('Unique Feeds ID does not match an existing '.$typename));
+        }
+        break;
+
       case 'title':
       case 'name':
         // Validate node title or user name.
