{"id":20929,"date":"2024-05-21T04:43:08","date_gmt":"2024-05-21T08:43:08","guid":{"rendered":"https:\/\/dinorank.com\/en-us\/blog-seo\/?p=20929"},"modified":"2025-06-05T05:19:55","modified_gmt":"2025-06-05T09:19:55","slug":"topical-authority","status":"publish","type":"post","link":"https:\/\/dinorank.com\/en-us\/blog-seo\/topical-authority\/","title":{"rendered":"What is and how to apply Topical Authority?"},"content":{"rendered":"\n<p>When we start a new project on the Internet, we all want to <strong>rank it at all costs and as quickly as possible<\/strong>. Whether it&#8217;s a blog, an e-commerce, or any other type of online business.<\/p>\n\n\n\n<p>From the beginning, we aim to write about all possible topics in our industry, <strong>addressing those search intentions<\/strong> and doubts of our potential customers.<\/p>\n\n\n\n<p>That sounds great in theory. We all tend to think that if we cast our net wide, even if we don&#8217;t know how to fish, a fish will bite occasionally, right?<\/p>\n\n\n\n<p>Well, I&#8217;m sorry to say that in SEO, &#8216;<em>jack of all trades, master of none<\/em>.&#8217; And this is something <strong>Google strictly follows with the so-called &#8216;Topical Authority&#8217;<\/strong>. Today I&#8217;ll tell you what it is and how you can optimize it. Stick around to find out:<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What is Topical Authority?<\/h2>\n\n\n\n<p>Topical Authority or thematic authority is the relevance or <em>weight<\/em> that a website has regarding a specific topic. This relevance is achieved by generating valuable, in-depth content that satisfies the different search intentions of users on a specific topic.<\/p>\n\n\n\n<p>Before we continue, I think it&#8217;s important to note that in terms of terminology, you may find this concept written as:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Topical Authority<\/li>\n\n\n\n<li>Thematic Authority<\/li>\n\n\n\n<li>Topical Authority<\/li>\n<\/ul>\n\n\n\n<p>But all these terms mean the same thing. Therefore, <strong>I will use these terms interchangeably throughout the explanation of this content<\/strong>. With that said, let&#8217;s continue.<\/p>\n\n\n\n<p>In this regard, there is clear evidence regarding the search engine:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Google tends to give greater relevance to the content of a website with higher topical authority and will reward it with better positions in the SERPs in searches related to that specific sector or topic. <strong>How deep can you go in a niche or specialty?<\/strong><\/p>\n<\/blockquote>\n\n\n\n<p>For example, in the case of DinoRANK, we have topical authority in the field of SEO.<\/p>\n\n\n\n<p>This is because everything published on our website is related to this topic.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"366\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Topical-Authority-of-DinoRANK-in-SEO-1024x366.png\" alt=\"Topical Authority of DinoRANK in SEO\" class=\"wp-image-20946\" style=\"width:801px;height:auto\" title=\"Topical Authority of DinoRANK in SEO\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Topical-Authority-of-DinoRANK-in-SEO-1024x366.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Topical-Authority-of-DinoRANK-in-SEO-300x107.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Topical-Authority-of-DinoRANK-in-SEO-768x274.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Topical-Authority-of-DinoRANK-in-SEO.png 1357w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>To understand the concept of topical authority, let me give you a real-life example: you&#8217;re playing soccer and you get a strong blow to your knee, who do you think can confirm if it&#8217;s a fracture and solve the problem better?<\/p>\n\n\n\n<p>Your general practitioner or a specialized orthopedic surgeon? It&#8217;s obvious it&#8217;s the latter.<\/p>\n\n\n\n<p>Therefore, following this analogy, I think it&#8217;s obvious to think that <strong>Google tends to position preferably specialists<\/strong> and not websites with a slightly broader thematic range, even if they belong to the same sector.<\/p>\n\n\n\n<p>So before you start improving your topical authority, <strong>I recommend that you clearly define which niche you are going to target<\/strong> and the audience or target that forms it.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">What is the difference between topical authority and domain authority?<\/h3>\n\n\n\n<p>Sometimes, these two terms are confused because of their grammatical similarity. But they refer to two different concepts.<\/p>\n\n\n\n<p>The main difference between topical authority and domain authority is that:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Domain Authority (DA)<\/strong> represents the strength that search engines give to your website in general, largely measured by the number of external links (backlinks) your domain receives from others.<\/li>\n\n\n\n<li><strong>Topical authority<\/strong> measures a website&#8217;s specialization in a specific topic.<\/li>\n<\/ul>\n\n\n\n<p>Many people often think that these are similar concepts but they don&#8217;t necessarily have to be related.<\/p>\n\n\n\n<p>For example, in the case of DinoRANK, we have a domain authority of 36 out of 100 according to MOZ:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large is-resized\"><img decoding=\"async\" width=\"1024\" height=\"412\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANs-Domain-Authority-1-1024x412.png\" alt=\"\" class=\"wp-image-20965\" style=\"width:810px;height:auto\" title=\"DinoRAN's Domain Authority\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANs-Domain-Authority-1-1024x412.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANs-Domain-Authority-1-300x121.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANs-Domain-Authority-1-768x309.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANs-Domain-Authority-1-1536x618.png 1536w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANs-Domain-Authority-1.png 1903w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>This doesn&#8217;t mean that for any topic, Google grants us the same relevance.<\/p>\n\n\n\n<p>If we create content on a topic where we don&#8217;t have expertise in SEO, it will be harder (and sometimes impossible) to rank well in Google searches.<\/p>\n\n\n\n<p>The ideal way to increase the likelihood of ranking your content is to understand that:<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p><strong>Domain authority and topical authority should complement each other<\/strong>, synergize with each other, and push your content as high as possible.<\/p>\n<\/blockquote>\n\n\n\n<h2 class=\"wp-block-heading\">Why Topical Authority is so Important for SEO<\/h2>\n\n\n\n<p>Understanding the concept of topical authority leads us to question its real importance in increasing organic visibility and why search engines attach so much importance to it.<\/p>\n\n\n\n<p>Following a good strategy to optimize topical authority will bring you these benefits:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Your website&#8217;s visibility will increase<\/h3>\n\n\n\n<p>By publishing content related only to your niche, search engines will tend to give you greater relevance (or at least take you into account) whenever there are queries related to it.<\/p>\n\n\n\n<p>To achieve this, the basic premise of SEO reappears: <strong>remember to create quality and relevant content<\/strong>.<\/p>\n\n\n\n<p>For example, when a user searches for &#8220;<em>What is an H1 in SEO<\/em>,&#8221; Google will tend to show us before another blog that talks about a wide variety of topics related to digital marketing in general.<\/p>\n\n\n\n<p>If you focus on optimizing your topical authority, <strong>no one will guarantee you a better position in the SERPs<\/strong> for your topic. What is true is that Google will consider you more because <strong>it knows perfectly well that your website is &#8216;specialized&#8217;<\/strong> in solving those queries or consultations made by the user.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Increased credibility and trust<\/h3>\n\n\n\n<p>The consequence of always appearing among the first results in searches related to your niche will make users <strong>trust more in your content, your persona, and your brand<\/strong> because they will receive more impact and interaction with it.<\/p>\n\n\n\n<p>In the end, on the Internet, people behave similarly to real life:<\/p>\n\n\n\n<p>If you buy several products from a brand and are very satisfied, when you need other complementary products, you will look for them from that same brand.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">You will attract your target audience more precisely<\/h3>\n\n\n\n<p>And as a result of the above two points, you will attract potential consumers of your brand (it will be easier for you to &#8216;hook them&#8217;)<\/p>\n\n\n\n<p>In the case of DinoRANK, those who enter the website, such as yourself, will be professionals and individuals interested in SEO in general.<\/p>\n\n\n\n<p>Therefore, it is very likely that when you need help with an <a href=\"https:\/\/dinorank.com\/en-us\/blog-seo\/best-seo-tools-to-rank\/\">SEO tool for your daily tasks<\/a>, one of your options will be to hire DinoRANK.<\/p>\n\n\n\n<div id=\"brxe-dac047\" class=\"brxe-block p-2 gap-15\"><div id=\"brxe-481bc6\" class=\"brxe-text-basic h3\">Another SEO newsletter?\n\nYes.\n<\/div><div id=\"brxe-b11ebb\" class=\"brxe-text-basic\">This is what we can offer you:<\/div><div id=\"brxe-97bf62\" class=\"brxe-text-basic\"><strong>No fluff, no hype. 100% honesty. 100% straight to the point<\/strong>. All we need is your email and a bit of your attention\u2014we\u2019ll handle the rest.\n\nIt\u2019s your call.\n<\/div><div id=\"brxe-omkwmy\" data-script-id=\"omkwmy\" class=\"brxe-code\"><style>@import url(https:\/\/fonts.bunny.net\/css?family=source-sans-pro:400,700);<\/style>\n<style>\n#_form_311_{font-size:14px;line-height:1.6;font-family:arial, helvetica, sans-serif;margin:0}#_form_311_ *{outline:0}._form_hide{display:none;visibility:hidden}._form_show{display:block;visibility:visible}#_form_311_._form-top{top:0}#_form_311_._form-bottom{bottom:0}#_form_311_._form-left{left:0}#_form_311_._form-right{right:0}#_form_311_ input[type=\"text\"],#_form_311_ input[type=\"tel\"],#_form_311_ input[type=\"date\"],#_form_311_ textarea{padding:6px;height:auto;border:#979797 1px solid;border-radius:4px;color:#000 !important;font-size:14px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box}#_form_311_ textarea{resize:none}#_form_311_ ._submit{-webkit-appearance:none;cursor:pointer;font-family:arial, sans-serif;font-size:14px;text-align:center;background:#00C4A7 !important;border:0 !important;-moz-border-radius:3px !important;-webkit-border-radius:3px !important;border-radius:3px !important;color:#FFFFFF !important;padding:14px !important}#_form_311_ ._submit:disabled{cursor:not-allowed;opacity:0.4}#_form_311_ ._submit.processing{position:relative}#_form_311_ ._submit.processing::before{content:\"\";width:1em;height:1em;position:absolute;z-index:1;top:50%;left:50%;border:double 3px transparent;border-radius:50%;background-image:linear-gradient(#00C4A7, #00C4A7), conic-gradient(#00C4A7, #FFFFFF);background-origin:border-box;background-clip:content-box, border-box;animation:1200ms ease 0s infinite normal none running _spin}#_form_311_ ._submit.processing::after{content:\"\";position:absolute;top:0;bottom:0;left:0;right:0;background:#00C4A7 !important;border:0 !important;-moz-border-radius:3px !important;-webkit-border-radius:3px !important;border-radius:3px !important;color:#FFFFFF !important;padding:14px !important}@keyframes _spin{0%{transform:translate(-50%, -50%) rotate(90deg)}100%{transform:translate(-50%, -50%) rotate(450deg)}}#_form_311_ ._close-icon{cursor:pointer;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/esfkyjh1u_forms-close-dark.png\");background-repeat:no-repeat;background-size:14.2px 14.2px;position:absolute;display:block;top:11px;right:9px;overflow:hidden;width:16.2px;height:16.2px}#_form_311_ ._close-icon:before{position:relative}#_form_311_ ._form-body{margin-bottom:30px}#_form_311_ ._form-image-left{width:150px;float:left}#_form_311_ ._form-content-right{margin-left:164px}#_form_311_ ._form-branding{color:#fff;font-size:10px;clear:both;text-align:left;margin-top:30px;font-weight:100}#_form_311_ ._form-branding ._logo{display:block;width:130px;height:14px;margin-top:6px;background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/hh9ujqgv5_aclogo_li.png\");background-size:130px auto;background-repeat:no-repeat}#_form_311_ .form-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}#_form_311_ ._form-label,#_form_311_ ._form_element ._form-label{font-weight:bold;margin-bottom:5px;display:block}#_form_311_._dark ._form-branding{color:#333}#_form_311_._dark ._form-branding ._logo{background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/jftq2c8s_aclogo_dk.png\")}#_form_311_ ._form_element{position:relative;margin-bottom:10px;font-size:0;max-width:100%}#_form_311_ ._form_element *{font-size:14px}#_form_311_ ._form_element._clear{clear:both;width:100%;float:none}#_form_311_ ._form_element._clear:after{clear:left}#_form_311_ ._form_element input[type=\"text\"],#_form_311_ ._form_element input[type=\"date\"],#_form_311_ ._form_element select,#_form_311_ ._form_element textarea:not(.g-recaptcha-response){display:block;width:100%;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-family:inherit}#_form_311_ ._field-wrapper{position:relative}#_form_311_ ._inline-style{float:left}#_form_311_ ._inline-style input[type=\"text\"]{width:150px}#_form_311_ ._inline-style:not(._clear){margin-right:20px}#_form_311_ ._form_element img._form-image{max-width:100%}#_form_311_ ._form_element ._form-fieldset{border:0;padding:0.01em 0 0 0;margin:0;min-width:0}#_form_311_ ._clear-element{clear:left}#_form_311_ ._full_width{width:100%}#_form_311_ ._form_full_field{display:block;width:100%;margin-bottom:10px}#_form_311_ input[type=\"text\"]._has_error,#_form_311_ textarea._has_error{border:#F37C7B 1px solid}#_form_311_ input[type=\"checkbox\"]._has_error{outline:#F37C7B 1px solid}#_form_311_ ._show_be_error{float:left}#_form_311_ ._error{display:block;position:absolute;font-size:14px;z-index:10000001}#_form_311_ ._error._above{padding-bottom:4px;bottom:39px;right:0}#_form_311_ ._error._below{padding-top:8px;top:100%;right:0}#_form_311_ ._error._above ._error-arrow{bottom:-4px;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #FFDDDD}#_form_311_ ._error._below ._error-arrow{top:0;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #FFDDDD}#_form_311_ ._error-inner{padding:12px 12px 12px 36px;background-color:#FFDDDD;background-image:url(\"data:image\/svg+xml,%3Csvg width='16' height='16' viewBox='0 0 16 16' fill='none' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cpath fill-rule='evenodd' clip-rule='evenodd' d='M16 8C16 12.4183 12.4183 16 8 16C3.58172 16 0 12.4183 0 8C0 3.58172 3.58172 0 8 0C12.4183 0 16 3.58172 16 8ZM9 3V9H7V3H9ZM9 13V11H7V13H9Z' fill='%23CA0000'\/%3E%3C\/svg%3E\");background-repeat:no-repeat;background-position:12px center;font-size:14px;font-family:arial, sans-serif;font-weight:600;line-height:16px;color:#000;text-align:center;text-decoration:none;-webkit-border-radius:4px;-moz-border-radius:4px;border-radius:4px;box-shadow:0 1px 4px rgba(31, 33, 41, 0.298295)}@media only screen and (max-width:319px){#_form_311_ ._error-inner{padding:7px 7px 7px 25px;font-size:12px;line-height:12px;background-position:4px center;max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}}#_form_311_ ._error-inner._form_error{margin-bottom:5px;text-align:left}#_form_311_ ._button-wrapper ._error-inner._form_error{position:static}#_form_311_ ._error-inner._no_arrow{margin-bottom:10px}#_form_311_ ._error-arrow{position:absolute;width:0;height:0}#_form_311_ ._error-html{margin-bottom:10px}.pika-single{z-index:10000001 !important}#_form_311_ input[type=\"text\"].datetime_date{width:69%;display:inline}#_form_311_ select.datetime_time{width:29%;display:inline;height:32px}#_form_311_ input[type=\"date\"].datetime_date{width:69%;display:inline-flex}#_form_311_ input[type=\"time\"].datetime_time{width:29%;display:inline-flex}@media (min-width:320px) and (max-width:667px){::-webkit-scrollbar{display:none}#_form_311_{margin:0;width:100%;min-width:100%;max-width:100%;box-sizing:border-box}#_form_311_ *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:1em}#_form_311_ ._form-content{margin:0;width:100%}#_form_311_ ._form-inner{display:block;min-width:100%}#_form_311_ ._form-title,#_form_311_ ._inline-style{margin-top:0;margin-right:0;margin-left:0}#_form_311_ ._form-title{font-size:1.2em}#_form_311_ ._form_element{margin:0 0 20px;padding:0;width:100%}#_form_311_ ._form-element,#_form_311_ ._inline-style,#_form_311_ input[type=\"text\"],#_form_311_ label,#_form_311_ p,#_form_311_ textarea:not(.g-recaptcha-response){float:none;display:block;width:100%}#_form_311_ ._row._checkbox-radio label{display:inline}#_form_311_ ._row,#_form_311_ p,#_form_311_ label{margin-bottom:0.7em;width:100%}#_form_311_ ._row input[type=\"checkbox\"],#_form_311_ ._row input[type=\"radio\"]{margin:0 !important;vertical-align:middle !important}#_form_311_ ._row input[type=\"checkbox\"]+span label{display:inline}#_form_311_ ._row span label{margin:0 !important;width:initial !important;vertical-align:middle !important}#_form_311_ ._form-image{max-width:100%;height:auto !important}#_form_311_ input[type=\"text\"]{padding-left:10px;padding-right:10px;font-size:16px;line-height:1.3em;-webkit-appearance:none}#_form_311_ input[type=\"radio\"],#_form_311_ input[type=\"checkbox\"]{display:inline-block;width:1.3em;height:1.3em;font-size:1em;margin:0 0.3em 0 0;vertical-align:baseline}#_form_311_ button[type=\"submit\"]{padding:20px;font-size:1.5em}#_form_311_ ._inline-style{margin:20px 0 0 !important}#_form_311_ ._inline-style input[type=\"text\"]{width:100%}}#_form_311_ .sms_consent_checkbox{position:relative;width:100%;display:flex;align-items:flex-start;padding:20px 0}#_form_311_ .sms_consent_checkbox input[type=\"checkbox\"]{float:left;margin:5px 10px 10px 0}#_form_311_ .sms_consent_checkbox .sms_consent_message{display:inline;float:left;text-align:left;margin-bottom:10px;font-size:14px;color:#7D8799}#_form_311_ .sms_consent_checkbox .sms_consent_message.sms_consent_mini{width:90%}#_form_311_ .sms_consent_checkbox ._error._above{right:auto;bottom:0}#_form_311_ .sms_consent_checkbox ._error._above ._error-arrow{right:auto;left:5px}@media (min-width:320px) and (max-width:667px){#_form_311_ .sms_consent_checkbox ._error._above{top:-30px;left:0;bottom:auto}}#_form_311_ .field-required{color:#FF0000}#_form_311_{position:relative;text-align:left;margin:25px auto 0;padding:20px;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;background:rgba(255, 255, 255, 0) !important;border-top:0px solid #737373 !important;border-right:0px solid #737373 !important;border-bottom:0px solid #737373 !important;border-left:0px solid #737373 !important;max-width:800px;-moz-border-radius:1px !important;-webkit-border-radius:1px !important;border-radius:1px !important;color:#000000}#_form_311_ ._show_be_error{min-width:100%}#_form_311_._inline-form,#_form_311_._inline-form ._form-content{font-family:Source Sans Pro;font-size:14px;font-weight:400}#_form_311_._inline-form ._row span,#_form_311_._inline-form ._row label{font-family:Source Sans Pro;font-size:14px;font-weight:400;line-height:1.6em;color:#888 !important}#_form_311__inlineform input[type=\"text\"],#_form_311__inlineform input[type=\"date\"],#_form_311__inlineform input[type=\"tel\"],#_form_311__inlineform select,#_form_311__inlineform textarea:not(.g-recaptcha-response){font-family:Source Sans Pro;font-size:14px;font-weight:400;font-color:#000000;line-height:1.6em}#_form_311_._inline-form ._html-code *:not(h1, h2, h3, h4, h5, h6),#_form_311_._inline-form .sms_consent_message,#_form_311_._inline-form ._form-thank-you{font-family:Source Sans Pro;font-size:14px;font-weight:400;color:#888 !important}#_form_311_._inline-form ._form-label,#_form_311_._inline-form ._form-emailidentifier,#_form_311_._inline-form ._form-checkbox-option-label{font-family:Source Sans Pro;font-size:14px;font-weight:700;line-height:1.6em;color:#888 !important}#_form_311_._inline-form ._submit{margin-top:12px;font-family:Source Sans Pro;font-size:14px;font-weight:400}#_form_311_._inline-form ._html-code h1,#_form_311_._inline-form ._html-code h2,#_form_311_._inline-form ._html-code h3,#_form_311_._inline-form ._html-code h4,#_form_311_._inline-form ._html-code h5,#_form_311_._inline-form ._html-code h6,#_form_311_._inline-form ._form-title{font-family:Source Sans Pro;font-size:22px;line-height:normal;font-weight:700;color:black;margin-bottom:0;display:block}#_form_311_._inline-form ._form-branding{font-family:\"IBM Plex Sans\", Helvetica, sans-serif;font-size:13px;font-weight:100;font-style:normal;text-decoration:none}#_form_311_:before,#_form_311_:after{content:\" \";display:table}#_form_311_:after{clear:both}#_form_311_._inline-style{width:auto;display:inline-block}#_form_311_._inline-style input[type=\"text\"],#_form_311_._inline-style input[type=\"date\"]{padding:10px 12px}#_form_311_._inline-style button._inline-style{position:relative;top:27px}#_form_311_._inline-style p{margin:0}#_form_311_._inline-style ._button-wrapper{position:relative;margin:16px 12.5px 0 20px}#_form_311_ ._form-thank-you{position:relative;left:0;right:0;text-align:center;font-size:18px}#_form_311_ ._form-pc-confirmation ._submit{margin-top:16px}@media (min-width:320px) and (max-width:667px){#_form_311_._inline-form._inline-style ._inline-style._button-wrapper{margin-top:20px !important;margin-left:0 !important}}#_form_311_ .iti{width:100%}#_form_311_ .iti.iti--allow-dropdown.iti--separate-dial-code{width:100%}#_form_311_ .iti input{width:100%;border:#979797 1px solid;border-radius:4px}#_form_311_ .iti--separate-dial-code .iti__selected-flag{background-color:#FFFFFF;border-radius:4px}#_form_311_ .iti--separate-dial-code .iti__selected-flag:hover{background-color:rgba(0, 0, 0, 0.05)}#_form_311_ .iti__country-list{border-radius:4px;margin-top:4px;min-width:460px}#_form_311_ .iti__country-list--dropup{margin-bottom:4px}#_form_311_ .phone-error-hidden{display:none}#_form_311_ .phone-error{color:#E40E49}#_form_311_ .phone-input-error{border:1px solid #E40E49 !important}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field fieldset{margin:0;margin-bottom:1.1428571429em;border:none;padding:0}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field fieldset:last-child{margin-bottom:0}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field legend{margin-bottom:1.1428571429em}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field label{display:flex;align-items:flex-start;justify-content:flex-start;margin-bottom:0.8571428571em}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field label:last-child{margin-bottom:0}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field input{margin:0;margin-right:8px}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label{display:block;font-weight:400;margin-top:-4px}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label-with-description{display:block;font-weight:700;margin-top:-4px}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-description{margin:0;font-size:0.8571428571em}#_form_311_._inline-form ._form-content ._form-list-subscriptions-field ._form-subscriptions-unsubscribe-all-description{line-height:normal;margin-top:-2px}\n#_form_311_ ._submit{width:100%;font-family:\"Source Sans Pro\", Sans-serif !important;font-size:18px !important;font-weight:500 !important}#_form_311_ ._submit:hover{background-color:#04937E !important}#_form_311_ input#email{padding:3px 12px;background-color:#ffffff;border-radius:2px}#_form_311_._form{margin-top:-5px}#_form_311_ ._error._below{position:relative !important}#_form_311_ ._error._above{position:absolute !important}@media (min-width:320px) and (max-width:667px){#_form_311_ ._form_element{margin:0 0 0px}}<\/style>\n<form method=\"POST\" action=\"https:\/\/deandelafuenteromero.activehosted.com\/proc.php\" id=\"_form_311_\" class=\"_form _form_311 _inline-form  _dark\" novalidate data-styles-version=\"5\">\n  <input type=\"hidden\" name=\"u\" value=\"311\" \/>\n  <input type=\"hidden\" name=\"f\" value=\"311\" \/>\n  <input type=\"hidden\" name=\"s\" \/>\n  <input type=\"hidden\" name=\"c\" value=\"0\" \/>\n  <input type=\"hidden\" name=\"m\" value=\"0\" \/>\n  <input type=\"hidden\" name=\"act\" value=\"sub\" \/>\n  <input type=\"hidden\" name=\"v\" value=\"2\" \/>\n  <input type=\"hidden\" name=\"or\" value=\"1d0d99d99ed2973ea9179629b793b9aa\" \/>\n  <div class=\"_form-content\">\n    <div class=\"_form_element _x74577619 _full_width \" >\n      <label for=\"email\" class=\"_form-label\">\n      <\/label>\n      <div class=\"_field-wrapper\">\n        <input type=\"text\" id=\"email\" name=\"email\" placeholder=\"Enter your email\" required\/>\n      <\/div>\n    <\/div>\n    <div class=\"_form_element _x06467309 _full_width \" >\n      <fieldset class=\"_form-fieldset\">\n        <div class=\"_row\">\n          <legend for=\"field[136][]\" class=\"_form-label\">\n          <\/legend>\n        <\/div>\n        <input data-autofill=\"false\" type=\"hidden\" id=\"field[136][]\" name=\"field[136][]\" value=\"~|\">\n        <div class=\"_row _checkbox-radio\">\n          <input id=\"field_136I have read and accept the privacy policy\" type=\"checkbox\" name=\"field[136][]\"\n          value=\"I have read and accept the privacy policy\"                                                                                 required                                >\n          <span>\n            <label for=\"field_136I have read and accept the privacy policy\">\n              I have read and accept the privacy policy<span class=\"field-required\">\n              *\n            <\/span>\n          <\/label>\n        <\/span>\n      <\/div>\n    <\/fieldset>\n  <\/div>\n  <div class=\"_form_element _x77210210 _full_width \" >\n    <label for=\"ls\" class=\"_form-label\">\n      Verify that you are human<span class=\"field-required\">\n      *\n    <\/span>\n  <\/label>\n  <div class=\"g-recaptcha\" data-sitekey=\"6LcwIw8TAAAAACP1ysM08EhCgzd6q5JAOUR1a0Go\">\n  <\/div>\n<\/div>\n<div class=\"_form_element _x09639014 _full_width \" >\n  <input type=\"hidden\" name=\"field[121]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x64811239 _full_width \" >\n  <input type=\"hidden\" name=\"field[122]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x58860354 _full_width \" >\n  <input type=\"hidden\" name=\"field[123]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x23331849 _full_width \" >\n  <input type=\"hidden\" name=\"field[125]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x72046679 _full_width \" >\n  <input type=\"hidden\" name=\"field[126]\" value=\"\" \/>\n<\/div>\n<div class=\"_form_element _x41336277 _full_width \" >\n  <input type=\"hidden\" name=\"field[127]\" value=\"\" \/>\n<\/div>\n<div class=\"_button-wrapper _full_width\">\n  <button id=\"_form_311_submit\" class=\"_submit\" type=\"submit\">\n    Subscribe here\n  <\/button>\n<\/div>\n<div class=\"_clear-element\">\n<\/div>\n<\/div>\n<div class=\"_form-thank-you\" style=\"display:none;\">\n<\/div>\n<\/form><script>\nwindow.cfields = {\"136\":\"i_have_read_and_accept_the_privacy_policy\",\"121\":\"utm_campaign\",\"122\":\"utm_source\",\"123\":\"utm_medium\",\"125\":\"utm_content\",\"126\":\"utm_adset\",\"127\":\"utm_ad\"};\nwindow._show_thank_you = function(id, message, trackcmp_url, email) {\n    var form = document.getElementById('_form_' + id + '_'), thank_you = form.querySelector('._form-thank-you');\n    form.querySelector('._form-content').style.display = 'none';\n    thank_you.innerHTML = message;\n    thank_you.style.display = 'block';\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._show_unsubscribe = function(id, message, trackcmp_url, email) {\n    var form = document.getElementById('_form_' + id + '_'), unsub = form.querySelector('._form-thank-you');\n    var branding = form.querySelector('._form-branding');\n    if (branding) {\n        branding.style.display = 'none';\n    }\n    form.querySelector('._form-content').style.display = 'none';\n    unsub.style.display = 'block';\n    form.insertAdjacentHTML('afterend', message)\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._show_error = function(id, message, html) {\n    var form = document.getElementById('_form_' + id + '_'),\n        err = document.createElement('div'),\n        button = form.querySelector('button[type=\"submit\"]'),\n        old_error = form.querySelector('._form_error');\n    if (old_error) old_error.parentNode.removeChild(old_error);\n    err.innerHTML = message;\n    err.className = '_error-inner _form_error _no_arrow';\n    var wrapper = document.createElement('div');\n    wrapper.className = '_form-inner _show_be_error';\n    wrapper.appendChild(err);\n    button.parentNode.insertBefore(wrapper, button);\n    var submitButton = form.querySelector('[id^=\"_form\"][id$=\"_submit\"]');\n    submitButton.disabled = false;\n    submitButton.classList.remove('processing');\n    if (html) {\n        var div = document.createElement('div');\n        div.className = '_error-html';\n        div.innerHTML = html;\n        err.appendChild(div);\n    }\n};\nwindow._show_pc_confirmation = function(id, header, detail, show, email) {\n    var form = document.getElementById('_form_' + id + '_'), pc_confirmation = form.querySelector('._form-pc-confirmation');\n    if (pc_confirmation.style.display === 'none') {\n        form.querySelector('._form-content').style.display = 'none';\n        pc_confirmation.innerHTML = \"<div class='_form-title'>\" + header + \"<\/div>\" + \"<p>\" + detail + \"<\/p>\" +\n        \"<button class='_submit' id='hideButton'>Administrar preferencias<\/button>\";\n        pc_confirmation.style.display = 'block';\n        var mp = document.querySelector('input[name=\"mp\"]');\n        mp.value = '0';\n    } else {\n        form.querySelector('._form-content').style.display = 'inline';\n        pc_confirmation.style.display = 'none';\n    }\n\n    var hideButton = document.getElementById('hideButton');\n    \/\/ Add event listener to the button\n    hideButton.addEventListener('click', function() {\n        var submitButton = document.querySelector('#_form_311_submit');\n        submitButton.disabled = false;\n        submitButton.classList.remove('processing');\n        var mp = document.querySelector('input[name=\"mp\"]');\n        mp.value = '1';\n        const cacheBuster = new URL(window.location.href);\n        cacheBuster.searchParams.set('v', new Date().getTime());\n        window.location.href = cacheBuster.toString();\n    });\n\n    const vgoAlias = typeof visitorGlobalObjectAlias === 'undefined' ? 'vgo' : visitorGlobalObjectAlias;\n    var visitorObject = window[vgoAlias];\n    if (email && typeof visitorObject !== 'undefined') {\n        visitorObject('setEmail', email);\n        visitorObject('update');\n    } else if (typeof(trackcmp_url) != 'undefined' && trackcmp_url) {\n        \/\/ Site tracking URL to use after inline form submission.\n        _load_script(trackcmp_url);\n    }\n    if (typeof window._form_callback !== 'undefined') window._form_callback(id);\n};\nwindow._load_script = function(url, callback, isSubmit) {\n    var head = document.querySelector('head'), script = document.createElement('script'), r = false;\n    var submitButton = document.querySelector('#_form_311_submit');\n    script.charset = 'utf-8';\n    script.src = url;\n    if (callback) {\n        script.onload = script.onreadystatechange = function() {\n            if (!r && (!this.readyState || this.readyState == 'complete')) {\n                r = true;\n                callback();\n            }\n        };\n    }\n    script.onerror = function() {\n        if (isSubmit) {\n            if (script.src.length > 10000) {\n                _show_error(\"311\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Acorta tus respuestas y vuelve a intentarlo.\");\n            } else {\n                _show_error(\"311\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Vuelve a intentarlo.\");\n            }\n            submitButton.disabled = false;\n            submitButton.classList.remove('processing');\n        }\n    }\n\n    head.appendChild(script);\n};\n(function() {\n    var iti;\n    if (window.location.search.search(\"excludeform\") !== -1) return false;\n    var getCookie = function(name) {\n        var match = document.cookie.match(new RegExp('(^|; )' + name + '=([^;]+)'));\n        return match ? match[2] : null;\n    }\n    var setCookie = function(name, value) {\n        var now = new Date();\n        var time = now.getTime();\n        var expireTime = time + 1000 * 60 * 60 * 24 * 365;\n        now.setTime(expireTime);\n        document.cookie = name + '=' + value + '; expires=' + now + ';path=\/; Secure; SameSite=Lax;';\n    }\n    var addEvent = function(element, event, func) {\n        if (element.addEventListener) {\n            element.addEventListener(event, func);\n        } else {\n            var oldFunc = element['on' + event];\n            element['on' + event] = function() {\n                oldFunc.apply(this, arguments);\n                func.apply(this, arguments);\n            };\n        }\n    }\n    var _removed = false;\n        var form_to_submit = document.getElementById('_form_311_');\n    var allInputs = form_to_submit.querySelectorAll('input, select, textarea'), tooltips = [], submitted = false;\n\n    var getUrlParam = function(name) {\n        if (name.toLowerCase() !== 'email') {\n            var params = new URLSearchParams(window.location.search);\n            return params.get(name) || false;\n        }\n        \/\/ email is a special case because a plus is valid in the email address\n        var qString = window.location.search;\n        if (!qString) {\n            return false;\n        }\n        var parameters = qString.substr(1).split('&');\n        for (var i = 0; i < parameters.length; i++) {\n            var parameter = parameters[i].split('=');\n            if (parameter[0].toLowerCase() === 'email') {\n                return parameter[1] === undefined ? true : decodeURIComponent(parameter[1]);\n            }\n        }\n        return false;\n    };\n\n    var acctDateFormat = \"%d\/%m\/%Y\";\n    var getNormalizedDate = function(date, acctFormat) {\n        var decodedDate = decodeURIComponent(date);\n        if (acctFormat && acctFormat.match(\/(%d|%e).*%m\/gi) !== null) {\n            return decodedDate.replace(\/(\\d{2}).*(\\d{2}).*(\\d{4})\/g, '$3-$2-$1');\n        } else if (Date.parse(decodedDate)) {\n            var dateObj = new Date(decodedDate);\n            var year = dateObj.getFullYear();\n            var month = dateObj.getMonth() + 1;\n            var day = dateObj.getDate();\n            return `${year}-${month < 10 ? `0${month}` : month}-${day < 10 ? `0${day}` : day}`;\n        }\n        return false;\n    };\n\n    var getNormalizedTime = function(time) {\n        var hour, minutes;\n        var decodedTime = decodeURIComponent(time);\n        var timeParts = Array.from(decodedTime.matchAll(\/(\\d{1,2}):(\\d{1,2})\\W*([AaPp][Mm])?\/gm))[0];\n        if (timeParts[3]) { \/\/ 12 hour format\n            var isPM = timeParts[3].toLowerCase() === 'pm';\n            if (isPM) {\n                hour = parseInt(timeParts[1]) === 12 ? '12' : `${parseInt(timeParts[1]) + 12}`;\n            } else {\n                hour = parseInt(timeParts[1]) === 12 ? '0' : timeParts[1];\n            }\n        } else { \/\/ 24 hour format\n            hour = timeParts[1];\n        }\n        var normalizedHour = parseInt(hour) < 10 ? `0${parseInt(hour)}` : hour;\n        var minutes = timeParts[2];\n        return `${normalizedHour}:${minutes}`;\n    };\n\n    for (var i = 0; i < allInputs.length; i++) {\n        var regexStr = \"field\\\\[(\\\\d+)\\\\]\";\n        var results = new RegExp(regexStr).exec(allInputs[i].name);\n        if (results != undefined) {\n            allInputs[i].dataset.name = allInputs[i].name.match(\/\\[time\\]$\/)\n                ? `${window.cfields[results[1]]}_time`\n                : window.cfields[results[1]];\n        } else {\n            allInputs[i].dataset.name = allInputs[i].name;\n        }\n        var fieldVal = getUrlParam(allInputs[i].dataset.name);\n\n        if (fieldVal) {\n            if (allInputs[i].dataset.autofill === \"false\") {\n                continue;\n            }\n            if (allInputs[i].type == \"radio\" || allInputs[i].type == \"checkbox\") {\n                if (allInputs[i].value == fieldVal) {\n                    allInputs[i].checked = true;\n                }\n            } else if (allInputs[i].type == \"date\") {\n                allInputs[i].value = getNormalizedDate(fieldVal, acctDateFormat);\n            } else if (allInputs[i].type == \"time\") {\n                allInputs[i].value = getNormalizedTime(fieldVal);\n            } else {\n                allInputs[i].value = fieldVal;\n            }\n        }\n    }\n\n    var remove_tooltips = function() {\n        for (var i = 0; i < tooltips.length; i++) {\n            tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n        }\n        tooltips = [];\n    };\n    var remove_tooltip = function(elem) {\n        for (var i = 0; i < tooltips.length; i++) {\n            if (tooltips[i].elem === elem) {\n                tooltips[i].tip.parentNode.removeChild(tooltips[i].tip);\n                tooltips.splice(i, 1);\n                return;\n            }\n        }\n    };\n    var create_tooltip = function(elem, text) {\n        var tooltip = document.createElement('div'),\n            arrow = document.createElement('div'),\n            inner = document.createElement('div'), new_tooltip = {};\n        if (elem.type != 'radio' && (elem.type != 'checkbox' || elem.name === 'sms_consent')) {\n            tooltip.className = '_error';\n            arrow.className = '_error-arrow';\n            inner.className = '_error-inner';\n            inner.innerHTML = text;\n            tooltip.appendChild(arrow);\n            tooltip.appendChild(inner);\n            elem.parentNode.appendChild(tooltip);\n        } else {\n            tooltip.className = '_error-inner _no_arrow';\n            tooltip.innerHTML = text;\n            elem.parentNode.insertBefore(tooltip, elem);\n            new_tooltip.no_arrow = true;\n        }\n        new_tooltip.tip = tooltip;\n        new_tooltip.elem = elem;\n        tooltips.push(new_tooltip);\n        return new_tooltip;\n    };\n    var resize_tooltip = function(tooltip) {\n        var rect = tooltip.elem.getBoundingClientRect();\n        var doc = document.documentElement,\n            scrollPosition = rect.top - ((window.pageYOffset || doc.scrollTop)  - (doc.clientTop || 0));\n        if (scrollPosition < 40) {\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _below';\n        } else {\n            tooltip.tip.className = tooltip.tip.className.replace(\/ ?(_above|_below) ?\/g, '') + ' _above';\n        }\n    };\n    var resize_tooltips = function() {\n        if (_removed) return;\n        for (var i = 0; i < tooltips.length; i++) {\n            if (!tooltips[i].no_arrow) resize_tooltip(tooltips[i]);\n        }\n    };\n    var validate_field = function(elem, remove) {\n        var tooltip = null, value = elem.value, no_error = true;\n        remove ? remove_tooltip(elem) : false;\n        if (elem.type != 'checkbox') elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\n        if (elem.getAttribute('required') !== null) {\n            if (elem.type == 'radio' || (elem.type == 'checkbox' && \/any\/.test(elem.className))) {\n                var elems = form_to_submit.elements[elem.name];\n                if (!(elems instanceof NodeList || elems instanceof HTMLCollection) || elems.length <= 1) {\n                    no_error = elem.checked;\n                }\n                else {\n                    no_error = false;\n                    for (var i = 0; i < elems.length; i++) {\n                        if (elems[i].checked) no_error = true;\n                    }\n                }\n                if (!no_error) {\n                    tooltip = create_tooltip(elem, \"Seleccione una opci\u00f3n.\");\n                }\n            } else if (elem.type =='checkbox') {\n                var elems = form_to_submit.elements[elem.name], found = false, err = [];\n                no_error = true;\n                for (var i = 0; i < elems.length; i++) {\n                    if (elems[i].getAttribute('required') === null) continue;\n                    if (!found && elems[i] !== elem) return true;\n                    found = true;\n                    elems[i].className = elems[i].className.replace(\/ ?_has_error ?\/g, '');\n                    if (!elems[i].checked) {\n                        no_error = false;\n                        elems[i].className = elems[i].className + ' _has_error';\n                        err.push(\"Es necesario verificar %s\".replace(\"%s\", elems[i].value));\n                    }\n                }\n                if (!no_error) {\n                    tooltip = create_tooltip(elem, err.join('<br\/>'));\n                }\n            } else if (elem.tagName == 'SELECT') {\n                var selected = true;\n                if (elem.multiple) {\n                    selected = false;\n                    for (var i = 0; i < elem.options.length; i++) {\n                        if (elem.options[i].selected) {\n                            selected = true;\n                            break;\n                        }\n                    }\n                } else {\n                    for (var i = 0; i < elem.options.length; i++) {\n                        if (elem.options[i].selected\n                            && (!elem.options[i].value\n                            || (elem.options[i].value.match(\/\\n\/g)))\n                        ) {\n                            selected = false;\n                        }\n                    }\n                }\n                if (!selected) {\n                    elem.className = elem.className + ' _has_error';\n                    no_error = false;\n                    tooltip = create_tooltip(elem, \"Seleccione una opci\u00f3n.\");\n                }\n            } else if (value === undefined || value === null || value === '') {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Este campo es obligatorio.\");\n            }\n        }\n        if (no_error && elem.name == 'email') {\n            if (!value.match(\/^[\\+_a-z0-9-'&=]+(\\.[\\+_a-z0-9-']+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*(\\.[a-z]{2,})$\/i)) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Introduzca una direcci\u00f3n de correo electr\u00f3nico v\u00e1lida.\");\n            }\n        }\n        if (no_error && (elem.id == 'phone')) {\n            if (elem.value.trim() && typeof iti != 'undefined' && !iti.isValidNumber()) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Ingresa un n\u00famero de tel\u00e9fono v\u00e1lido.\");\n            }\n        }\n        if (no_error && \/date_field\/.test(elem.className)) {\n            if (!value.match(\/^\\d\\d\\d\\d-\\d\\d-\\d\\d$\/)) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Introduzca una fecha v\u00e1lida.\");\n            }\n        }\n\n        if (no_error && elem.name === 'sms_consent') {\n            const elemShouldBeChecked = (!!elem.attributes.required && !elem.checked);\n            if (elemShouldBeChecked) {\n                elem.className = elem.className + ' _has_error';\n                no_error = false;\n                tooltip = create_tooltip(elem, \"Marca esta casilla para continuar\");\n            } else {\n                elem.className = elem.className.replace(\/ ?_has_error ?\/g, '');\n            }\n        }\n        tooltip ? resize_tooltip(tooltip) : false;\n        return no_error;\n    };\n    var needs_validate = function(el) {\n        if(el.getAttribute('required') !== null){\n            return true;\n        }\n        if((el.name === 'email' || el.id === 'phone') && el.value !== \"\"){\n            return true;\n        }\n\n        return false;\n    };\n    var validate_form = function(e) {\n        var err = form_to_submit.querySelector('._form_error'), no_error = true;\n        if (!submitted) {\n            submitted = true;\n            for (var i = 0, len = allInputs.length; i < len; i++) {\n                var input = allInputs[i];\n                if (needs_validate(input)) {\n                    if (input.type == 'text' || input.type == 'number' || input.type == 'time' || input.type == 'tel') {\n                        addEvent(input, 'blur', function() {\n                            this.value = this.value.trim();\n                            validate_field(this, true);\n                        });\n                        addEvent(input, 'input', function() {\n                            validate_field(this, true);\n                        });\n                    } else if (input.type == 'radio' || input.type == 'checkbox') {\n                        (function(el) {\n                            function getElementsArray(name){\n                                const value =  form_to_submit.elements[name];\n                                if (Array.isArray(value)){\n                                    return value;\n                                }\n                                return [value];\n                            }\n                            var radios = getElementsArray(el.name);\n                            for (var i = 0; i < radios.length; i++) {\n                                addEvent(radios[i], 'change', function() {\n                                    validate_field(el, true);\n                                });\n                            }\n                        })(input);\n                    } else if (input.tagName == 'SELECT') {\n                        addEvent(input, 'change', function() {\n                            validate_field(this, true);\n                        });\n                    } else if (input.type == 'textarea'){\n                        addEvent(input, 'input', function() {\n                            validate_field(this, true);\n                        });\n                    }\n                }\n            }\n        }\n        remove_tooltips();\n        for (var i = 0, len = allInputs.length; i < len; i++) {\n            var elem = allInputs[i];\n            if (needs_validate(elem)) {\n                if (elem.tagName.toLowerCase() !== \"select\") {\n                    elem.value = elem.value.trim();\n                }\n                validate_field(elem) ? true : no_error = false;\n            }\n        }\n        if (!no_error && e) {\n            e.preventDefault();\n        }\n        resize_tooltips();\n        return no_error;\n    };\n    addEvent(window, 'resize', resize_tooltips);\n    addEvent(window, 'scroll', resize_tooltips);\n\n    window['recaptcha_callback'] = function() {\n  \/\/ Get all recaptchas in the DOM (there may be more than one form on the page).\n  var recaptchas = document.getElementsByClassName(\"g-recaptcha\");\n  for (var i in recaptchas) {\n    \/\/ Set the recaptcha element ID, so the recaptcha can be applied to each element.\n    var recaptcha_id = \"recaptcha_\" + i;\n    recaptchas[i].id = recaptcha_id;\n    var el = document.getElementById(recaptcha_id);\n    if (el != null) {\n      var sitekey = el.getAttribute(\"data-sitekey\");\n      var stoken = el.getAttribute(\"data-stoken\");\n      grecaptcha.render(recaptcha_id, {\"sitekey\":sitekey,\"stoken\":stoken});\n    }\n  }\n};    _load_script(\"https:\/\/www.google.com\/recaptcha\/api.js?onload=recaptcha_callback&render=explicit\");\n    var _form_serialize = function(form){if(!form||form.nodeName!==\"FORM\"){return }var i,j,q=[];for(i=0;i<form.elements.length;i++){if(form.elements[i].name===\"\"){continue}switch(form.elements[i].nodeName){case\"INPUT\":switch(form.elements[i].type){case\"tel\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].previousSibling.querySelector('div.iti__selected-dial-code').innerText)+encodeURIComponent(\" \")+encodeURIComponent(form.elements[i].value));break;case\"text\":case\"number\":case\"date\":case\"time\":case\"hidden\":case\"password\":case\"button\":case\"reset\":case\"submit\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"checkbox\":case\"radio\":if(form.elements[i].checked){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value))}break;case\"file\":break}break;case\"TEXTAREA\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"SELECT\":switch(form.elements[i].type){case\"select-one\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break;case\"select-multiple\":for(j=0;j<form.elements[i].options.length;j++){if(form.elements[i].options[j].selected){q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].options[j].value))}}break}break;case\"BUTTON\":switch(form.elements[i].type){case\"reset\":case\"submit\":case\"button\":q.push(form.elements[i].name+\"=\"+encodeURIComponent(form.elements[i].value));break}break}}return q.join(\"&\")};\n\n    const formSupportsPost = false;\n    var form_submit = function(e) {\n\n        e.preventDefault();\n        if (validate_form()) {\n            if(form_to_submit.querySelector('input[name=\"phone\"]') && typeof iti != 'undefined') {\n                form_to_submit.querySelector('input[name=\"phone\"]').value = iti.getNumber();\n            }\n            \/\/ use this trick to get the submit button & disable it using plain javascript\n            var submitButton = e.target.querySelector('#_form_311_submit');\n            submitButton.disabled = true;\n            submitButton.classList.add('processing');\n                    var serialized = _form_serialize(document.getElementById('_form_311_')).replace(\/%0A\/g, '\\\\n');\n            var err = form_to_submit.querySelector('._form_error');\n            err ? err.parentNode.removeChild(err) : false;\n            async function submitForm() {\n                var formData = new FormData();\n                const searchParams = new URLSearchParams(serialized);\n                searchParams.forEach((value, key) => {\n                    if (key !== 'hideButton') {\n                        formData.append(key, value);\n                    }\n                });\n                let request = {\n                    headers: {\n                        \"Accept\": \"application\/json\"\n                    },\n                    body: formData,\n                    method: \"POST\"\n                };\n\n                let pageUrlParams = new URLSearchParams(window.location.search);\n                if (pageUrlParams.has('t')) {\n                    request.headers.Authorization = 'Bearer ' + pageUrlParams.get('t');\n                }\n                const response = await fetch('https:\/\/deandelafuenteromero.activehosted.com\/proc.php?jsonp=true', request);\n\n                return response.json();\n            }\n            if (formSupportsPost) {\n                submitForm().then((data) => {\n                    eval(data.js);\n                }).catch(() => {\n                    _show_error(\"311\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Vuelve a intentarlo.\");\n                });\n            } else {\n                _load_script('https:\/\/deandelafuenteromero.activehosted.com\/proc.php?' + serialized + '&jsonp=true', null, true);\n            }\n        }\n        return false;\n    };\n    addEvent(form_to_submit, 'submit', form_submit);\n})();\n\n<\/script><\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Topical Authority at the content level: how to optimize it to improve your SEO<\/h2>\n\n\n\n<p>Now that you know what topical authority is and that you need to work on it, let&#8217;s get to work: I&#8217;ll give you some good practices that work.<\/p>\n\n\n\n<p>You must devise a global strategy, with several aspects to consider.<\/p>\n\n\n\n<p>Surely you have heard that &#8220;<em>in SEO, content is king<\/em>.&#8221; And to achieve topical authority, this saying also applies.<\/p>\n\n\n\n<p>You will need to rely on the concept of EEAT. Let&#8217;s see what it&#8217;s about:<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">EEAT and Content Authority<\/h3>\n\n\n\n<p>SEO experts <em>talk a lot<\/em> about EEAT, one of Google&#8217;s evaluators used to measure the quality of a page. And yes, <strong>it serves to demonstrate your topical authority<\/strong>.<\/p>\n\n\n\n<p>These are the initials in English for &#8220;<strong>Experience, Expertise, Authority, and Trust<\/strong>&#8221; and it is one of the most powerful weapons to improve your topical authority.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/eeat-trust.png\" alt=\"Experience, Expertise, Authority, and Trust\" class=\"wp-image-20954\" title=\"Experience, Expertise, Authority, and Trust\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/eeat-trust.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/eeat-trust-300x155.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/eeat-trust-768x398.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<h3 class=\"wp-block-heading\">On-Page Topical Authority (internal linking)<\/h3>\n\n\n\n<p>If you thought that optimizing EEAT and achieving content authority was all that was needed, keep reading.<\/p>\n\n\n\n<p><strong>Many focus on the previous factor<\/strong>. But luckily, you&#8217;re on DinoRANK&#8217;s blog \ud83d\ude09<\/p>\n\n\n\n<p>Consider that when Google&#8217;s crawler enters a website that has worked well on its topical authority, it will find depth and specialization in the content for a specific topic.<\/p>\n\n\n\n<p>The more information the user has about a specific topic and the more times they turn to that website to find an answer, the more reliable your website will be for the user and for Google, which <strong>will see those signals<\/strong> and will consider and trust you more, making your domain more visible for similar queries related to that sector.<\/p>\n\n\n\n<p>If Google, when analyzing the internal linking of those contents, sees that you are linking one content to another indiscriminately and straying too far from the original reading content, you will only confuse it and it won&#8217;t interrelate them topically. And this is when you lose.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">How can you prevent this from happening and ensure that the crawl follows the path you want?<\/h4>\n\n\n\n<p>Well, the answer lies in following a cluster structure.<\/p>\n\n\n\n<p>A cluster in SEO is a thematic area of content, where all of them address complementary search intentions, but always within that thematic &#8216;family&#8217;.<\/p>\n\n\n\n<blockquote class=\"wp-block-quote is-layout-flow wp-block-quote-is-layout-flow\">\n<p>Clusters are composed of a parent page (root), which addresses the main search intent, and several child pages (satellites), which address other complementary questions or delve into particular aspects.<\/p>\n<\/blockquote>\n\n\n\n<p>These satellite contents <strong>help the user better understand the general theme of that cluster<\/strong>, by providing a more detailed and specific explanation of each subtopic with those satellite pages.<\/p>\n\n\n\n<p><strong>How about if we see an example that illustrates all of this?<\/strong><\/p>\n\n\n\n<p>Imagine you have a Physiotherapy clinic. Among the different topics you address in your corporate blog, you could have a root content\/guide on &#8220;back pain&#8221;.<\/p>\n\n\n\n<p>And since there are many types of back pain, each with its explanations, causes, and solutions, how about creating a satellite content for each subtopic?<\/p>\n\n\n\n<p>Sciatica, herniated disc, scoliosis, piriformis syndrome, dorsal hyperkyphosis, and so on, endless examples.<\/p>\n\n\n\n<p>In each of these satellite articles, a specific search intent is addressed, while in the root, we cover the general issue of that large body area, the back.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Internal linking within clusters<\/h4>\n\n\n\n<p>So far so good. Now it&#8217;s time to establish relationships between these &#8220;<em>root &#8211; satellites<\/em>&#8221; contents. We&#8217;ll do this through internal linking.<\/p>\n\n\n\n<p>Thus, Google will know that all of them are part of the same specialized area of the clinic, and the user will be able to obtain more detailed information on each condition by clicking on each satellite article.<\/p>\n\n\n\n<p>Internal linking within clusters is simpler than you think. It must follow these rules:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Root content<\/strong>: must always link to all satellites of its cluster.<\/li>\n\n\n\n<li><strong>Satellite content<\/strong>: must always have a link to its root.<\/li>\n<\/ul>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"alignleft size-full\"><img loading=\"lazy\" decoding=\"async\" width=\"512\" height=\"288\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Cluster-structure-for-topic-authority.png\" alt=\"Cluster structure for topic authority\" class=\"wp-image-20955\" title=\"Cluster structure for topic authority\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Cluster-structure-for-topic-authority.png 512w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Cluster-structure-for-topic-authority-300x169.png 300w\" sizes=\"(max-width: 512px) 100vw, 512px\" \/><\/figure><\/div>\n\n\n<p>From an SEO perspective, we must consider that the home or main page is level 0, everything linked from it will be level 1. And so on.<\/p>\n\n\n\n<p>And Google&#8217;s bot has a limited crawl budget. Therefore, it will crawl (and index) your contents vertically: from level zero downwards.<\/p>\n\n\n\n<p>And when the time it has been allocated runs out, the URLs that it hasn&#8217;t had time to crawl will remain unindexed, and you will have to wait for it to come back to your website and see if this time you &#8216;get luckier&#8217;.<\/p>\n\n\n\n<p>So, the key is to try to link the root of each cluster from the homepage of your domain or from the nearest superior level to it. Taking into account that each satellite content is in turn linked from its respective root, <strong>you ensure that all the contents of your website are at the highest possible SEO level<\/strong>.<\/p>\n\n\n\n<p>You would be crossing clusters and therefore would be back to square one. In other words, you would be doing what almost everyone does.<\/p>\n\n\n\n<p>With this structure, Google&#8217;s crawler will enter through your root page, and within it, it will find all the related links it should go through.<\/p>\n\n\n\n<p>This way, you ensure that the crawler <strong>follows the path you want it to follow<\/strong> and <strong>avoids getting lost<\/strong> on your website.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">And how do you know if you&#8217;re clustering well on your website?<\/h4>\n\n\n\n<p>DinoRANK has developed a unique tool to check it visually: the &#8220;<a href=\"https:\/\/dinorank.com\/en\/seccion-enlazado-interno\/\" target=\"_blank\" rel=\"noreferrer noopener\">Internal Linking Graph<\/a>&#8220;:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"488\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANKs-Internal-Linking-Graph-1024x488.png\" alt=\"DinoRANK's Internal Linking Graph\" class=\"wp-image-20957\" title=\"DinoRANK's Internal Linking Graph\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANKs-Internal-Linking-Graph-1024x488.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANKs-Internal-Linking-Graph-300x143.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANKs-Internal-Linking-Graph-768x366.png 768w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/DinoRANKs-Internal-Linking-Graph.png 1500w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>The graph shows the different clusters that this website has, presented in the form of bunches.<\/p>\n\n\n\n<p><em>Points that are very close are those belonging to the same cluster. These points should be connected to a single point, which would be the root of that cluster.<\/em><\/p>\n\n\n\n<p>On the other hand, if you see that there are points that are more isolated, it may be because <strong>you have not followed a good internal linking strategy and they are too many levels deep (clicks) from the Home<\/strong>.<\/p>\n\n\n\n<p>*The URLs you want to position should not be far from the root page or, if it&#8217;s a large website, from the root of the vertical or mini-cluster you&#8217;re targeting.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Off-Page Topical Authority<\/h3>\n\n\n\n<p>Last but not least, you&#8217;ll need to follow an adequate Off-Page SEO strategy to further improve your topical authority.<\/p>\n\n\n\n<p>The best way to improve it by looking &#8216;outside the box&#8217; is by following a link building strategy or obtaining external links.<\/p>\n\n\n\n<p>This is still a valid and weighty strategy in SEO today. And therefore, when it comes to improving our topic authority, too.<\/p>\n\n\n\n<p>My basic recommendations, whether the links you get are bought or not, are these:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>They should come from websites in your same sector or from a niche complementary to yours. This is non-negotiable. If you&#8217;re in physiotherapy, a backlink from a motorcycle website won&#8217;t do you any good.<\/li>\n\n\n\n<li>The links should come from websites of the highest authority possible. It&#8217;s not the same as being recommended by a major digital medium as it is by a blog that has just started.<\/li>\n\n\n\n<li>The exact URL of the site should have high SEO level and be easily crawlable by Google. URLs buried deep within that site won&#8217;t do.<\/li>\n\n\n\n<li>The anchor text should be semantically related to your content to which they link.<\/li>\n\n\n\n<li>Try not to always link to the same URLs of your website with the same anchor text. Look for a natural pattern.<\/li>\n\n\n\n<li>Although some anchor texts may link you with exact keywords, try not to make this always happen and have some variety.<\/li>\n\n\n\n<li>Something obvious: the page (and the entire website) linking to you should not be penalized or have any &#8216;pending issues&#8217; with Google.<\/li>\n\n\n\n<li>Another obvious thing, although important to remember, is that the URL should not be down or marked as noindex.<\/li>\n<\/ul>\n\n\n\n<p>Think of links as the &#8216;word of mouth&#8217; of the offline world. The more people (and with better reputation) recommend you and speak well of you, the better consideration you&#8217;ll have from others.<\/p>\n\n\n\n<p>And on the Internet regarding link building, it works the same way. Google will grant you greater topical authority in Off-Page matters if you follow these tips.<\/p>\n\n\n\n<h4 class=\"wp-block-heading\">Now you know the keys to improving your website&#8217;s topical authority &#8211; let&#8217;s get to work!<\/h4>\n\n\n\n<p>If you manage to understand and develop a good strategy that optimizes your topical authority, you may be able to surpass many sites with a higher domain authority than yours.<\/p>\n\n\n\n<p>In SEO, the big doesn&#8217;t always have to eat the small. As long as you&#8217;re a good professional and apply these tips, you&#8217;ll have the chance to position yourself in your niche as an expert and even a reference.<\/p>\n\n\n\n<p>It wouldn&#8217;t be the first case nor the last in which a small website outperforms a large one in search results.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>When we start a new project on the Internet, we all want to rank it at all costs and as quickly as possible. Whether it&#8217;s a blog, an e-commerce, or any other type of online business. From the beginning, we aim to write about all possible topics in our industry, addressing those search intentions and [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":21014,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[52],"tags":[],"class_list":["post-20929","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-seo-for"],"acf":[],"_links":{"self":[{"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts\/20929","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/comments?post=20929"}],"version-history":[{"count":15,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts\/20929\/revisions"}],"predecessor-version":[{"id":22693,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts\/20929\/revisions\/22693"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/media\/21014"}],"wp:attachment":[{"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/media?parent=20929"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/categories?post=20929"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/tags?post=20929"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}