diff --git a/modules/salesforce_pull/salesforce_pull.module b/modules/salesforce_pull/salesforce_pull.module
index 524deb6..f2c12ec 100644
--- a/modules/salesforce_pull/salesforce_pull.module
+++ b/modules/salesforce_pull/salesforce_pull.module
@@ -313,6 +313,13 @@ 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.
+    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) {
+        continue 2;
+      }
+    }
     // Allow other modules to define or alter the mapping object.
     drupal_alter('salesforce_pull_mapping_object', $mapping_object, $sf_object, $sf_mapping);
     $exists = $mapping_object ? TRUE : FALSE;
diff --git a/salesforce.api.php b/salesforce.api.php
index 89f7405..14d47aa 100644
--- a/salesforce.api.php
+++ b/salesforce.api.php
@@ -155,6 +155,22 @@ 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
