diff --git a/config/schema/dfp.schema.yml b/config/schema/dfp.schema.yml
index 78c105f..672ebfe 100644
--- a/config/schema/dfp.schema.yml
+++ b/config/schema/dfp.schema.yml
@@ -57,6 +57,9 @@ dfp.tag.*:
     slot:
       type: string
       label: 'Ad slot'
+    out_of_page:
+      type: boolean
+      label: 'Out of page'
     size:
       type: string
       label: 'Ad size(s)'
diff --git a/src/Entity/Tag.php b/src/Entity/Tag.php
index 56a0d1d..064e2d3 100644
--- a/src/Entity/Tag.php
+++ b/src/Entity/Tag.php
@@ -42,6 +42,7 @@ use Drupal\Core\Entity\EntityStorageInterface;
  *   config_export = {
  *     "id",
  *     "slot",
+ *     "out_of_page",
  *     "size",
  *     "adunit",
  *     "slug",
@@ -76,7 +77,7 @@ class Tag extends ConfigEntityBase implements TagInterface {
    *
    * Use Context module to place the Ad slot on the page.
    *
-   * @var boolean
+   * @var bool
    *
    * @todo Not used at present. Regression from D7.
    */
@@ -114,7 +115,7 @@ class Tag extends ConfigEntityBase implements TagInterface {
   /**
    * Create a block for this ad tag.
    *
-   * @var boolean
+   * @var bool
    */
   protected $block = TRUE;
 
@@ -123,7 +124,7 @@ class Tag extends ConfigEntityBase implements TagInterface {
    *
    * Use this option for ads included in emails.
    *
-   * @var boolean
+   * @var bool
    */
   protected $short_tag = FALSE;
 
@@ -155,6 +156,13 @@ class Tag extends ConfigEntityBase implements TagInterface {
     return $this->label();
   }
 
+  /**
+   * {@inheritdoc}
+   */
+  public function outOfPage() {
+    return $this->out_of_page;
+  }

   /**
    * {@inheritdoc}
    */
diff --git a/src/Entity/TagInterface.php b/src/Entity/TagInterface.php
index fb6f006..dff34cb 100644
--- a/src/Entity/TagInterface.php
+++ b/src/Entity/TagInterface.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Contains \Drupal\dfp\Entity\TagInterface.
- */
-
 namespace Drupal\dfp\Entity;
 
 use Drupal\Core\Config\Entity\ConfigEntityInterface;
@@ -29,6 +24,13 @@ interface TagInterface extends ConfigEntityInterface {
    */
   public function slot();
 
+  /** Gets out_of_page.
+   *
+   * @return bool
+   *   Whether the ad slot is out of page.
+   */
+  public function outOfPage();
+
   /**
    * Gets the ad size or sizes.
    *
diff --git a/src/Form/Tag.php b/src/Form/Tag.php
index 5993713..3b53507 100644
--- a/src/Form/Tag.php
+++ b/src/Form/Tag.php
@@ -24,7 +24,6 @@ class Tag extends EntityForm {
    */
   public function form(array $form, FormStateInterface $form_state) {
     // @todo Implement vertical tabs like D7 module.
-    // @todo Implement out_of_page setting like D7 module.
     $form = parent::form($form, $form_state);
 
     /** @var \Drupal\dfp\Entity\TagInterface $tag */
@@ -63,6 +62,14 @@ class Tag extends EntityForm {
       ],
     ];
 
+    $form['tag_settings']['out_of_page'] = [
+      '#type' => 'checkbox',
+      '#title' => t('Out of page (interstitial) ad slot'),
+      '#description' => t('Use Context module to place the Ad slot on the page.'),
+      '#default_value' => $tag->outOfPage(),
+      '#required' => FALSE,
+    ];
+
     $form['tag_settings']['size'] = [
       '#type' => 'textfield',
       '#title' => $this->t('Size(s)'),
diff --git a/src/Tests/DfpTestBase.php b/src/Tests/DfpTestBase.php
index 44337f3..a93e721 100644
--- a/src/Tests/DfpTestBase.php
+++ b/src/Tests/DfpTestBase.php
@@ -1,12 +1,11 @@
 <?php
 
+namespace Drupal\dfp\Tests;
+
 /**
  * @file
  * Contains \Drupal\dfp\Tests\DfpTestBase.
  */
-
-namespace Drupal\dfp\Tests;
-
 use Drupal\Component\Utility\Unicode;
 use Drupal\Dfp\Entity\Tag;
 use Drupal\dfp\Entity\TagInterface;
@@ -62,7 +61,7 @@ abstract class DfpTestBase extends WebTestBase {
    * @return \Drupal\dfp\Entity\Tag
    *   The created DFP tag.
    */
-  protected function dfpCreateTag($edit = []) {
+  protected function dfpCreateTag(array $edit = []) {
     // Create a new tag.
     $edit += $this->dfpBasicTagEditValues();
     $this->drupalPostForm('admin/structure/dfp/tags/add', $edit, t('Save'));
@@ -88,7 +87,7 @@ abstract class DfpTestBase extends WebTestBase {
    * @return \Drupal\dfp\Entity\Tag
    *   The edited DFP tag.
    */
-  protected function dfpEditTag($id, &$edit) {
+  protected function dfpEditTag($id, array &$edit) {
     // Make sure there is no machinename set when we are editing.
     if (isset($edit['id'])) {
       unset($edit['id']);
@@ -121,9 +120,10 @@ abstract class DfpTestBase extends WebTestBase {
     $basic_tag = [
       'id' => Unicode::strtolower($machinename),
       'slot' => $machinename,
+      'out_of_page' => FALSE,
       'size' => implode(',', $this->dfpGenerateSize(2)),
       'adunit' => $this->randomMachineName(),
-      'block' => 1,
+      'block' => TRUE,
       'slug' => $this->randomMachineName(32),
       'adsense_backfill[ad_types]' => '',
       'adsense_backfill[channel_ids]' => '',
diff --git a/src/Tests/DisplayTagTest.php b/src/Tests/DisplayTagTest.php
index 9d4ff33..72f7624 100644
--- a/src/Tests/DisplayTagTest.php
+++ b/src/Tests/DisplayTagTest.php
@@ -1,12 +1,11 @@
 <?php
 
+namespace Drupal\dfp\Tests;
+
 /**
  * @file
  * Contains \Drupal\dfp\Tests\DisplayTagTest.
  */
-
-namespace Drupal\dfp\Tests;
-
 use Drupal\Component\Utility\Unicode;
 
 /**
@@ -32,6 +31,14 @@ class DisplayTagTest extends DfpTestBase {
     $tag_view = $this->dfpTagToTagView($tag);
     $this->drupalGet('<front>');
     $this->assertRaw('googletag.defineSlot("' . $tag_view->getAdUnit() . '", ' . $tag_view->getSize() . ', "' . $tag_view->getPlaceholderId() . '")');
+
+    // Create an out-of-page tag.
+    $edit = ['out_of_page' => TRUE];
+    $tag = $this->dfpCreateTag($edit);
+    $tag_view = $this->dfpTagToTagView($tag);
+    $this->drupalGet('<front>');
+    $this->assertRaw('googletag.defineOutOfPageSlot("' . $tag_view->getAdUnit() . '", "' . $tag_view->getPlaceholderId() . '")');
   }
 
   /**
diff --git a/src/View/TagView.php b/src/View/TagView.php
index dc74322..7f14249 100644
--- a/src/View/TagView.php
+++ b/src/View/TagView.php
@@ -1,10 +1,5 @@
 <?php
 
-/**
- * @file
- * Contains \Drupal\dfp\View\TagView.
- */
-
 namespace Drupal\dfp\View;
 
 use Drupal\Component\Utility\UrlHelper;
@@ -157,6 +152,15 @@ class TagView {
     return $this->tag->size();
   }
 
+   /** Gets the out_of_page value from the DFP tag.
+    *
+    * @return bool
+    *   Whether the ad slot is out of page.
+    */
+  public function getOutOfPage() {
+    return $this->tag->outOfPage();
+  }
+
   /**
    * Gets the raw ad targeting from the DFP tag.
    *
@@ -253,7 +257,7 @@ class TagView {
    *   The DFP token service.
    * @param \Drupal\Core\Extension\ModuleHandlerInterface $module_handler
    *   The module handler.
-   * @param \Drupal\dfp\View\TagView|NULL $tag_view
+   * @param \Drupal\dfp\View\TagView|null $tag_view
    *   (optional) The TagView object. Defaults to NULL.
    *
    * @return array
diff --git a/templates/dfp-slot-definition-js.html.twig b/templates/dfp-slot-definition-js.html.twig
index 1056a9e..dc5518f 100644
--- a/templates/dfp-slot-definition-js.html.twig
+++ b/templates/dfp-slot-definition-js.html.twig
@@ -21,7 +21,11 @@
       .build();
   {% endif %}
 
-  googletag.slots["{{ tag.id }}"] = googletag.defineSlot("{{ tag.adUnit }}", {{ tag.size }}, "{{ tag.placeholderId }}")
+  {% if tag.getOutOfPage() %}
+    googletag.slots["{{ tag.id }}"] = googletag.defineOutOfPageSlot("{{ tag.adUnit }}", "{{ tag.placeholderId }}")
+  {% else %}
+    googletag.slots["{{ tag.id }}"] = googletag.defineSlot("{{ tag.adUnit }}", {{ tag.size }}, "{{ tag.placeholderId }}")
+  {% endif %}
 
   {% if tag.clickUrl %}
     .setClickUrl("{{ tag.clickUrl }}")
diff --git a/tests/src/Unit/View/TagViewTest.php b/tests/src/Unit/View/TagViewTest.php
index c44a342..738d67b 100644
--- a/tests/src/Unit/View/TagViewTest.php
+++ b/tests/src/Unit/View/TagViewTest.php
@@ -71,7 +71,7 @@ class TagViewTest extends UnitTestCase {
     $tag = $this->prophesize(TagInterface::class);
     $tag->adunit()->willReturn($tag_ad_unit);
     $config_factory = $this->getConfigFactoryStub(['dfp.settings' => ['adunit_pattern' => $default_ad_unit, 'network_id' => $network_id]]);
-    $token = $this->getMock(TokenInterface::class);
+    $token = $this->createMock(TokenInterface::class);
     $token->method('replace')->willReturnArgument(0);
     $module_handler = $this->prophesize(ModuleHandlerInterface::class)->reveal();
     $tag_view = new TagView($tag->reveal(), $config_factory->get('dfp.settings'), $token, $module_handler);
@@ -98,7 +98,7 @@ class TagViewTest extends UnitTestCase {
     $tag->size()->willReturn($tag_sizes);
     $tag->targeting()->willReturn($tag_targeting);
     $config_factory = $this->getConfigFactoryStub(['dfp.settings' => ['adunit_pattern' => 'default_adunit', 'network_id' => $network_id]]);
-    $token = $this->getMock(TokenInterface::class);
+    $token = $this->createMock(TokenInterface::class);
     $token->method('replace')->willReturnArgument(0);
     $module_handler = $this->prophesize(ModuleHandlerInterface::class)->reveal();
     $tag_view = new TagView($tag->reveal(), $config_factory->get('dfp.settings'), $token, $module_handler);
@@ -110,10 +110,32 @@ class TagViewTest extends UnitTestCase {
    */
   public function getShortTagQueryStringProvider() {
     return [
-      ['adunit', '300x200', [], '12345', '|^iu=/12345/adunit&sz=300x200&c=[0-9]{5}$|'],
-      ['adunit', '300x200', [['target' => 'target', 'value' => 'value,value2']], '12345', '|^iu=/12345/adunit&sz=300x200&c=[0-9]{5}&t=target%3Dvalue%2Cvalue2$|'],
-      ['adunit', '300x200', [['target' => 'target', 'value' => 'value,value2'], ['target' => 'target2', 'value' => 'value3']], '12345', '|^iu=/12345/adunit&sz=300x200&c=[0-9]{5}&t=target%3Dvalue%2Cvalue2%26target2%3Dvalue3$|'],
+      [
+        'adunit',
+        '300x200',
+        [],
+        '12345',
+        '|^iu=/12345/adunit&sz=300x200&c=[0-9]{5}$|',
+      ],
+      [
+        'adunit',
+        '300x200',
+        [
+          ['target' => 'target', 'value' => 'value,value2']
+        ],
+        '12345',
+        '|^iu=/12345/adunit&sz=300x200&c=[0-9]{5}&t=target%3Dvalue%2Cvalue2$|',
+      ],
+      [
+        'adunit',
+        '300x200',
+        [
+          ['target' => 'target', 'value' => 'value,value2'],
+          ['target' => 'target2', 'value' => 'value3'],
+        ],
+        '12345',
+        '|^iu=/12345/adunit&sz=300x200&c=[0-9]{5}&t=target%3Dvalue%2Cvalue2%26target2%3Dvalue3$|',
+      ],
     ];
   }
-
 }
