diff --git a/geocoder.module b/geocoder.module
index a4ff05c..150ba2c 100644
--- a/geocoder.module
+++ b/geocoder.module
@@ -46,7 +46,9 @@ function geocoder($handler, $data, $options = array(), $cache_type = 2, $cache_r
   if ($cache_reset) {
     $static_cache = array();
   }
-  
+
+  drupal_alter('geocoder_geocode_data', $data, $options);
+
   if ($cache_type) {
     $cache_id = $handler . '_' . md5(serialize(array($data, $options)));
     if (!empty($static_cache[$cache_id])) {
diff --git a/geocoder.widget.inc b/geocoder.widget.inc
index 3e42151..949af28 100644
--- a/geocoder.widget.inc
+++ b/geocoder.widget.inc
@@ -261,7 +261,10 @@ function geocoder_widget_get_field_value($entity_type, $field_instance, $entity
     if ($delta_handling == 'c_to_s' || $delta_handling == 'c_to_m') {
       $source_field_values = geocoder_widget_get_field_concat($source_field_values);
     }
-    
+
+    // Allow other modules to alter values before we geocode them.
+    drupal_alter('geocoder_geocode_values', $source_field_values, $field_info,  $handler_settings, $entity);
+
     if (is_array($source_field_values) && count($source_field_values)) {
       $values = array();