diff --git a/og_vocab.module b/og_vocab.module
index 54173ec..020c512 100644
--- a/og_vocab.module
+++ b/og_vocab.module
@@ -1172,6 +1172,20 @@ function og_vocab_form_taxonomy_form_vocabulary_alter(&$form, $form_state) {
         '#description' => t('The type of form element you would like to present to the user when creating this field in the %type type.', array('%type' => $bundle_label)),
       ) + $states;
 
+      // Add any custom widget settings form for this field.
+      $field = field_info_field($og_vocab->field_name);
+      $widget = array(
+        'type' => $og_vocab->settings['widget_type'],
+        'settings' => !empty($og_vocab->settings['widget']['settings']) ? $og_vocab->settings['widget']['settings'] : array(),
+      );
+      $instance = array('widget' => $widget);
+      $widget_type = field_info_widget_types($instance['widget']['type']);
+      // Add additional widget settings from the widget module.
+      $additions = module_invoke($widget_type['module'], 'field_widget_settings_form', $field, $instance);
+      if (is_array($additions)) {
+        $form['og_vocab']["$entity_type:$bundle"]['widget']['settings'] = $additions;
+      }
+
       $form['og_vocab']["$entity_type:$bundle"]['required'] = array(
         '#type' => 'checkbox',
         '#title' => t('Required field'),
@@ -1319,6 +1333,14 @@ function og_vocab_form_taxonomy_form_vocabulary_submit(&$form, $form_state) {
       foreach ($settings as $setting) {
         $og_vocab->settings[$setting] = $form_state['values']['og_vocab'][$key][$setting];
       }
+
+      // Now save any specific custom widget settings.
+      if (!empty($form_state['values']['og_vocab'][$key]['widget']['settings'])) {
+        foreach ($form_state['values']['og_vocab'][$key]['widget']['settings'] as $index => $settings) {
+            $og_vocab->settings['widget']['settings'][$index] = $settings;
+        }
+      }
+
       $og_vocab->field_name = $form_state['values']['og_vocab'][$key]['field_name'];
       $og_vocab->save();
     }
