diff --git a/CHANGELOG.txt b/CHANGELOG.txt
index 4e2ac0de09ee34f8b7fe71bf0ff83cdf3bd78a8d..72be12ed1378901f9e42979a26c57b29551e8478 100644
--- a/CHANGELOG.txt
+++ b/CHANGELOG.txt
@@ -3,6 +3,7 @@
 Feeds 6.x 1.0 XXXXXXXXXXXXXXXXXX
 --------------------------------
 
+- #872772 andrewlevine: Fix buildNode() (and node_load()) called unnecessarily.
 - #873240 thsutton: Use isset() to avoid notices.
 - #878528 Sutharsan: Don't show file in UI if file does not exist.
 - #901798 alex_b: Fix time off in SitemapParser.
diff --git a/plugins/FeedsNodeProcessor.inc b/plugins/FeedsNodeProcessor.inc
index 567c3554b93965a08ae26f02a05334d88422e57e..114dd6bcfce20e05e3ed02e76b6ff0ac1a4a5d70 100644
--- a/plugins/FeedsNodeProcessor.inc
+++ b/plugins/FeedsNodeProcessor.inc
@@ -35,13 +35,13 @@ class FeedsNodeProcessor extends FeedsProcessor {
 
       // Create/update if item does not exist or update existing is enabled.
       if (!($nid = $this->existingItemId($item, $source)) || ($this->config['update_existing'] != FEEDS_SKIP_EXISTING)) {
-        $node = $this->buildNode($nid, $source->feed_nid);
-
         // Only proceed if item has actually changed.
         $hash = $this->hash($item);
         if (!empty($nid) && $hash == $this->getHash($nid)) {
           continue;
         }
+
+        $node = $this->buildNode($nid, $source->feed_nid);
         $node->feeds_node_item->hash = $hash;
 
         // Map and save node. If errors occur don't stop but report them.