diff --git a/modules/salesforce_pull/salesforce_pull.module b/modules/salesforce_pull/salesforce_pull.module
index 3e8701d..65adc5e 100644
--- a/modules/salesforce_pull/salesforce_pull.module
+++ b/modules/salesforce_pull/salesforce_pull.module
@@ -163,6 +163,18 @@ function salesforce_pull_process_records($sf_object) {
   foreach ($sf_mappings as $sf_mapping) {
     // Mapping object exists?
     $mapping_object = salesforce_mapping_object_load_by_sfid($sf_object['Id']);
+    // Trigger a hook to allow other modules to prevent this object from
+    // creating or updating an entity.
+    $skip = FALSE;
+    foreach (module_implements('salesforce_pull_allow_sf_object') as $module) {
+      if (module_invoke($module, 'salesforce_pull_allow_sf_object', $sf_object, $mapping_object, $sf_mapping) === FALSE) {
+        $skip = TRUE;
+        continue;
+      }
+    }
+    if ($skip) {
+      continue;
+    }
     $exists = $mapping_object ? TRUE : FALSE;
     if ($exists && ($sf_mapping->sync_triggers & SALESFORCE_MAPPING_SYNC_SF_UPDATE)) {
       try {
diff --git a/salesforce.api.php b/salesforce.api.php
index f8dd4bf..bb2cd44 100644
--- a/salesforce.api.php
+++ b/salesforce.api.php
@@ -63,6 +63,23 @@ function hook_salesforce_push_entity_allowed($entity_type, $entity, $sf_sync_tri
 }
 
 /**
+ * Prevent a pull from updating/creating an entity.
+ *
+ * @param array $sf_object
+ *   A Salesforce object array loaded during a pull.
+ * @param object $mapping_object
+ *   The mapping object for this SF Object, or FALSE if none exists.
+ * @param object $sf_mapping
+ *   The mapping that pulled this object in the first place.
+ *
+ * @return bool
+ *   FALSE if the entity should be ignored.
+ */
+function hook_salesforce_pull_allow_sf_object($sf_object, $mapping_object, $sf_mapping) {
+
+}
+
+/**
  * Alter the value being mapped to an entity property from a Salesforce object.
  *
  * @param string $value
