diff --git a/gatsby-config.js b/gatsby-config.js
index 13322bfc2..88dc3d611 100644
--- a/gatsby-config.js
+++ b/gatsby-config.js
@@ -156,6 +156,7 @@ module.exports = {
},
},
'gatsby-plugin-meta-redirect',
+ 'gatsby-plugin-embed-pages',
{
resolve: 'gatsby-plugin-gdpr-tracking',
options: {
diff --git a/plugins/gatsby-plugin-embed-pages/gatsby-node.js b/plugins/gatsby-plugin-embed-pages/gatsby-node.js
new file mode 100644
index 000000000..3de2fe741
--- /dev/null
+++ b/plugins/gatsby-plugin-embed-pages/gatsby-node.js
@@ -0,0 +1,45 @@
+const path = require('path');
+
+exports.createPages = async ({ actions, graphql, reporter }) => {
+ const { createPage } = actions;
+
+ const { data } = await graphql(`
+ query MyQuery {
+ allMdx(filter: { frontmatter: { template: { eq: "GuideTemplate" } } }) {
+ nodes {
+ fields {
+ fileRelativePath
+ slug
+ }
+ frontmatter {
+ title
+ path
+ }
+ body
+ }
+ }
+ }
+ `);
+
+ data.allMdx.nodes.forEach((node) => {
+ const {
+ frontmatter,
+ fields: { fileRelativePath, slug },
+ body,
+ } = node;
+ const nodePath = frontmatter.path || slug;
+ const pagePath = path.join(nodePath, 'embed');
+ const contentSourcePath = nodePath;
+
+ createPage({
+ path: pagePath,
+ component: path.resolve(`src/templates/embedPage.js`),
+ context: {
+ slug,
+ fileRelativePath,
+ contentSourcePath,
+ layout: 'EmbedLayout',
+ },
+ });
+ });
+};
diff --git a/plugins/gatsby-plugin-embed-pages/package.json b/plugins/gatsby-plugin-embed-pages/package.json
new file mode 100644
index 000000000..0967ef424
--- /dev/null
+++ b/plugins/gatsby-plugin-embed-pages/package.json
@@ -0,0 +1 @@
+{}
diff --git a/src/layouts/EmbedLayout.js b/src/layouts/EmbedLayout.js
new file mode 100644
index 000000000..f57174829
--- /dev/null
+++ b/src/layouts/EmbedLayout.js
@@ -0,0 +1,13 @@
+import { Layout } from '@newrelic/gatsby-theme-newrelic';
+import PropTypes from 'prop-types';
+
+const EmbedLayout = ({ children, pageContext }) => {
+ return