{"id":171092,"date":"2024-01-22T12:19:35","date_gmt":"2024-01-22T17:19:35","guid":{"rendered":"https:\/\/ahrefs.com\/blog\/?p=171092"},"modified":"2024-10-04T10:55:08","modified_gmt":"2024-10-04T15:55:08","slug":"headless-cms-seo","status":"publish","type":"post","link":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/","title":{"rendered":"Headless SEO Explained + 6 Best Practices"},"content":{"rendered":"\n<div class=\"intro-txt\">Put simply, a headless content management system (CMS) separates a website\u2019s content from its design and&nbsp;code.<\/div>\n\n\n\n<p>It functions differently from a traditional CMS, like WordPress, and therefore requires different considerations for SEO as well. While <a href=\"https:\/\/ahrefs.com\/blog\/seo-best-practices\/\">general SEO best practices<\/a> and rules remain the same, how you go about implementing them will differ in a headless setup.<\/p>\n\n\n\n<p>This is a beginner-friendly guide covering everything you need to know about headless CMS SEO, including:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>How headless SEO is different from regular SEO<\/li>\n\n\n\n<li>The benefits of using a headless CMS<\/li>\n\n\n\n<li>Headless SEO best practices<\/li>\n<\/ul>\n\n\n\n<p>But first, let\u2019s make sure we\u2019re on the same page about the ins and outs of what a headless CMS is and how its differences may affect your <a href=\"https:\/\/ahrefs.com\/blog\/orchard-seo-strategy\/\">SEO strategy<\/a>.<\/p>\n\n\n<div class=\"intro-tok\" id=\"intro_tok\" style=\"display:none;\"><div class=\"intro-title\">Contents<\/div><a href=\"#\" class=\"expand-dots\"><span><\/span><span><\/span><span><\/span><\/a><\/div>\n\n\n\n<div class=\"post-nav-link clearfix\" id=\"section1\"><a class=\"subhead-anchor\" data-tip=\"tooltip__copielink\" rel=\"#section1\"><svg width=\"19\" height=\"19\" viewBox=\"0 0 14 14\" style><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"M0 0h14v14H0z\" \/><path d=\"M7.45 9.887l-1.62 1.621c-.92.92-2.418.92-3.338 0a2.364 2.364 0 0 1 0-3.339l1.62-1.62-1.273-1.272-1.62 1.62a4.161 4.161 0 1 0 5.885 5.884l1.62-1.62L7.45 9.886zM5.527 5.135L7.17 3.492c.92-.92 2.418-.92 3.339 0 .92.92.92 2.418 0 3.339L8.866 8.473l1.272 1.273 1.644-1.643A4.161 4.161 0 1 0 5.897 2.22L4.254 3.863l1.272 1.272zm-.66 3.998a.749.749 0 0 1 0-1.06l2.208-2.206a.749.749 0 1 1 1.06 1.06L5.928 9.133a.75.75 0 0 1-1.061 0z\" style \/><\/g><\/svg><\/a><div class=\"link-text\" data-anchor=\"Traditional CMS vs. headless CMS\" data-section=\"traditional-cms-vs-headless-cms\">\n\n\n\n<h2 class=\"wp-block-heading\"><a id=\"post-171092-_3xe2sc4x2euc\"><\/a>Traditional CMS vs. headless CMS<\/h2>\n\n\n\n<\/div><\/div>\n\n\n\n<p>In a traditional CMS, all your content, code, and design live in one place. While you can design a responsive layout for some devices, the content cannot be displayed separately from the website itself.<\/p>\n\n\n\n<p>Like a pizza, you can\u2019t easily separate all the ingredients. It\u2019s an all-or-nothing deal.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1566\" class=\"wp-image-171093\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works.png\" alt=\"Analogy of how a traditional CMS works\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works.png 1600w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works-434x425.png 434w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works-768x752.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works-1536x1503.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"><\/figure>\n\n\n\n<p>A headless CMS, however, separates your content, code, and design so you can create content once and distribute it across different channels and devices easily.<\/p>\n\n\n\n<p>For example, a headless eCommerce site can pull its pricing and inventory from two different systems and then push these to the website or other applications independently of any other content.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1642\" class=\"wp-image-171094\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-cms-works.png\" alt=\"Example of how a headless CMS works\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-cms-works.png 1600w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-cms-works-414x425.png 414w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-cms-works-768x788.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-cms-works-1497x1536.png 1497w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"><\/figure>\n\n\n\n<p>A headless CMS allows your <a href=\"https:\/\/ahrefs.com\/blog\/content-distribution\/\">content distribution<\/a> to be greater than the sum of its parts in a way that a traditional CMS never will be able to achieve.<\/p>\n\n\n\n<p>For example, \u200b\u200bwhen you build a webpage using a traditional CMS, you\u2019ll often use a visual drag-and-drop editor that looks a bit like&nbsp;this:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1560\" height=\"1462\" class=\"wp-image-171095\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-visual-drag-and-drop-website-builder.png\" alt=\"Example of a visual drag-and-drop website builder interface\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-visual-drag-and-drop-website-builder.png 1560w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-visual-drag-and-drop-website-builder-453x425.png 453w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-visual-drag-and-drop-website-builder-768x720.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-visual-drag-and-drop-website-builder-1536x1440.png 1536w\" sizes=\"auto, (max-width: 1560px) 100vw, 1560px\"><\/figure>\n\n\n\n<p>How you enter content and images here will closely represent what your website visitors see.<\/p>\n\n\n\n<p>Now, let\u2019s say you want to distribute the content you\u2019ve added here through a different device or channel, like a VR headset or an electronic billboard.<\/p>\n\n\n\n<p>With a traditional website CMS, you simply can\u2019t do that. You would need to recreate your content and adapt it to the platform you\u2019re delivering it&nbsp;on.<\/p>\n\n\n\n<p>But, with a headless CMS, you don\u2019t have such a limitation. That\u2019s because how you organize and arrange your content within the CMS is completely different. It looks a bit like&nbsp;this:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"750\" height=\"439\" class=\"wp-image-171096\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-headless-cms-interface.png\" alt=\"Example of a headless CMS' interface\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-headless-cms-interface.png 750w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-headless-cms-interface-680x398.png 680w\" sizes=\"auto, (max-width: 750px) 100vw, 750px\">\n<figcaption class=\"wp-element-caption\">Source: <a href=\"\/\/www.stackbit.com\/blog\/content-modeling-headless\" target=\"_blank\" rel=\"noreferrer noopener\">Stackbit<\/a><\/figcaption>\n<\/figure>\n\n\n\n<p>Instead of adding content and images based on how you want it to look, you simply enter the content as a collection of separate \u201cingredients.\u201d These ingredients can then be dynamically distributed and designed to match the needs of each different channel and device.<\/p>\n\n\n\n<div class=\"post-nav-link clearfix\" id=\"section1\"><a class=\"subhead-anchor\" data-tip=\"tooltip__copielink\" rel=\"#section1\"><svg width=\"19\" height=\"19\" viewBox=\"0 0 14 14\" style><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"M0 0h14v14H0z\" \/><path d=\"M7.45 9.887l-1.62 1.621c-.92.92-2.418.92-3.338 0a2.364 2.364 0 0 1 0-3.339l1.62-1.62-1.273-1.272-1.62 1.62a4.161 4.161 0 1 0 5.885 5.884l1.62-1.62L7.45 9.886zM5.527 5.135L7.17 3.492c.92-.92 2.418-.92 3.339 0 .92.92.92 2.418 0 3.339L8.866 8.473l1.272 1.273 1.644-1.643A4.161 4.161 0 1 0 5.897 2.22L4.254 3.863l1.272 1.272zm-.66 3.998a.749.749 0 0 1 0-1.06l2.208-2.206a.749.749 0 1 1 1.06 1.06L5.928 9.133a.75.75 0 0 1-1.061 0z\" style \/><\/g><\/svg><\/a><div class=\"link-text\" data-anchor=\"Headless SEO explained\" data-section=\"headless-seo-explained\">\n\n\n\n<h2 class=\"wp-block-heading\"><a id=\"post-171092-_4yjx6lvqvmj8\"><\/a>So then, what is headless SEO?<\/h2>\n\n\n\n<\/div><\/div>\n\n\n\n<p>Headless SEO is the practice of optimizing your headless CMS so that it meets search engine optimization best practices and gives your content the best chance of ranking for relevant keywords.<\/p>\n\n\n\n<p>Since content can be distributed across other channels, beyond the website, headless SEO offers a more flexible approach towards optimizing content no matter where it\u2019s viewed.<\/p>\n\n\n\n<p>If the tagline for a headless CMS is \u201ccreate content once, distribute it everywhere,\u201d then the tagline for headless SEO would be \u201coptimize everything, everywhere, all at&nbsp;once.\u201d<\/p>\n\n\n\n<div class=\"post-nav-link clearfix\" id=\"section1\"><a class=\"subhead-anchor\" data-tip=\"tooltip__copielink\" rel=\"#section1\"><svg width=\"19\" height=\"19\" viewBox=\"0 0 14 14\" style><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"M0 0h14v14H0z\" \/><path d=\"M7.45 9.887l-1.62 1.621c-.92.92-2.418.92-3.338 0a2.364 2.364 0 0 1 0-3.339l1.62-1.62-1.273-1.272-1.62 1.62a4.161 4.161 0 1 0 5.885 5.884l1.62-1.62L7.45 9.886zM5.527 5.135L7.17 3.492c.92-.92 2.418-.92 3.339 0 .92.92.92 2.418 0 3.339L8.866 8.473l1.272 1.273 1.644-1.643A4.161 4.161 0 1 0 5.897 2.22L4.254 3.863l1.272 1.272zm-.66 3.998a.749.749 0 0 1 0-1.06l2.208-2.206a.749.749 0 1 1 1.06 1.06L5.928 9.133a.75.75 0 0 1-1.061 0z\" style \/><\/g><\/svg><\/a><div class=\"link-text\" data-anchor=\"How is headless SEO different from regular SEO?\" data-section=\"how-is-headless-seo-different-from-regular-seo\">\n\n\n\n<h2 class=\"wp-block-heading\"><a id=\"post-171092-_j2ugh030rq50\"><\/a>How is headless SEO different from regular SEO?<\/h2>\n\n\n\n<\/div><\/div>\n\n\n\n<p>There are a few key differences between doing SEO for a headless CMS vs traditional SEO.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"post-171092-_7hjxvk77hz8m\"><\/a>1. You\u2019ll have greater control and flexibility<\/h3>\n\n\n\n<p>Have you ever wanted to customize some element of your technical SEO setup but found that a CMS wouldn\u2019t let you? Yeah, it\u2019s a common gripe and happens more frequently than SEO pros would&nbsp;like.<\/p>\n\n\n\n<p>With headless SEO, you get to custom-design your CMS to be <em>exactly<\/em> how you want it to&nbsp;be.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Want a specific SEO-friendly URL structure? Easy&nbsp;peasy!<\/li>\n\n\n\n<li>Want a custom <a href=\"https:\/\/ahrefs.com\/blog\/robots-txt\/\">robots.txt<\/a> or <a href=\"https:\/\/ahrefs.com\/blog\/how-to-create-a-sitemap\/\">sitemap<\/a> file? Coming right&nbsp;up!<\/li>\n\n\n\n<li>Want specific schema templates for different types of content? You got&nbsp;it!<\/li>\n<\/ul>\n\n\n\n<p>It is (quite literally) a case of \u201cask and you shall receive.\u201d<\/p>\n\n\n\n<p>Any optimization that you can dream of, a headless CMS can achieve, but <em>only<\/em> <em>if<\/em> you ask your developer to create it and guide them on how you want it&nbsp;done.<\/p>\n\n\n\n<p>The caveat with this is that you\u2019ll be 100% responsible for everything to do with your SEO setup. You\u2019ll need to think about things you may not normally have to worry about when using a traditional CMS,&nbsp;like:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Adding validation rules to prevent mistakes<\/li>\n\n\n\n<li>Adding customized logic to canonicals<\/li>\n\n\n\n<li>Architecting faceted navigation systems<\/li>\n\n\n\n<li>Defining pagination preferences<\/li>\n\n\n\n<li>And more<\/li>\n<\/ul>\n\n\n\n<div class=\"recommendation\"><div class=\"recommendation-title\">Tip<\/div><div class=\"recommendation-content\">\n\n\n\n<p>You can use Ahrefs\u2019 <a href=\"https:\/\/ahrefs.com\/site-audit\">Site Audit<\/a> tool to get a list of over 170 technical SEO issues to educate your devs about so they don\u2019t accidentally make mistakes with your headless SEO implementation.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"737\" height=\"318\" class=\"wp-image-171097\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/ahrefs-site-audit-tool-showcasing-170-potential-t.png\" alt=\"Ahrefs' Site Audit tool showcasing 170 potential technical SEO issues\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/ahrefs-site-audit-tool-showcasing-170-potential-t.png 737w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/ahrefs-site-audit-tool-showcasing-170-potential-t-680x293.png 680w\" sizes=\"auto, (max-width: 737px) 100vw, 737px\"><\/figure>\n\n\n\n<p>Make sure to schedule automated audits so you can monitor these issues over time. If you\u2019re unsure how to direct your developers to fix any of them, click the \u201c?\u201d next to each issue to see a description and some advice.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1872\" height=\"772\" class=\"wp-image-171098\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-tips-for-resolving-specific-tec.png\" alt=\"Example of Ahrefs' tips for resolving specific technical issues in Site Audit\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-tips-for-resolving-specific-tec.png 1872w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-tips-for-resolving-specific-tec-680x280.png 680w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-tips-for-resolving-specific-tec-768x317.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-tips-for-resolving-specific-tec-1536x633.png 1536w\" sizes=\"auto, (max-width: 1872px) 100vw, 1872px\"><\/figure>\n\n\n\n<\/div><\/div>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"post-171092-_x2hnry9j70q8\"><\/a>2. You\u2019ll need to optimize content, code &amp; design separately<\/h3>\n\n\n\n<p>Perhaps the most difficult thing to adapt to with headless SEO is that you\u2019ll need to optimize content, code, and design independently of each&nbsp;other.<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><a href=\"https:\/\/ahrefs.com\/blog\/content-optimization\/\"><strong>Content Optimization<\/strong><\/a>: Mainly occurs through a process called \u201ccontent modeling.\u201d Content models break your content down into various file formats and blocks which can be optimized individually. More on this in a moment.<\/li>\n\n\n\n<li><strong>Technical Optimization<\/strong>: Technical SEO is implemented separately from on-page. Writers can upload content without bogging down page speed or other performance metrics. And, developers can deploy updates without halting publishing activities (unlike with some traditional CMS\u2019).<\/li>\n\n\n\n<li><strong>Design Optimization<\/strong>: Instead of trying to squeeze technical and SEO requirements into your design process, you can focus 100% on designing optimal user experiences for each device and channel that your content will appear on.<\/li>\n<\/ul>\n\n\n\n<p>There\u2019s a lot more planning and architecting involved when it comes to headless SEO and you\u2019ll need to work closely with developers to make sure your optimizations are implemented as you want them to&nbsp;be.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"post-171092-_rq17vfeux1cv\"><\/a>3. You need to create and optimize content models instead of&nbsp;pages<\/h3>\n\n\n\n<p>If you\u2019re used to using a CMS like WordPress, then you\u2019re also used to optimizing complete pages and posts for the most&nbsp;part.<\/p>\n\n\n\n<p>But with a headless CMS, you\u2019ll need to build and optimize content models instead of pages. What\u2019s a content model you&nbsp;ask?<\/p>\n\n\n\n<p>Content modeling structures and organizes your content in a way that APIs can then distribute to any kind of interface. Not only can you define the attributes each type of content will feature, but you can also create relationships between different types of content.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1800\" height=\"1168\" class=\"wp-image-171099\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-a-headless-cms-content-model-works.png\" alt=\"How a headless CMS' content model works\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-a-headless-cms-content-model-works.png 1800w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-a-headless-cms-content-model-works-655x425.png 655w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-a-headless-cms-content-model-works-768x498.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-a-headless-cms-content-model-works-1536x997.png 1536w\" sizes=\"auto, (max-width: 1800px) 100vw, 1800px\"><\/figure>\n\n\n\n<p>Think of a content model as the recipe needed to instruct your code on where it should send various types of content.<\/p>\n\n\n\n<p>Like any good recipe, a content model will gather the correct ingredients (your content blocks) and organize them in a way that will deliver a specific outcome (a complete piece of content adapted to the interface it\u2019s displayed on).<\/p>\n\n\n\n<p>Without a recipe, you end up with an \u201ceverything\u201d pizza that combines all ingredients, always\u2014even if it doesn\u2019t make sense to include them. For instance, on WordPress, the mobile, tablet, and desktop views of a website are all different slices of the \u201ceverything\u201d pizza, but on a headless CMS, they\u2019re entirely different meals.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1600\" height=\"1478\" class=\"wp-image-171100\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/traditional-cms-vs-headless-cms-benefits.png\" alt=\"Traditional CMS vs headless CMS benefits\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/traditional-cms-vs-headless-cms-benefits.png 1600w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/traditional-cms-vs-headless-cms-benefits-460x425.png 460w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/traditional-cms-vs-headless-cms-benefits-768x709.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/traditional-cms-vs-headless-cms-benefits-1536x1419.png 1536w\" sizes=\"auto, (max-width: 1600px) 100vw, 1600px\"><\/figure>\n\n\n\n<p>The great thing about content modeling for SEO is that you can create a field or attribute for absolutely anything you&nbsp;want.<\/p>\n\n\n\n<p>For example, if you have a real estate business, then you\u2019ll need to include property listings and information about your agents in your content model. And, you\u2019ll need to consider all the attributes you\u2019ll need for each of these types of content.<\/p>\n\n\n\n<p>Here\u2019s an example of what that may look,&nbsp;like:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1456\" height=\"2048\" class=\"wp-image-171101\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-simple-content-model-for-real-estate.png\" alt=\"Example of a simple content model for real estate websites\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-simple-content-model-for-real-estate.png 1456w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-simple-content-model-for-real-estate-302x425.png 302w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-simple-content-model-for-real-estate-768x1080.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-a-simple-content-model-for-real-estate-1092x1536.png 1092w\" sizes=\"auto, (max-width: 1456px) 100vw, 1456px\"><\/figure>\n\n\n\n<p>Things like the \u201cproperty title\u201d or the \u201cagent\u2019s name\u201d are the attributes that fit each type of content best. You\u2019ll need to think about all the attributes needed for every content type you add to your headless CMS.<\/p>\n\n\n\n<p>Now, just because you have two different types of content, it doesn\u2019t mean they can\u2019t show on the same page. They can indeed.<\/p>\n\n\n\n<p>Notice how the property listing includes a reference to the agent managing that property? This reference connects the two different content types to each other and allows every property listing to display information about the relevant agent.<\/p>\n\n\n\n<p>When it comes to headless SEO, you\u2019ll need to include a similar sort of reference for content types that require SEO metadata or particular types of schema markup, like&nbsp;so:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1847\" height=\"2048\" class=\"wp-image-171102\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-to-add-seo-metadata-to-a-headless-cms-content.png\" alt=\"How to add SEO metadata to a headless CMS content model\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-to-add-seo-metadata-to-a-headless-cms-content.png 1847w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-to-add-seo-metadata-to-a-headless-cms-content-383x425.png 383w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-to-add-seo-metadata-to-a-headless-cms-content-768x852.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/how-to-add-seo-metadata-to-a-headless-cms-content-1385x1536.png 1385w\" sizes=\"auto, (max-width: 1847px) 100vw, 1847px\"><\/figure>\n\n\n\n<p>Doing this allows your website to include all the relevant on-page optimizations you need. But then you can also choose not to load this metadata for platforms and channels where SEO is not a priority, like in a mobile app.<\/p>\n\n\n\n<div class=\"post-nav-link clearfix\" id=\"section1\"><a class=\"subhead-anchor\" data-tip=\"tooltip__copielink\" rel=\"#section1\"><svg width=\"19\" height=\"19\" viewBox=\"0 0 14 14\" style><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"M0 0h14v14H0z\" \/><path d=\"M7.45 9.887l-1.62 1.621c-.92.92-2.418.92-3.338 0a2.364 2.364 0 0 1 0-3.339l1.62-1.62-1.273-1.272-1.62 1.62a4.161 4.161 0 1 0 5.885 5.884l1.62-1.62L7.45 9.886zM5.527 5.135L7.17 3.492c.92-.92 2.418-.92 3.339 0 .92.92.92 2.418 0 3.339L8.866 8.473l1.272 1.273 1.644-1.643A4.161 4.161 0 1 0 5.897 2.22L4.254 3.863l1.272 1.272zm-.66 3.998a.749.749 0 0 1 0-1.06l2.208-2.206a.749.749 0 1 1 1.06 1.06L5.928 9.133a.75.75 0 0 1-1.061 0z\" style \/><\/g><\/svg><\/a><div class=\"link-text\" data-anchor=\"Benefits of using a headless CMS\" data-section=\"benefits-of-using-a-headless-cms\">\n\n\n\n<h2 class=\"wp-block-heading\"><a id=\"post-171092-_w2egrbp1h8uw\"><\/a>Benefits of using a headless CMS<\/h2>\n\n\n\n<\/div><\/div>\n\n\n\n<p>Here are the biggest ones:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Publish content across channels more easily, reaching more people in the process<\/li>\n\n\n\n<li>Lighter and more versatile website<\/li>\n\n\n\n<li>Remove bottlenecks between dev and content teams<\/li>\n<\/ul>\n\n\n\n<p>For example, at Ahrefs, we use a headless framework to show content about <a href=\"https:\/\/ahrefs.com\/blog\/google-search-algorithm\/\">Google algorithm<\/a> updates in two places: the organic traffic chart in <a href=\"https:\/\/ahrefs.com\/site-explorer\">Site Explorer<\/a>\u2026<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1364\" height=\"1020\" class=\"wp-image-171103\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-headless-cms-showing-google-alg.png\" alt=\"Example of Ahrefs' headless CMS showing Google algorithm updates within the app interface\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-headless-cms-showing-google-alg.png 1364w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-headless-cms-showing-google-alg-568x425.png 568w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-headless-cms-showing-google-alg-768x574.png 768w\" sizes=\"auto, (max-width: 1364px) 100vw, 1364px\"><\/figure>\n\n\n\n<p>\u2026 and <a href=\"https:\/\/ahrefs.com\/google-algorithm-updates\">our page listing Google algorithm updates<\/a> (that anyone can&nbsp;view):<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1906\" height=\"1654\" class=\"wp-image-171104\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-headless-cms-displaying-google.png\" alt=\"Example of Ahrefs' headless CMS displaying Google's algorithm update history on a webpage\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-headless-cms-displaying-google.png 1906w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-headless-cms-displaying-google-490x425.png 490w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-headless-cms-displaying-google-768x666.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-ahrefs-headless-cms-displaying-google-1536x1333.png 1536w\" sizes=\"auto, (max-width: 1906px) 100vw, 1906px\"><\/figure>\n\n\n\n<p>Each time a new Google update is released, we simply add information about it in our headless CMS and it gets pushed to both locations. Even better, as there\u2019s no need to involve developers, our content team can move fast and keep everything updated with&nbsp;ease.<\/p>\n\n\n\n<p>But we\u2019re not the only ones benefitting from a headless approach. My buddy <a href=\"https:\/\/www.linkedin.com\/in\/dion-lovrecich?originalSubdomain=au\">Dion Lovrecich<\/a> at Extra Strength (a marketing agency here in Australia) recently implemented it for a client and had this to&nbsp;say:<\/p>\n\n\n\n<blockquote class=\"small\"><div class=\"quote-content\">\n\n\n\n<p>Deploying headless SEO took our client\u2019s content process from an internal fiasco to big productivity wins.<\/p>\n\n\n\n<p>Until we moved to headless, the engineering team would halt any front-end work when content was being updated. This is no longer required.<\/p>\n\n\n\n<p>We\u2019re also able to more easily adapt and update content (very important in the fast-moving legal landscape), segment SEO requirements for different types of content formats (like blogs, videos, and images), and publish relevant content faster\u2014all thanks to headless approach.<\/p>\n\n\n\n<\/div><div class=\"quote-info clearfix\"><div class=\"quote-photo\"><img decoding=\"async\" alt=\"Dion Lovrecich\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/dion-lovrecich.png\"><\/div><div class=\"extra-box\"><span class=\"quote-author\">Dion Lovrecich,<\/span> <span class=\"quote-author-job\">Founder <a href=\"https:\/\/www.extrastrength.com.au\/\" target=\"_blank\">Extra Strength<\/a><\/span><\/div><\/div><\/blockquote>\n\n\n\n<div class=\"post-nav-link clearfix\" id=\"section1\"><a class=\"subhead-anchor\" data-tip=\"tooltip__copielink\" rel=\"#section1\"><svg width=\"19\" height=\"19\" viewBox=\"0 0 14 14\" style><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"M0 0h14v14H0z\" \/><path d=\"M7.45 9.887l-1.62 1.621c-.92.92-2.418.92-3.338 0a2.364 2.364 0 0 1 0-3.339l1.62-1.62-1.273-1.272-1.62 1.62a4.161 4.161 0 1 0 5.885 5.884l1.62-1.62L7.45 9.886zM5.527 5.135L7.17 3.492c.92-.92 2.418-.92 3.339 0 .92.92.92 2.418 0 3.339L8.866 8.473l1.272 1.273 1.644-1.643A4.161 4.161 0 1 0 5.897 2.22L4.254 3.863l1.272 1.272zm-.66 3.998a.749.749 0 0 1 0-1.06l2.208-2.206a.749.749 0 1 1 1.06 1.06L5.928 9.133a.75.75 0 0 1-1.061 0z\" style \/><\/g><\/svg><\/a><div class=\"link-text\" data-anchor=\"Disadvantages of using a headless CMS\" data-section=\"disadvantages-of-using-a-headless-cms\">\n\n\n\n<h2 class=\"wp-block-heading\"><a id=\"post-171092-_bacdt048vit3\"><\/a>Disadvantages of using a headless CMS<\/h2>\n\n\n\n<\/div><\/div>\n\n\n\n<p>Despite the many benefits that headless systems offer, there are also some disadvantages to consider.<\/p>\n\n\n\n<p>For example, these systems are more complex than traditional CMS solutions. They require a lot of resources to build and maintain. It\u2019s also difficult for non-technical teams to get started with headless due to the integrative nature and the various APIs that may need to be connected.<\/p>\n\n\n\n<p>Even with developer support, you\u2019ll need a greater technical skill set so you can brief developers correctly and minimize mistakes in your headless SEO&nbsp;setup.<\/p>\n\n\n\n<p>These limitations make it challenging for smaller businesses and non-technical teams to successfully work in a headless environment. That being said, there are many emerging solutions that make headless sites easier to build and optimize and it\u2019s likely we\u2019ll see smaller organizations begin to adopt such technologies in the future.<\/p>\n\n\n\n<div class=\"post-nav-link clearfix\" id=\"section1\"><a class=\"subhead-anchor\" data-tip=\"tooltip__copielink\" rel=\"#section1\"><svg width=\"19\" height=\"19\" viewBox=\"0 0 14 14\" style><g fill=\"none\" fill-rule=\"evenodd\"><path d=\"M0 0h14v14H0z\" \/><path d=\"M7.45 9.887l-1.62 1.621c-.92.92-2.418.92-3.338 0a2.364 2.364 0 0 1 0-3.339l1.62-1.62-1.273-1.272-1.62 1.62a4.161 4.161 0 1 0 5.885 5.884l1.62-1.62L7.45 9.886zM5.527 5.135L7.17 3.492c.92-.92 2.418-.92 3.339 0 .92.92.92 2.418 0 3.339L8.866 8.473l1.272 1.273 1.644-1.643A4.161 4.161 0 1 0 5.897 2.22L4.254 3.863l1.272 1.272zm-.66 3.998a.749.749 0 0 1 0-1.06l2.208-2.206a.749.749 0 1 1 1.06 1.06L5.928 9.133a.75.75 0 0 1-1.061 0z\" style \/><\/g><\/svg><\/a><div class=\"link-text\" data-anchor=\"6 headless SEO best practices\" data-section=\"headless-seo-best-practices\">\n\n\n\n<h2 class=\"wp-block-heading\"><a id=\"post-171092-_juq0tno6mb7a\"><\/a>6 headless SEO best practices<\/h2>\n\n\n\n<\/div><\/div>\n\n\n\n<p>Headless SEO best practices typically follow the same rules as any SEO strategy. You should still create valuable content that meets search intent, deliver optimal user experiences, and ensure search engines are crawling a lean, optimized website.<\/p>\n\n\n\n<p>However, headless SEO also requires a greater degree of competency and knowledge when it comes to some technical and on-page SEO implementations which we\u2019ve outlined for you&nbsp;below.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"post-171092-_rsqn1q9cv1lq\"><\/a>1. Brief your devs on technical SEO best practices<\/h3>\n\n\n\n<p>This may sound boring but you <em>really<\/em> can\u2019t succeed with headless SEO unless your devs understand what they need to implement. And that comes down to how well you communicate with&nbsp;them.<\/p>\n\n\n\n<p>For example, instead of instructing them to simply \u201cadd a sitemap,\u201d get specific. <em>\u201cI need an XML sitemap that updates dynamically on a daily basis and only includes indexable, canonical URLs with a <a href=\"https:\/\/ahrefs.com\/blog\/http-status-codes\/\">200 status code<\/a>.\u201d<\/em><\/p>\n\n\n\n<p>Then, you can leverage Ahrefs\u2019 <a href=\"https:\/\/ahrefs.com\/site-audit\">Site Audit<\/a> to keep track of how developers are implementing your requests. Set up a regular audit schedule so you can keep tabs on critical errors across a list of over 170 technical issues.<\/p>\n\n\n\n<p>For example, here are all the ones for sitemaps that you can use to audit the implementation of the above instructions:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"335\" height=\"642\" class=\"wp-image-171105\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/17-sitemap-related-issues-to-account-for-when-work.png\" alt=\"17 sitemap-related issues to account for when working in a headless CMS, from Ahrefs' Site Audit tool\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/17-sitemap-related-issues-to-account-for-when-work.png 335w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/17-sitemap-related-issues-to-account-for-when-work-222x425.png 222w\" sizes=\"auto, (max-width: 335px) 100vw, 335px\"><\/figure>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"post-171092-_xnwfxry19m7t\"><\/a>2. Use keyword insights to create your content models<\/h3>\n\n\n\n<p>The best place to start content modeling is by <a href=\"https:\/\/ahrefs.com\/seo\/keyword-research\" data-ahr=\"https:\/\/ahrefs.com\/blog\/keyword-research\/\">doing keyword research<\/a>. Not only can you uncover the dominant search intents your content will need to meet, you can also get really cool insights on attributes to include in your content models.<\/p>\n\n\n\n<p>For example, let\u2019s say you\u2019re a real estate agent in New York. Using Ahrefs\u2019 <a href=\"https:\/\/ahrefs.com\/keywords-explorer\">Keywords Explorer<\/a>, you see that there are a number of specific, medium- to <a href=\"https:\/\/ahrefs.com\/blog\/long-tail-keywords\/\">long-tail keywords<\/a> people search for:<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1361\" height=\"821\" class=\"wp-image-171106\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-real-estate-keywords-in-ahrefs-keyword.png\" alt=\"Example of real estate keywords in Ahrefs' Keywords Explorer\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-real-estate-keywords-in-ahrefs-keyword.png 1361w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-real-estate-keywords-in-ahrefs-keyword-680x410.png 680w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-real-estate-keywords-in-ahrefs-keyword-768x463.png 768w\" sizes=\"auto, (max-width: 1361px) 100vw, 1361px\"><\/figure>\n\n\n\n<p>From these, we&nbsp;can:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Infer search intent, like if people want to buy or&nbsp;rent.<\/li>\n\n\n\n<li>Discover attributes people care most about, like the number of bedrooms or a lakefront location.<\/li>\n\n\n\n<li>Map out suburbs with a lot of interest, like Rochester or Charlton.<\/li>\n\n\n\n<li>Consider categories for different property types, like apartments or commercial properties.<\/li>\n<\/ul>\n\n\n\n<p>With these insights, we can then create the following in our content model:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Categories based on a purchase or rental intent<\/li>\n\n\n\n<li>Property listings with meaningful attributes included<\/li>\n\n\n\n<li>Categories and tags based on location or property types<\/li>\n\n\n\n<li>A dynamic map with filters for specific attributes<\/li>\n<\/ul>\n\n\n\n<p>And this is just a starting point! The possibilities headless SEO provides are endlessly customizable and using keyword data will help you hone in on what matters most to your audience.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"post-171092-_ndkzxsa9labw\"><\/a>3. Map out your taxonomies like tags and categories<\/h3>\n\n\n\n<p>Taxonomies help name, describe, and classify your content so you can easily find it and so it appears dynamically in the right places.<\/p>\n\n\n\n<p>When it comes to headless SEO, you will need to create a detailed plan so the right content shows up at the right time and is optimized correctly for the device or channel it\u2019s being viewed on.<\/p>\n\n\n\n<p>Tags and categories are common examples of taxonomy structures you can use to organize your content.<\/p>\n\n\n\n<p>For example, a real estate agent might create categories based&nbsp;on:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Location<\/strong>: e.g., New York, Los Angeles, San Francisco<\/li>\n\n\n\n<li><strong>Property types<\/strong>: e.g., Apartment, house, villa, multi-plex<\/li>\n\n\n\n<li><strong>Intent<\/strong>: To buy, to rent, to&nbsp;sell<\/li>\n<\/ul>\n\n\n\n<p>Furthermore, you can create tags that align with the attributes of each property.<\/p>\n\n\n\n<p>Instead of simply tagging a <em>page<\/em> or <em>post<\/em>, however, you\u2019ll be tagging all content types in your headless CMS. This means you may need to consider taxonomies that won\u2019t display on the front-end view&nbsp;layer.<\/p>\n\n\n\n<p>For instance, you can categorize your content based on things like the type of file it is (image, video, text) or the device it\u2019s best viewed on (mobile, desktop, VR headset).<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"post-171092-_nq41oohsyb95\"><\/a>4. Add separate fields for schema markup<\/h3>\n\n\n\n<p><a href=\"https:\/\/ahrefs.com\/blog\/schema-markup\/\">Schema markup<\/a> helps search engines better understand content. Many search engines use schema markup to enhance the interface and display content in a more visually rich manner.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"2048\" height=\"1016\" class=\"wp-image-171107\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/examples-of-google-serp-result-with-and-without-sc.png\" alt=\"Examples of Google SERP result with and without schema markup, respectively\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/examples-of-google-serp-result-with-and-without-sc.png 2048w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/examples-of-google-serp-result-with-and-without-sc-680x337.png 680w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/examples-of-google-serp-result-with-and-without-sc-768x381.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/examples-of-google-serp-result-with-and-without-sc-1536x762.png 1536w\" sizes=\"auto, (max-width: 2048px) 100vw, 2048px\"><\/figure>\n\n\n\n<p>The great thing about headless SEO is that your content models can easily be converted into rich schema markup.<\/p>\n\n\n\n<p>For example, if you create a content type for your real estate agents, you can align the attributes with those required for detailed <a href=\"https:\/\/schema.org\/Person\">person schema<\/a>. Then, schema can be created programmatically and included <em>everywhere<\/em> those fields display (even if they\u2019re not on your website).<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1746\" height=\"2048\" class=\"wp-image-171108\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-seo-content-model-can-be.png\" alt=\"Example of how a headless SEO content model can be marked up with schema\" srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-seo-content-model-can-be.png 1746w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-seo-content-model-can-be-362x425.png 362w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-seo-content-model-can-be-768x901.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/example-of-how-a-headless-seo-content-model-can-be-1310x1536.png 1310w\" sizes=\"auto, (max-width: 1746px) 100vw, 1746px\"><\/figure>\n\n\n\n<p>You can also request that your devs create a field for inputting custom schema instead. This can be done for each URL or for each content component in your content mode, and you can set rules for delivering it in a single script on the front&nbsp;end.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"post-171092-_kovksv1qbp1y\"><\/a>5. Think about heading hierarchy and integrate it into your&nbsp;model<\/h3>\n\n\n\n<p>Heading hierarchy relates to the relationship between main headings and sub-headings in your content. There are <a href=\"https:\/\/ahrefs.com\/blog\/accessibility-seo\/\">SEO and accessibility best practices<\/a> that are best for your content to abide by, but with a headless CMS, it can be difficult to track the heading hierarchy for each&nbsp;page.<\/p>\n\n\n\n<p>As a standard rule, only use one <a href=\"https:\/\/ahrefs.com\/blog\/h1-tag\/\">H1 tag<\/a> and reserve it for the main title of the page. You can do this in the view layer of the website by denoting the field for the main title to be tagged as a H1 in the HTML&nbsp;code.<\/p>\n\n\n\n<p>You can default to H2 or H3 headings for the remaining sub-headings. However, it is important your designers only allocate heading tags to content that is part of the main&nbsp;body.<\/p>\n\n\n\n<figure class=\"wp-block-image\"><img loading=\"lazy\" decoding=\"async\" width=\"1320\" height=\"1563\" class=\"wp-image-171109\" src=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/word-image-171092-17.png\" alt srcset=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/word-image-171092-17.png 1320w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/word-image-171092-17-359x425.png 359w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/word-image-171092-17-768x909.png 768w, https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/word-image-171092-17-1297x1536.png 1297w\" sizes=\"auto, (max-width: 1320px) 100vw, 1320px\"><\/figure>\n\n\n\n<p>Designers can often add heading tags for things they want to look visually similar, even if those elements aren\u2019t part of the main content, so make sure you instruct them not to get carried away!<\/p>\n\n\n\n<h3 class=\"wp-block-heading\"><a id=\"post-171092-_3hbukdz23r1d\"><\/a>6. Use references for internal links<\/h3>\n\n\n\n<p>When it comes to <a href=\"https:\/\/ahrefs.com\/blog\/internal-links-for-seo\/\">internal links<\/a> in a headless SEO strategy, consider adding references instead of full URLs. A reference operates in the background of your CMS and connects content dynamically to each&nbsp;other.<\/p>\n\n\n\n<p>If you change a URL down the track, every reference to it will update automatically on your live site. This can save your team hours of time that would otherwise be wasted finding and fixing broken links, all without them having to touch a single piece of&nbsp;code.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\"><a id=\"post-171092-_4ao6yzdtsrdn\"><\/a>Final thoughts<\/h2>\n\n\n\n<p>There are some clear advantages to using a headless CMS for SEO. But, SEO is not the only factor to consider, and it\u2019s often a decision outside of the SEO team\u2019s control.<\/p>\n\n\n\n<p>It\u2019s worth pitching headless SEO to the decision-makers in your organization if:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>You need a more flexible approach to content deliverability.<\/li>\n\n\n\n<li>You\u2019d like total control over every on-page and technical SEO element.<\/li>\n\n\n\n<li>You\u2019d like to unlock omnichannel marketing capabilities.<\/li>\n\n\n\n<li>You need a more scalable solution for content publishing.<\/li>\n\n\n\n<li>You\u2019d like to deliver better user experiences on your front-end.<\/li>\n\n\n\n<li>You\u2019d like to better segment content by locale or language.<\/li>\n<\/ul>\n\n\n\n<p>Have any questions? Got a cool headless SEO use case to share? Reach out on <a href=\"https:\/\/www.linkedin.com\/in\/despina-gavoyannis\/\">LinkedIn<\/a> and let me&nbsp;know.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>It functions differently from a traditional CMS, like WordPress, and therefore requires different considerations for SEO as well. While general SEO best practices and rules remain the same, how you go about implementing them will differ in a headless setup.<span class=\"ellipsis\">\u2026<\/span><\/p>\n<div class=\"read-more\">Read more \u203a<\/div>\n<p><!-- end of .read-more --><\/p>\n","protected":false},"author":195,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"wp_typography_post_enhancements_disabled":false,"footnotes":""},"categories":[329],"tags":[],"coauthors":[458],"class_list":["post-171092","post","type-post","status-publish","format-standard","hentry","category-technical-seo","odd"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v27.3 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Headless SEO Explained + 6 Best Practices<\/title>\n<meta name=\"description\" content=\"A headless CMS separates a website\u2019s content from its design and code. But how can this affect your SEO?\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Headless SEO Explained + 6 Best Practices\" \/>\n<meta property=\"og:description\" content=\"It&#039;s not that hard.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/\" \/>\n<meta property=\"og:site_name\" content=\"SEO Blog by Ahrefs\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Ahrefs\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-01-22T17:19:35+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-04T15:55:08+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works.png\" \/>\n<meta name=\"author\" content=\"Despina Gavoyannis\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@ahrefs\" \/>\n<meta name=\"twitter:site\" content=\"@ahrefs\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/\"},\"author\":{\"name\":\"Despina Gavoyannis\",\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/#\\\/schema\\\/person\\\/143d08bacfea1ed0736d76ad138ce704\"},\"headline\":\"Headless SEO Explained + 6 Best Practices\",\"datePublished\":\"2024-01-22T17:19:35+00:00\",\"dateModified\":\"2024-10-04T15:55:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/\"},\"wordCount\":3143,\"publisher\":{\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/headless-seo-explained-6-best-by-despina-gavoyannis-technical-seo.jpg\",\"articleSection\":[\"Technical SEO\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/\",\"url\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/\",\"name\":\"Headless SEO Explained + 6 Best Practices\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/analogy-of-how-a-traditional-cms-works.png\",\"datePublished\":\"2024-01-22T17:19:35+00:00\",\"dateModified\":\"2024-10-04T15:55:08+00:00\",\"description\":\"A headless CMS separates a website\u2019s content from its design and code. But how can this affect your SEO?\",\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/headless-cms-seo\\\/#primaryimage\",\"url\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/analogy-of-how-a-traditional-cms-works.png\",\"contentUrl\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/01\\\/analogy-of-how-a-traditional-cms-works.png\",\"width\":1600,\"height\":1566,\"caption\":\"Analogy of how a traditional CMS works\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/\",\"name\":\"SEO Blog by Ahrefs\",\"description\":\"Link Building Strategies &amp; SEO Tips\",\"publisher\":{\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/#organization\",\"name\":\"Ahrefs\",\"url\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/ahrefs-logo.png\",\"contentUrl\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/wp-content\\\/uploads\\\/2023\\\/06\\\/ahrefs-logo.png\",\"width\":2048,\"height\":768,\"caption\":\"Ahrefs\"},\"image\":{\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/Ahrefs\\\/\",\"https:\\\/\\\/x.com\\\/ahrefs\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/ahrefs\\\/\",\"https:\\\/\\\/www.youtube.com\\\/c\\\/ahrefscom\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/#\\\/schema\\\/person\\\/143d08bacfea1ed0736d76ad138ce704\",\"name\":\"Despina Gavoyannis\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Despina-Gavoyannis-scaled.jpg18160744e97f916a45416ab6ccdfe2c0\",\"url\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Despina-Gavoyannis-scaled.jpg\",\"contentUrl\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/wp-content\\\/uploads\\\/2024\\\/06\\\/Despina-Gavoyannis-scaled.jpg\",\"caption\":\"Despina Gavoyannis\"},\"description\":\"Despina Gavoyannis is a Senior SEO Specialist at Ahrefs, a leading marketing platform for search, AI, and beyond. She has worked in SEO for over 10 years, specializing in revenue-driven strategies and collaborating closely with cross-functional teams, including UX designers, developers, and marketers.\",\"sameAs\":[\"https:\\\/\\\/www.linkedin.com\\\/in\\\/despina-gavoyannis\\\/\"],\"url\":\"https:\\\/\\\/ahrefs.com\\\/blog\\\/author\\\/despina-gavoyannis\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Headless SEO Explained + 6 Best Practices","description":"A headless CMS separates a website\u2019s content from its design and code. But how can this affect your SEO?","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:\/\/ahrefs.com\/blog\/headless-cms-seo\/","og_locale":"en_US","og_type":"article","og_title":"Headless SEO Explained + 6 Best Practices","og_description":"It's not that hard.","og_url":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/","og_site_name":"SEO Blog by Ahrefs","article_publisher":"https:\/\/www.facebook.com\/Ahrefs\/","article_published_time":"2024-01-22T17:19:35+00:00","article_modified_time":"2024-10-04T15:55:08+00:00","og_image":[{"url":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works.png","type":"","width":"","height":""}],"author":"Despina Gavoyannis","twitter_card":"summary_large_image","twitter_creator":"@ahrefs","twitter_site":"@ahrefs","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/#article","isPartOf":{"@id":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/"},"author":{"name":"Despina Gavoyannis","@id":"https:\/\/ahrefs.com\/blog\/#\/schema\/person\/143d08bacfea1ed0736d76ad138ce704"},"headline":"Headless SEO Explained + 6 Best Practices","datePublished":"2024-01-22T17:19:35+00:00","dateModified":"2024-10-04T15:55:08+00:00","mainEntityOfPage":{"@id":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/"},"wordCount":3143,"publisher":{"@id":"https:\/\/ahrefs.com\/blog\/#organization"},"image":{"@id":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/#primaryimage"},"thumbnailUrl":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/headless-seo-explained-6-best-by-despina-gavoyannis-technical-seo.jpg","articleSection":["Technical SEO"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/","url":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/","name":"Headless SEO Explained + 6 Best Practices","isPartOf":{"@id":"https:\/\/ahrefs.com\/blog\/#website"},"primaryImageOfPage":{"@id":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/#primaryimage"},"image":{"@id":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/#primaryimage"},"thumbnailUrl":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works.png","datePublished":"2024-01-22T17:19:35+00:00","dateModified":"2024-10-04T15:55:08+00:00","description":"A headless CMS separates a website\u2019s content from its design and code. But how can this affect your SEO?","inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/ahrefs.com\/blog\/headless-cms-seo\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ahrefs.com\/blog\/headless-cms-seo\/#primaryimage","url":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works.png","contentUrl":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/01\/analogy-of-how-a-traditional-cms-works.png","width":1600,"height":1566,"caption":"Analogy of how a traditional CMS works"},{"@type":"WebSite","@id":"https:\/\/ahrefs.com\/blog\/#website","url":"https:\/\/ahrefs.com\/blog\/","name":"SEO Blog by Ahrefs","description":"Link Building Strategies &amp; SEO Tips","publisher":{"@id":"https:\/\/ahrefs.com\/blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/ahrefs.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/ahrefs.com\/blog\/#organization","name":"Ahrefs","url":"https:\/\/ahrefs.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ahrefs.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2023\/06\/ahrefs-logo.png","contentUrl":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2023\/06\/ahrefs-logo.png","width":2048,"height":768,"caption":"Ahrefs"},"image":{"@id":"https:\/\/ahrefs.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Ahrefs\/","https:\/\/x.com\/ahrefs","https:\/\/www.linkedin.com\/company\/ahrefs\/","https:\/\/www.youtube.com\/c\/ahrefscom"]},{"@type":"Person","@id":"https:\/\/ahrefs.com\/blog\/#\/schema\/person\/143d08bacfea1ed0736d76ad138ce704","name":"Despina Gavoyannis","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/06\/Despina-Gavoyannis-scaled.jpg18160744e97f916a45416ab6ccdfe2c0","url":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/06\/Despina-Gavoyannis-scaled.jpg","contentUrl":"https:\/\/ahrefs.com\/blog\/wp-content\/uploads\/2024\/06\/Despina-Gavoyannis-scaled.jpg","caption":"Despina Gavoyannis"},"description":"Despina Gavoyannis is a Senior SEO Specialist at Ahrefs, a leading marketing platform for search, AI, and beyond. She has worked in SEO for over 10 years, specializing in revenue-driven strategies and collaborating closely with cross-functional teams, including UX designers, developers, and marketers.","sameAs":["https:\/\/www.linkedin.com\/in\/despina-gavoyannis\/"],"url":"https:\/\/ahrefs.com\/blog\/author\/despina-gavoyannis\/"}]}},"as_json":null,"_links":{"self":[{"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/posts\/171092","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/users\/195"}],"replies":[{"embeddable":true,"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/comments?post=171092"}],"version-history":[{"count":0,"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/posts\/171092\/revisions"}],"wp:attachment":[{"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/media?parent=171092"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/categories?post=171092"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/tags?post=171092"},{"taxonomy":"author","embeddable":true,"href":"https:\/\/ahrefs.com\/blog\/wp-json\/wp\/v2\/coauthors?post=171092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}