diff --git a/panels_breadcrumbs.module b/panels_breadcrumbs.module
index 8d980ea61b1db1347aa7cc5ad93a50be69779ab5..f902d5a43a8139cf3fb031ec5ec6d759aced5071 100644
--- a/panels_breadcrumbs.module
+++ b/panels_breadcrumbs.module
@@ -315,3 +315,170 @@ function panels_breadcrumbs_page_breadcrumb_content_type_admin_info($subtype, $c
   $block->content = '';
   return $block;
 }
+
+// Panelizer integration
+// -----------------------------------------------------------------------------
+
+/**
+ * Implements hook_panelizer_operations_alter().
+ */
+function panels_breadcrumbs_panelizer_operations_alter(&$operations) {
+  $operations['breadcrumbs'] = array(
+    'menu title' => 'Breadcrumbs',
+    'link title' => t('breadcrumbs'),
+    'entity callback' => 'panels_breadcrumbs_panelizer_breadcrumbs_entity_page',
+    'admin callback' => 'panels_breadcrumbs_panelizer_breadcrumbs_admin_page',
+  );
+}
+
+/**
+ * Panelizer breadcrumbs operation entity page callback.
+ */
+function panels_breadcrumbs_panelizer_breadcrumbs_entity_page($handler, $js, $input, $entity, $view_mode) {
+  $panelizer = $entity->panelizer[$view_mode];
+  if (empty($panelizer)) {
+    return MENU_NOT_FOUND;
+  }
+
+  list($entity_id, $revision_id, $bundle) = entity_extract_ids($handler->entity_type, $entity);
+
+  $form_state = array(
+    'entity' => $entity,
+    'revision info' => $handler->entity_allows_revisions($entity),
+    'display cache' => panels_edit_cache_get(implode(':', array('panelizer', $handler->entity_type, $entity_id, $view_mode))),
+    'no_redirect' => TRUE,
+    'panelizer' => $panelizer,
+  );
+
+  ctools_include('common', 'panelizer');
+  $output = drupal_build_form('panels_breadcrumbs_panelizer_breadcrumbs_form', $form_state);
+  
+  if (!empty($form_state['executed'])) {
+    if ($form_state['clicked_button']['#name'] == 'save') {
+      drupal_set_message(t('The settings have been updated.'));
+
+      $entity->panelizer[$view_mode]->extra['panels_breadcrumbs_state'] = $form_state['values']['panels_breadcrumbs_state'];
+      $entity->panelizer[$view_mode]->extra['panels_breadcrumbs_titles'] = $form_state['values']['panels_breadcrumbs_titles'];
+      $entity->panelizer[$view_mode]->extra['panels_breadcrumbs_paths'] = $form_state['values']['panels_breadcrumbs_paths'];
+      $entity->panelizer[$view_mode]->extra['panels_breadcrumbs_home'] = $form_state['values']['panels_breadcrumbs_home'];
+
+      $handler->entity_save($entity);
+    }
+    else {
+      drupal_set_message(t('Changes have been discarded.'));
+    }
+
+    drupal_goto($_GET['q']);
+  }
+
+  $output = $handler->wrap_entity_panelizer_pages($entity, $view_mode, $output);
+
+  ctools_set_no_blocks(FALSE);
+  drupal_set_page_content($output);
+  $page = element_info('page');
+  return $page;
+}
+
+/**
+ * Panelizer breadcrumbs operation admin page callback.
+ */
+function panels_breadcrumbs_panelizer_breadcrumbs_admin_page($handler, $bundle, $name, $view_mode) {
+  if (is_string($handler)) {
+    $handler = panelizer_entity_plugin_get_handler($handler);
+  }
+
+  if ($view_mode) {
+    $bundle .= '.' . $view_mode;
+  }
+
+  $panelizer = $handler->get_default_panelizer_object($bundle, $name);
+  if (empty($panelizer)) {
+    return MENU_NOT_FOUND;
+  }
+
+  $cache_key = 'panelizer:default:' . $handler->entity_type . ':' . $bundle . ':' . $name;
+
+  $form_state = array(
+    'display cache' => panels_edit_cache_get($cache_key),
+    'no_redirect' => TRUE,
+    'panelizer' => $panelizer,
+  );
+
+  ctools_include('common', 'panelizer');
+  $output = drupal_build_form('panels_breadcrumbs_panelizer_breadcrumbs_form', $form_state);
+
+  if (!empty($form_state['executed'])) {
+    if ($form_state['clicked_button']['#name'] == 'save') {
+      drupal_set_message(t('The settings have been updated.'));
+
+      $panelizer->extra['panels_breadcrumbs_state'] = $form_state['values']['panels_breadcrumbs_state'];
+      $panelizer->extra['panels_breadcrumbs_titles'] = $form_state['values']['panels_breadcrumbs_titles'];
+      $panelizer->extra['panels_breadcrumbs_paths'] = $form_state['values']['panels_breadcrumbs_paths'];
+      $panelizer->extra['panels_breadcrumbs_home'] = $form_state['values']['panels_breadcrumbs_home'];
+      
+      ctools_export_crud_save('panelizer_defaults', $panelizer);
+    }
+    else {
+      drupal_set_message(t('Changes have been discarded.'));
+    }
+
+    drupal_goto($_GET['q']);
+  }
+
+  ctools_set_no_blocks(FALSE);
+
+  if ($view_mode) {
+    $output = $handler->wrap_default_panelizer_pages($bundle, $output);
+  }
+
+  drupal_set_page_content($output);
+  $page = element_info('page');
+
+  return $page;
+}
+
+/**
+ * Panelizer breadcrumb configuration form.
+ */
+function panels_breadcrumbs_panelizer_breadcrumbs_form($form, $form_state) {
+  ctools_include('context');
+
+  $panelizer = $form_state['panelizer'];
+  $contexts = ctools_context_load_contexts($panelizer);
+
+  $form = panels_breadcrumbs_partial_configuration_form($form_state['panelizer']->extra, $contexts);
+
+  $form['actions'] = array(
+    '#type' => 'actions',
+  );
+
+  $form['actions']['submit'] = array(
+    '#type' => 'submit',
+    '#value' => t('Save'),
+    '#name' => 'save',
+  );
+
+  $form['actions']['cancel'] = array(
+    '#type' => 'submit',
+    '#value' => t('Cancel'),
+    '#name' => 'cancel',
+  );
+
+  return $form;
+}
+
+/**
+ * Implements hook_entity_view().
+ *
+ * Set the breadcrumb for panelized entity.
+ */
+function panels_breadcrumbs_entity_view($entity, $type, $view_mode, $langcode) {
+  if (!isset($entity->panelizer[$view_mode])) {
+    return;
+  }
+  
+  // Load panelized plugin, contexts and set breadcrumbs.
+  $panelizer_entity_plugin = panelizer_entity_plugin_get_handler($type);
+  $contexts = $panelizer_entity_plugin->get_contexts($entity->panelizer[$view_mode]);
+  panels_breadcrumbs_build_breadcrumb((array)$entity->panelizer[$view_mode]->extra, $contexts, TRUE);
+}
