diff --git a/custom_pub.module b/custom_pub.module
index 99cc4b9..43c54b1 100644
--- a/custom_pub.module
+++ b/custom_pub.module
@@ -129,6 +129,15 @@ function custom_pub_form_alter(&$form, $form_state, $form_id) {
     foreach ($types as $type) {
       $form['workflow']['node_options']['#options'][$type['type']] = t($type['name']);
     }
+    
+    if (module_exists('fasttoggle')) {
+      $custom_publish_options = custom_pub_types_list();
+    
+      foreach ($custom_publish_options as $machine_name => $label) {
+        $form['fasttoggle']['fasttoggle_togglable_options']['#options'][$machine_name] = t('!label <small>!custom_publish_link</small>', array('!label' => $label, '!custom_publish_link' => l('(Custom Publish Option)', 'admin/structure/custom_pub')));
+        $form['fasttoggle']['fasttoggle_add_to_node_links']['#options'][$machine_name] = t('!label <small>!custom_publish_link</small>', array('!label' => $label, '!custom_publish_link' => l('(Custom Publish Option)', 'admin/structure/custom_pub')));
+      }
+    }
   }
 
   if ($form_id == 'node_admin_content') {
@@ -136,6 +145,15 @@ function custom_pub_form_alter(&$form, $form_state, $form_id) {
       array_unshift($form['#submit'], 'custom_pub_node_admin_inc_add');
     }
   }
+
+  // add integration for fasttoggle if it exists
+  if ($form_id == 'fasttoggle_settings_form') {
+    $custom_publish_options = custom_pub_types_list();
+
+    foreach ($custom_publish_options as $machine_name => $label) {
+      $form['nodes']['fasttoggle_node_settings']['#options'][$machine_name] = t('!label <small>!custom_publish_link</small>', array('!label' => $label, '!custom_publish_link' => l('(Custom Publish Option)', 'admin/structure/custom_pub')));
+    }
+  }
 }
 
 /**
@@ -472,3 +490,65 @@ function custom_pub_types($rebuild = FALSE) {
 function custom_pub_types_rebuild() {
   custom_pub_types(TRUE);
 }
+
+/**
+ * Implementation of hook_fasttoggle_config().
+ */
+function custom_pub_fasttoggle_config() {
+  return array('custom_pub' => array(
+    'path' => 'custom_pub/%node/toggle/%/%',
+    'page arguments' => array('node', 1, 3, 4),
+    )
+  );
+}
+
+/**
+ * Add integration with the Fasttoggle module.
+ * @param $type
+ * @param null $object
+ * @return array
+ */
+function custom_pub_fasttoggle_options($type, $object = NULL) {
+  $settings = array();
+
+  if ($type != 'node') {
+    return $settings;
+  }
+
+  $allow = node_access('update', $object);
+
+  // Get an array with all enabled fast toggle links
+  $fasttoggle_settings = variable_get('fasttoggle_node_settings', '');
+
+  $custom_publish_options = custom_pub_types_list();
+  $labels = custom_pub_fasttoggle_labels('node');
+
+  foreach ($custom_publish_options as $machine_name => $label) {
+    if (!empty($fasttoggle_settings[$machine_name]) && $allow && user_access('edit_custom_pub_' . $machine_name)) {
+      $settings['groups']['custom_pub']['instances'][$machine_name]['labels'] = $labels[$machine_name];
+    }
+  }
+
+  return $settings;
+}
+
+/**
+ * Implementation of hook_fasttoggle_labels().
+ */
+function custom_pub_fasttoggle_labels($obj_type) {
+  $result = array();
+
+  if ($obj_type != 'node')
+    return $result;
+  
+  $custom_publish_options = custom_pub_types_list();
+
+  foreach ($custom_publish_options as $machine_name => $label) {
+      $result[$machine_name] = array(
+	FASTTOGGLE_LABEL_ACTION => array(0 => t('set @option status', array('@option' => $label)), 1 => t('unset @option status', array('@option' => $label))),
+	FASTTOGGLE_LABEL_STATUS => array(0 => t('@option not set', array('@option' => $label)), 1 => t('@option set', array('@option' => $label))));
+  }
+  
+  return $result;
+}
+
