diff --git a/contact_storage.module b/contact_storage.module
index 4ecdc25..e182cfa 100644
--- a/contact_storage.module
+++ b/contact_storage.module
@@ -106,4 +106,5 @@ function contact_storage_entity_type_alter(array &$entity_types) {
   $entity_types['contact_message']->setHandlerClass('views_data', '\Drupal\contact_storage\MessageViewsData');
   $entity_types['contact_message']->setListBuilderClass('\Drupal\Core\Entity\EntityListBuilder');
 
+  $entity_types['contact_form']->setViewBuilderClass('\Drupal\contact_storage\ContactFormViewBuilder');
 }
diff --git a/src/ContactFormViewBuilder.php b/src/ContactFormViewBuilder.php
new file mode 100644
index 0000000..88cda6b
--- /dev/null
+++ b/src/ContactFormViewBuilder.php
@@ -0,0 +1,103 @@
+<?php
+/**
+ * @file
+ * Contains \Drupal\contact_storage\ContactFormViewBuilder.
+ */
+
+namespace Drupal\contact_storage;
+
+
+use Drupal\Core\Config\ConfigFactoryInterface;
+use Drupal\Core\Entity\EntityFormBuilderInterface;
+use Drupal\Core\Entity\EntityInterface;
+use Drupal\Core\Entity\EntityManagerInterface;
+use Drupal\Core\Entity\EntityTypeInterface;
+use Drupal\Core\Entity\EntityViewBuilder;
+use Drupal\Core\Language\LanguageManagerInterface;
+use Drupal\Core\Render\RendererInterface;
+use Symfony\Component\DependencyInjection\ContainerInterface;
+
+/**
+ * Provides a contact form view builder.
+ *
+ * @see \Drupal\contact\Entity\ContactForm
+ */
+class ContactFormViewBuilder extends EntityViewBuilder {
+
+  /**
+   * The entity form builder.
+   *
+   * @var \Drupal\Core\Entity\EntityFormBuilderInterface
+   */
+  protected $entityFormBuilder;
+
+  /**
+   * The renderer.
+   *
+   * @var \Drupal\Core\Render\RendererInterface
+   */
+  protected $renderer;
+
+  /**
+   * The configuration factory.
+   *
+   * @var \Drupal\Core\Config\ConfigFactoryInterface
+   */
+  protected $configFactory;
+
+  /**
+   * Constructs a new contact form view builder.
+   *
+   * @param \Drupal\Core\Entity\EntityTypeInterface $entity_type
+   *   The entity type.
+   * @param \Drupal\Core\Entity\EntityManagerInterface $entity_manager
+   *   The entity manager service.
+   * @param \Drupal\Core\Language\LanguageManagerInterface $language_manager
+   *   The language manager service.
+   * @param \Drupal\Core\Entity\EntityFormBuilderInterface $entity_form_builder
+   *   The entity form builder service.
+   * @param \Drupal\Core\Render\RendererInterface $renderer
+   *   The renderer service.
+   * @param \Drupal\Core\Config\ConfigFactoryInterface $config_factory
+   *   The configuration factory service.
+   */
+  public function __construct(EntityTypeInterface $entity_type, EntityManagerInterface $entity_manager, LanguageManagerInterface $language_manager, EntityFormBuilderInterface $entity_form_builder, RendererInterface $renderer, ConfigFactoryInterface $config_factory) {
+    parent::__construct($entity_type, $entity_manager, $language_manager);
+    $this->entityFormBuilder = $entity_form_builder;
+    $this->renderer = $renderer;
+    $this->configFactory = $config_factory;
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public static function createInstance(ContainerInterface $container, EntityTypeInterface $entity_type) {
+    return new static(
+      $entity_type,
+      $container->get('entity.manager'),
+      $container->get('language_manager'),
+      $container->get('entity.form_builder'),
+      $container->get('renderer'),
+      $container->get('config.factory')
+    );
+  }
+
+  /**
+   * {@inheritdoc}
+   */
+  public function view(EntityInterface $entity, $view_mode = 'full', $langcode = NULL) {
+    $config = $this->configFactory->get('contact.settings');
+    $message = $this->entityManager
+      ->getStorage('contact_message')
+      ->create(array(
+        'contact_form' => $entity->id(),
+      ));
+
+    $form = $this->entityFormBuilder->getForm($message);
+    $form['#title'] = $entity->label();
+    $form['#cache']['contexts'][] = 'user.permissions';
+    $this->renderer->addCacheableDependency($form, $config);
+    return $form;
+  }
+
+}
