diff --git a/salesforce_api/salesforce_api.module b/salesforce_api/salesforce_api.module
index 9d44c1f..a9a60e5 100644
--- a/salesforce_api/salesforce_api.module
+++ b/salesforce_api/salesforce_api.module
@@ -1313,7 +1313,7 @@ function salesforce_api_get_updated($type, $start, $end) {
   }
   $sf = salesforce_api_connect();
   if ($sf) {
-    $response = $sf->client->getUpdated($type, $start, $end);
+    $response = $sf->client->getUpdated($type, (int)$start, (int)$end);
     if ($response->ids) {
       return $response;
     } else {
diff --git a/sf_import/sf_import.module b/sf_import/sf_import.module
index 3d9819d..925260c 100644
--- a/sf_import/sf_import.module
+++ b/sf_import/sf_import.module
@@ -221,3 +221,67 @@ function sf_import_batchjob($fieldmap_key, $extra, &$context) {
   $context['sandbox']['position']++;
   $context['finished'] = $context['sandbox']['progress'] / $size;
 }
+
+/**
+ * Implements hook_cron().
+ */
+function sf_import_cron() {
+
+  $fieldmaps = salesforce_api_salesforce_field_map_load_all();
+  
+  // Get updated and/or deleted items for each fieldmap and store in sf_import_queue
+  // Start date is newest date of SFID stored in sf_import_queue, end date is time()
+  foreach ($fieldmaps as $map) {
+    if ($map->automatic == 0) {
+      break;
+    }
+    $sql = "SELECT time FROM {sf_import_queue} ORDER BY time DESC LIMIT 1";
+    $start = db_result(db_query($sql));
+    if (!$start) {
+      // If $start isn't set, then check when the import was last run
+      $start = variable_get('sf_import_queue_last_import', time() - 3600);
+    }
+    
+    if ($start - $end < 60) {
+      $start = $start - 60;
+    }
+    $end = time();
+    
+    // Set the time that the last import took place
+    variable_set('sf_import_queue_last_import', time());
+
+    if ($updates = salesforce_api_get_updated($map->salesforce, $start, $end)) {
+      $update_sfids = $updates->ids;
+      foreach ($update_sfids as $sfid) {
+        $sql = "SELECT sfid FROM {sf_import_queue} WHERE sfid = '%s'";
+        $exists = db_result(db_query($sql, $sfid));
+        if (!$exists) {
+          $object->time = time();
+          $object->sfid = $sfid;
+          $object->fieldmap = $map->name;
+          $ret = drupal_write_record('sf_import_queue', $object);
+        }
+      } 
+    }
+  }
+
+  // Process sf_import_queue items
+  $sql = "SELECT sfid, fieldmap FROM {sf_import_queue}";
+  while ($sfids = db_fetch_object(db_query($sql))) {
+    $fieldmap = $sfids->fieldmap;
+    $type = $fieldmaps[$fieldmap]->drupal;
+    
+    // "node" mappings are like "node_contenttype".
+    // others are like "user", "uc_order", etc.
+    if (strpos($type, 'node_') === 0) {
+      $type = 'node';
+    }
+
+    $function = 'sf_' . $type . '_import';
+    $drupal_id = salesforce_api_get_id_with_sfid($type, $sfids->sfid);
+    if (function_exists($function)) {
+      $oid = $function($sfids->sfid, $sfids->fieldmap, $drupal_id);
+    }
+    db_query("DELETE FROM {sf_import_queue} WHERE sfid = '%s'", $sfids->sfid);
+  }
+}
