diff --git a/core/modules/tour/js/tour.js b/core/modules/tour/js/tour.js
index d8885be..dc016bd 100644
--- a/core/modules/tour/js/tour.js
+++ b/core/modules/tour/js/tour.js
@@ -53,6 +53,17 @@ Drupal.behaviors.tour = {
         })
         // Initialization: check whether a tour is available on the current page.
         .set('tour', $(context).find('ol#tour'));
+
+      // Start the tour right away if toggled via query string.
+      var query = $.deparam.querystring();
+      if (query.tour) {
+        // Allow the page to load (needs a better solution).
+        setTimeout(
+          function() {
+            model.set('isActive', true);
+        }, 1000);
+      }
+
     });
   }
 };
@@ -171,13 +182,16 @@ Drupal.tour.views.ToggleTourView = Backbone.View.extend({
    */
   _removeIrrelevantTourItems: function ($tour, $document) {
     var removals = false;
+    var query = $.deparam.querystring();
+
     $tour
       .find('li')
       .each(function () {
         var $this = $(this);
         var itemId = $this.attr('data-id');
         var itemClass = $this.attr('data-class');
-        if ($document.find('#' + itemId + ', .' + itemClass).length === 0) {
+        if (($document.find('#' + itemId + ', .' + itemClass).length === 0) ||
+            (query.tourgroup && !$(this).hasClass(query.tourgroup))) {
           removals = true;
           $this.remove();
         }
diff --git a/core/modules/tour/tour.module b/core/modules/tour/tour.module
index 9787190..d6d79ec 100644
--- a/core/modules/tour/tour.module
+++ b/core/modules/tour/tour.module
@@ -36,6 +36,7 @@ function tour_library_info() {
       array('system', 'jquery'),
       array('system', 'drupal'),
       array('system', 'backbone'),
+      array('system', 'jquery.bbq'),
       array('tour', 'jquery.joyride'),
       array('tour', 'tour-styling'),
     ),
diff --git a/core/profiles/standard/standard.info.yml b/core/profiles/standard/standard.info.yml
index a0ff1f9..1e0c86a 100644
--- a/core/profiles/standard/standard.info.yml
+++ b/core/profiles/standard/standard.info.yml
@@ -35,3 +35,4 @@ dependencies:
   - views
   - views_ui
   - tour
+  - tour_multipage
diff --git a/modules/custom/tour_multipage/config/tour.tour.tour-multipage-front.yml b/modules/custom/tour_multipage/config/tour.tour.tour-multipage-front.yml
new file mode 100644
index 0000000..776afad
--- /dev/null
+++ b/modules/custom/tour_multipage/config/tour.tour.tour-multipage-front.yml
@@ -0,0 +1,18 @@
+id: tour-multipage-front
+module: tour_multipage
+label: Front page multipage kick off.
+langcode: en
+paths:
+  - <front>
+tips:
+  tour-multipage-search-block:
+    id: tour-multipage-search-block
+    plugin: multipage
+    label: Search block
+    body: This is where all the searching happens.
+    url: 'admin/structure/views/view/frontpage/edit'
+    query:
+      tour: "1"
+    weight: "2"
+    attributes:
+      data-id: block-search
\ No newline at end of file
diff --git a/modules/custom/tour_multipage/lib/Drupal/tour_multipage/Plugin/tour/tip/TipPluginMultipage.php b/modules/custom/tour_multipage/lib/Drupal/tour_multipage/Plugin/tour/tip/TipPluginMultipage.php
new file mode 100644
index 0000000..053a94f
--- /dev/null
+++ b/modules/custom/tour_multipage/lib/Drupal/tour_multipage/Plugin/tour/tip/TipPluginMultipage.php
@@ -0,0 +1,47 @@
+<?php
+
+/**
+ * @file
+ * Contains \Drupal\tour_multipage\Plugin\tour\tip\TipPluginMultipage.
+ */
+
+namespace Drupal\tour_multipage\Plugin\tour\tip;
+
+use Drupal\Component\Annotation\Plugin;
+use Drupal\tour\Plugin\tour\tip\TipPluginText;
+use Drupal\tour\TipPluginBase;
+
+/**
+ * Displays some text as a tip.
+ *
+ * @Plugin(
+ *   id = "multipage",
+ *   module = "tour_multipage"
+ * )
+ */
+class TipPluginMultipage extends TipPluginText {
+
+  /**
+   * The url of the next page to tour.
+   *
+   * @var string
+   */
+  protected $url;
+
+  /**
+   * The query to be added to the url.
+   *
+   * @var string
+   */
+  protected $query;
+
+  /**
+   * Implements \Drupal\tour\TipPluginInterface::getOutput().
+   */
+  public function getOutput() {
+    $output = '<h2 class="tour-tip-label" id="tour-tip-' . $this->getAriaId() . '-label">' . check_plain($this->getLabel()) . '</h2>';
+    $output .= '<p class="tour-tip-body" id="tour-tip-' . $this->getAriaId() . '-contents">' . filter_xss_admin($this->getBody()) . '</p>';
+    $output .= '<p class="tour-tip-body" id="tour-tip-' . $this->getAriaId() . '-link">' . l('Continue tour', $this->get('url'), array('query' => $this->get('query'))) . '</p>';
+    return array('#markup' => $output);
+  }
+}
diff --git a/modules/custom/tour_multipage/tour_multipage.info.yml b/modules/custom/tour_multipage/tour_multipage.info.yml
new file mode 100644
index 0000000..0894727
--- /dev/null
+++ b/modules/custom/tour_multipage/tour_multipage.info.yml
@@ -0,0 +1,3 @@
+name: Tour Multipage
+description: 'Provides a tour that spans across multiple pages.'
+core: 8.x
diff --git a/modules/custom/tour_multipage/tour_multipage.module b/modules/custom/tour_multipage/tour_multipage.module
new file mode 100644
index 0000000..859cef3
--- /dev/null
+++ b/modules/custom/tour_multipage/tour_multipage.module
@@ -0,0 +1,6 @@
+<?php
+
+/**
+ * @file
+ * Provides core functionality for tour_multipage.
+ */
