{"id":20541,"date":"2019-06-07T13:34:26","date_gmt":"2019-06-07T12:34:26","guid":{"rendered":"https:\/\/www.intercom.com\/blog\/?p=20541"},"modified":"2020-07-30T12:54:39","modified_gmt":"2020-07-30T11:54:39","slug":"intercom-homepage-cms","status":"publish","type":"post","link":"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/","title":{"rendered":"Rebuilding Intercom&#8217;s homepage with a new CMS"},"content":{"rendered":"<p>Last week, we launched the new <a href=\"https:\/\/www.intercom.com\/blog\/\" target=\"_blank\" rel=\"noopener noreferrer\">Intercom.com<\/a> and <a href=\"https:\/\/www.intercom.com\/blog\/new-website\/\" target=\"_blank\" rel=\"noopener noreferrer\">shared the process and thought behind our new design<\/a>. In addition to the new brand direction, we also made many changes on the development side, which I detailed in this Twitter thread.<\/p>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">I was the tech lead on this project, on Team Web! Our new marketing site has lots of goodies from the development side of things that I&#39;m excited to talk about. I also just want to gush about my team a bit. (\u2b07\ufe0f thread) <a href=\"https:\/\/t.co\/ui8bgrAjxj\">https:\/\/t.co\/ui8bgrAjxj<\/a><\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927211541684224?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<h2 id=\"the-architecture-of-our-new-website\">The architecture of our new website<\/h2>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Not only is this a rebrand, it&#39;s also a new architecture for us. Our old site is a Rails application, which required engineering effort whenever we wanted to change a page. We wanted to use a CMS, and we made the right choice of using a headless CMS (no WYSIWYG, just data).<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927213001269249?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">The entire site is a server-side rendered React application (built using <a href=\"https:\/\/twitter.com\/zeithq?ref_src=twsrc%5Etfw\">@zeithq<\/a>&#39;s Next.js) that pulls all of the content from <a href=\"https:\/\/twitter.com\/contentful?ref_src=twsrc%5Etfw\">@contentful<\/a> (the CMS). We don&#39;t have any content in the site&#39;s repo, and the site gets compiled to plain HTML, CSS, and JS at build time.<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927214456737792?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<blockquote class=\"pullquote-style-one\"><p>&#8220;By composing and arranging components, [the marketing team] can build pages entirely from scratch&#8221;<\/p><\/blockquote>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">In Contentful, editors lay out all of the content and &quot;think in components&quot;, a lot like engineers. By composing and arranging components, they can build pages entirely from scratch. In fact, the site today has NO bespoke components for any specific page.<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927215282970626?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Now, this always carries a risk\u2014what if somebody makes a change in Contentful that could break the site? This is where <a href=\"https:\/\/twitter.com\/typescript?ref_src=twsrc%5Etfw\">@typescript<\/a> comes into play. We use Contentful&#39;s APIs to introspect the CMS&#39;s schema and generate a bunch of TypeScript interfaces.<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927216415477761?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">This way, when we wire up React components to Contentful components, if there is suddenly a mismatch in what our code expects and what Contentful is serving us, TypeScript will fail to compile, and the site will not deploy.<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927218156118016?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<blockquote class=\"pullquote-style-one\"><p>&#8220;An author would find it very difficult to &#8216;break&#8217; the site for customers by making risky changes. They can edit with confidence&#8221;<\/p><\/blockquote>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">This means that our site is extremely resilient to changes in our CMS\u2014an author would find it very difficult to &quot;break&quot; the site for customers by making risky changes. They can edit with confidence. We&#39;ll be open sourcing this codegen soon.<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927218994917376?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">Also, since we pull in all of the content at compile\/build time (instead of on the client side), that means we don&#39;t have to share our Contentful API keys with the world, and we are *very* well below our monthly API rate limits. Our site also kinda works with JS disabled (wip).<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927220752375808?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">In the coming weeks, we want to really improve the process of Contentful editors finding out when their change caused a failed deploy so that they can resolve the issue quickly, eliminating even more need for engineering intervention. We have lots of other plans in the works too!<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927221574414336?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<h2 id=\"the-impact-of-the-engineering-effort\">The impact of the engineering effort<\/h2>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">The engineering effort to get this launched was immense. While the spike of the initial architecture was relatively quick (thanks to Next.js), it took a huge effort interacting with our brand team, marketing teams, analytics teams, our purchase flow team, etc. to get this ready.<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927222438506496?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<blockquote class=\"pullquote-style-one\"><p>&#8220;There is SO MUCH to a marketing site that you wouldn&#8217;t imagine, because it touches so much of the business&#8221;<\/p><\/blockquote>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">The folks on Team Web did an amazing job. There is SO MUCH to a marketing site that you wouldn&#39;t imagine, because it touches so much of the business. All 3 engineers I work with learned the system so thoroughly, coordinated with stakeholders, wrote a bunch of docs, etc.<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927223294070786?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">From an ops perspective, we:<\/p>\n<p>* Reduced deploy time from 20 minutes to about 90 seconds<br \/>* Made the site&#39;s time-to-interactive about a second faster<br \/>* We achieved &gt;90 in all lighthouse audit scores (with a 100 in accessibility!)<br \/>* We shipped an architecture that&#39;s new to us <a href=\"https:\/\/t.co\/XeD9QFpCst\">pic.twitter.com\/XeD9QFpCst<\/a><\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927225017999360?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n<h2><\/h2>\n<h2 id=\"were-hiring\">We&#8217;re hiring!<\/h2>\n<div class=\"oembed-wrapper oembed--twitter\">\n<blockquote class=\"twitter-tweet\" data-conversation=\"none\" data-width=\"500\" data-dnt=\"true\">\n<p lang=\"en\" dir=\"ltr\">These last few months have been a wild ride, and so much fun. If you like what you see, why not join <a href=\"https:\/\/twitter.com\/IntercomEng?ref_src=twsrc%5Etfw\">@IntercomEng<\/a>? <a href=\"https:\/\/t.co\/J8KmBykj1u\">https:\/\/t.co\/J8KmBykj1u<\/a> (ironically, one of the few pages that hasn&#39;t been rebuilt yet \ud83d\ude1d)<\/p>\n<p>&mdash; steven petryk (@stevenpetryk) <a href=\"https:\/\/twitter.com\/stevenpetryk\/status\/1133927226733449216?ref_src=twsrc%5Etfw\">May 30, 2019<\/a><\/p><\/blockquote>\n<p><script async src=\"https:\/\/platform.twitter.com\/widgets.js\" charset=\"utf-8\"><\/script><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Last week, we launched the new Intercom.com and shared the process and thought behind our new design. In addition to the new brand direction, we also made many changes on the development side, which I detailed&hellip;<\/p>\n","protected":false},"author":407,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"category":[12898],"tags":[],"coauthors":[17197],"class_list":["post-20541","post","type-post","status-publish","format-standard","hentry","category-engineering"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v27.3 (Yoast SEO v27.3) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Rebuilding Intercom&#039;s homepage with a new CMS - The Intercom Blog<\/title>\n<meta name=\"description\" content=\"The story of how we changed the underlying architecture of the Intercom website from a bespoke application to a content management system (CMS).\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Rebuilding Intercom&#039;s homepage with a new CMS\" \/>\n<meta property=\"og:description\" content=\"The story of how we changed the underlying architecture of the Intercom website from a bespoke application to a content management system (CMS).\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/\" \/>\n<meta property=\"og:site_name\" content=\"The Intercom Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/intercominc\" \/>\n<meta property=\"article:published_time\" content=\"2019-06-07T12:34:26+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2020-07-30T11:54:39+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2019\/06\/Intercom-homepage-cms-social.jpeg\" \/>\n\t<meta property=\"og:image:width\" content=\"900\" \/>\n\t<meta property=\"og:image:height\" content=\"471\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Steven Petryk\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@stevenpetryk\" \/>\n<meta name=\"twitter:site\" content=\"@intercom\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Steven Petryk\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/intercom-homepage-cms\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/intercom-homepage-cms\\\/\"},\"author\":{\"name\":\"Steven Petryk\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/person\\\/95559fa9b8bfe979a50a53c0b5882e10\"},\"headline\":\"Rebuilding Intercom&#8217;s homepage with a new CMS\",\"datePublished\":\"2019-06-07T12:34:26+00:00\",\"dateModified\":\"2020-07-30T11:54:39+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/intercom-homepage-cms\\\/\"},\"wordCount\":186,\"publisher\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#organization\"},\"articleSection\":[\"Engineering\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/intercom-homepage-cms\\\/\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/intercom-homepage-cms\\\/\",\"name\":\"Rebuilding Intercom's homepage with a new CMS - The Intercom Blog\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#website\"},\"datePublished\":\"2019-06-07T12:34:26+00:00\",\"dateModified\":\"2020-07-30T11:54:39+00:00\",\"description\":\"The story of how we changed the underlying architecture of the Intercom website from a bespoke application to a content management system (CMS).\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.intercom.com\\\/blog\\\/intercom-homepage-cms\\\/\"]}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/\",\"name\":\"The Intercom Blog\",\"description\":\"Articles and Podcasts on Customer Service, AI and Automation, Product, and more\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#organization\",\"name\":\"The Intercom Blog\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Intercom-logo-sq-black-trans.png\",\"contentUrl\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/wp-content\\\/uploads\\\/2019\\\/08\\\/Intercom-logo-sq-black-trans.png\",\"width\":1000,\"height\":1000,\"caption\":\"The Intercom Blog\"},\"image\":{\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/intercominc\",\"https:\\\/\\\/x.com\\\/intercom\",\"https:\\\/\\\/www.instagram.com\\\/intercom\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/2491343\",\"https:\\\/\\\/www.pinterest.ie\\\/intercom\\\/\",\"https:\\\/\\\/www.youtube.com\\\/channel\\\/UCJG0MvLP03kyzzAkD-w98aQ\",\"https:\\\/\\\/en.wikipedia.org\\\/wiki\\\/Intercom_(company)\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/#\\\/schema\\\/person\\\/95559fa9b8bfe979a50a53c0b5882e10\",\"name\":\"Steven Petryk\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/904a544e6af1d15eb99ec135331f192edac113fbc0a6cecae6b68bed91201486?s=96&d=mm&r=pgf9e8aa0483497605f4e4fa723c5b6a7f\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/904a544e6af1d15eb99ec135331f192edac113fbc0a6cecae6b68bed91201486?s=96&d=mm&r=pg\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/904a544e6af1d15eb99ec135331f192edac113fbc0a6cecae6b68bed91201486?s=96&d=mm&r=pg\",\"caption\":\"Steven Petryk\"},\"sameAs\":[\"https:\\\/\\\/x.com\\\/stevenpetryk\"],\"url\":\"https:\\\/\\\/www.intercom.com\\\/blog\\\/author\\\/stevenpetryk\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Rebuilding Intercom's homepage with a new CMS - The Intercom Blog","description":"The story of how we changed the underlying architecture of the Intercom website from a bespoke application to a content management system (CMS).","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/","og_locale":"en_US","og_type":"article","og_title":"Rebuilding Intercom's homepage with a new CMS","og_description":"The story of how we changed the underlying architecture of the Intercom website from a bespoke application to a content management system (CMS).","og_url":"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/","og_site_name":"The Intercom Blog","article_publisher":"https:\/\/www.facebook.com\/intercominc","article_published_time":"2019-06-07T12:34:26+00:00","article_modified_time":"2020-07-30T11:54:39+00:00","og_image":[{"width":900,"height":471,"url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2019\/06\/Intercom-homepage-cms-social.jpeg","type":"image\/jpeg"}],"author":"Steven Petryk","twitter_card":"summary_large_image","twitter_creator":"@stevenpetryk","twitter_site":"@intercom","twitter_misc":{"Written by":"Steven Petryk","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/#article","isPartOf":{"@id":"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/"},"author":{"name":"Steven Petryk","@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/person\/95559fa9b8bfe979a50a53c0b5882e10"},"headline":"Rebuilding Intercom&#8217;s homepage with a new CMS","datePublished":"2019-06-07T12:34:26+00:00","dateModified":"2020-07-30T11:54:39+00:00","mainEntityOfPage":{"@id":"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/"},"wordCount":186,"publisher":{"@id":"https:\/\/www.intercom.com\/blog\/#organization"},"articleSection":["Engineering"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/","url":"https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/","name":"Rebuilding Intercom's homepage with a new CMS - The Intercom Blog","isPartOf":{"@id":"https:\/\/www.intercom.com\/blog\/#website"},"datePublished":"2019-06-07T12:34:26+00:00","dateModified":"2020-07-30T11:54:39+00:00","description":"The story of how we changed the underlying architecture of the Intercom website from a bespoke application to a content management system (CMS).","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.intercom.com\/blog\/intercom-homepage-cms\/"]}]},{"@type":"WebSite","@id":"https:\/\/www.intercom.com\/blog\/#website","url":"https:\/\/www.intercom.com\/blog\/","name":"The Intercom Blog","description":"Articles and Podcasts on Customer Service, AI and Automation, Product, and more","publisher":{"@id":"https:\/\/www.intercom.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.intercom.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.intercom.com\/blog\/#organization","name":"The Intercom Blog","url":"https:\/\/www.intercom.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2019\/08\/Intercom-logo-sq-black-trans.png","contentUrl":"https:\/\/www.intercom.com\/blog\/wp-content\/uploads\/2019\/08\/Intercom-logo-sq-black-trans.png","width":1000,"height":1000,"caption":"The Intercom Blog"},"image":{"@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/intercominc","https:\/\/x.com\/intercom","https:\/\/www.instagram.com\/intercom\/","https:\/\/www.linkedin.com\/company\/2491343","https:\/\/www.pinterest.ie\/intercom\/","https:\/\/www.youtube.com\/channel\/UCJG0MvLP03kyzzAkD-w98aQ","https:\/\/en.wikipedia.org\/wiki\/Intercom_(company)"]},{"@type":"Person","@id":"https:\/\/www.intercom.com\/blog\/#\/schema\/person\/95559fa9b8bfe979a50a53c0b5882e10","name":"Steven Petryk","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/904a544e6af1d15eb99ec135331f192edac113fbc0a6cecae6b68bed91201486?s=96&d=mm&r=pgf9e8aa0483497605f4e4fa723c5b6a7f","url":"https:\/\/secure.gravatar.com\/avatar\/904a544e6af1d15eb99ec135331f192edac113fbc0a6cecae6b68bed91201486?s=96&d=mm&r=pg","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/904a544e6af1d15eb99ec135331f192edac113fbc0a6cecae6b68bed91201486?s=96&d=mm&r=pg","caption":"Steven Petryk"},"sameAs":["https:\/\/x.com\/stevenpetryk"],"url":"https:\/\/www.intercom.com\/blog\/author\/stevenpetryk\/"}]}},"jetpack_featured_media_url":"","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/posts\/20541","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/users\/407"}],"replies":[{"embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/comments?post=20541"}],"version-history":[{"count":0,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/posts\/20541\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/media?parent=20541"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/category?post=20541"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/tags?post=20541"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/www.intercom.com\/blog\/wp-json\/wp\/v2\/coauthors?post=20541"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}