{"id":20938,"date":"2024-05-21T04:43:00","date_gmt":"2024-05-21T08:43:00","guid":{"rendered":"https:\/\/dinorank.com\/en-us\/blog-seo\/?p=20938"},"modified":"2025-06-05T05:20:41","modified_gmt":"2025-06-05T09:20:41","slug":"tiered-link-building-seo","status":"publish","type":"post","link":"https:\/\/dinorank.com\/en-us\/blog-seo\/tiered-link-building-seo\/","title":{"rendered":"Tiered Link Building: Learn to Create a Backlink Pyramid that Works"},"content":{"rendered":"\n<p>Do you know what link pyramids are in SEO?<\/p>\n\n\n\n<p>If you&#8217;ve started to get into link building for your website, you might have come across this concept.<\/p>\n\n\n\n<p>First off, you should know that when we talk about <strong>link building strategies<\/strong>, such as Tiered Link Building, we&#8217;re venturing into the world of Black Hat SEO.<\/p>\n\n\n\n<p>But, even though these techniques always carry a risk, there are ways to do it that can be less obvious to the eyes of Google.<\/p>\n\n\n\n<p>In this post, we&#8217;ll look at what link pyramids are and how they can benefit your projects. I&#8217;ll also show you <strong>how I would set up a pyramid in 2024 to make it efficient<\/strong> and also reduce the chances of being penalized by Google.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Is Tiered Link Building<\/h2>\n\n\n\n<p>Tiered Link Building, or a link pyramid, is a <strong>SEO technique for creating external links (backlinks) where these are categorized into different levels<\/strong> based on their characteristics.<\/p>\n\n\n\n<p>The concept is as follows:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Each level (or tier) exclusively links to the immediately higher level and never to the rest.<\/li>\n\n\n\n<li>As you go down from one level to another, the number of links increases while their quality decreases.<\/li>\n<\/ul>\n\n\n\n<p>Thus, the links from Tier 3 point to the pages in Tier 2, Tier 2 to Tier 1, and so on up to the highest level where our main website is located.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/04\/tiered-linkbuilding-piramide-enlaces.jpg\" alt=\"SEO Link Pyramid: Overview of tier 1 2 3 backlinks\" class=\"wp-image-21527\"\/><\/figure><\/div>\n\n\n<p>The ultimate goal of this entire setup is to<strong> optimize the distribution of link juice<\/strong> through the pyramid so that the strength of each page is passed on to the higher levels, <strong>increasing the authority of the website at the top<\/strong> and, consequently, its visibility in search engines.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What Are the Advantages of Tiered Link Building?<\/h2>\n\n\n\n<p>Building a link pyramid is a strategy that, if done right, <strong>can give a good boost to your website&#8217;s ranking<\/strong>.<\/p>\n\n\n\n<p>But, as I say, it needs to be done correctly. And that requires time and dedication.<\/p>\n\n\n\n<p>So, is all the effort worth it? Wouldn&#8217;t it be better to just create backlinks to our website and forget the hassle?<\/p>\n\n\n\n<p>Everything will depend on your resources and the characteristics of your project. Therefore, to help you decide whether or not this strategy is right for you, here are the <strong>main benefits you can gain<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>Increased authority of your website and its ranking.<\/strong> Distributing link juice through the tiered pyramid transmits all the strength of the links to your main website.<\/li>\n\n\n\n<li><strong>Control over your links.<\/strong> You know exactly which pages are linking to each other and what their quality is, allowing you to make more informed decisions.<\/li>\n\n\n\n<li><strong>Money savings.<\/strong> On the lower levels, you can use lower quality links, meaning they&#8217;re cheaper or even free.<\/li>\n\n\n\n<li><strong>Greater protection against Google penalties.<\/strong> The Tier 1 links pointing to your website are of high quality, making it unlikely they will harm you. If Google decides to penalize any links from other layers (Tier 2 or Tier 3), your website will not be directly affected.<\/li>\n<\/ul>\n\n\n\n<h3 class=\"wp-block-heading\">Do tier backlinks still work in 2024?<\/h3>\n\n\n\n<p>The quick answer is YES. Even today, <strong>backlinks remain a ranking factor<\/strong> for Google, and therefore, link pyramids are still useful.<\/p>\n\n\n\n<p>However, to be more specific, it must be acknowledged that <strong>their results are not as efficient as they were in the past<\/strong> due to the evolution of search engine algorithms.<\/p>\n\n\n\n<p>Evidence of this is the Spam Update that Google rolled out in March 2024. Among its goals is to<strong> eliminate low-quality pages that use artificial backlinks<\/strong> to manipulate their authority.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/04\/tiered-linkbuilding-google-spam-update.jpg\" alt=\"Announcement of the Google Spam Update on March 5, 2024\" class=\"wp-image-21526\"\/><\/figure><\/div>\n\n\n<p>For this reason, although link pyramids are still operational currently, much more caution is required than in past years.<\/p>\n\n\n\n<p>We must move away from link farms, automated techniques, or cheap backlink packs from Fiverr and focus on <strong>designing a solid strategy where the links at each level truly make sense<\/strong> and add some value.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">What are the disadvantages of a link pyramid?<\/h2>\n\n\n\n<p>Earlier we discussed the advantages of Tiered Link Building, but obviously, there are also potential drawbacks you should be aware of. Here are the <strong>main issues with setting up a tiered linking<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li><strong>High time investment.<\/strong> This strategy requires a lot of dedication to find the right sites to place a link, properly classify them, and create content that will include the backlinks.<\/li>\n\n\n\n<li><strong>Potential Google penalties.<\/strong> Although well-executed tiered link building is supposed to protect your website, it&#8217;s quite easy to slip up and get caught by Google.<\/li>\n<\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Tier Link Structure<\/h2>\n\n\n\n<p>Are you intrigued by this tiered link building strategy and want to know how to implement it?<\/p>\n\n\n\n<p>Don&#8217;t worry, up next I&#8217;ll explain it to you in the most practical way possible, highlighting those <strong>aspects that I would focus on today to ensure that the pyramid works <\/strong>and to minimize the risk of being penalized by Google.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Main website, business or money site<\/h3>\n\n\n\n<p>The money site refers to the website of your project or business. <strong>It&#8217;s the site we want to rank<\/strong> and to which we will transmit all the linking power.<\/p>\n\n\n\n<p>But for our tier backlinks to work, we must first be concerned with <strong>optimizing the internal links of our website<\/strong>. There&#8217;s little point in designing a link building strategy if we don&#8217;t know how to distribute authority among the pages of our site.<\/p>\n\n\n\n<p>With DinoRANK, you can <strong>easily analyze the internal linking of your website and discover how PageRank is being distributed<\/strong> among your pages.<\/p>\n\n\n\n<p>For example, here are the charts that the tool shows for DinoRANK&#8217;s own domain:<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter\"><img decoding=\"async\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2024\/04\/tiered-linkbuilding-dinorank-pagerank.png\" alt=\"Screenshot of internal linking graphs and the distribution of PageRank by DinoRANK\" class=\"wp-image-21525\"\/><\/figure><\/div>\n\n\n<p>At a quick glance, we can check if the most crucial pages are getting more PageRank (larger circles) and if there&#8217;s any significant URL left unlinked.<\/p>\n\n\n\n<p>Have you looked over your website\u2019s internal linking?<\/p>\n\n\n\n<p>So, now let&#8217;s get down to business and start designing our Tiered Link Building campaign.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tier 1 Backlinks<\/h3>\n\n\n\n<p>The first level of the pyramid is the most important part of the whole strategy and should be given the utmost care. It consists of all the <strong>pages that link directly to your money site<\/strong>, and for that reason, any mistake can have drastic consequences on your ranking.<\/p>\n\n\n\n<p>Here, we will always use <strong>websites related to our niche<\/strong>, preferably with high authority and featuring original, high-quality content.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\"><img fetchpriority=\"high\" decoding=\"async\" width=\"1024\" height=\"510\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Backlinks-for-tier-1-of-a-link-pyramid.png\" alt=\"\" class=\"wp-image-21031\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Backlinks-for-tier-1-of-a-link-pyramid.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Backlinks-for-tier-1-of-a-link-pyramid-300x149.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Backlinks-for-tier-1-of-a-link-pyramid-768x383.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Some<strong> recommended sites for these types of links<\/strong> include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Guest posts on well-known blogs within our industry.<\/li>\n\n\n\n<li>High-authority news outlets that aren&#8217;t link farms.<\/li>\n\n\n\n<li>YouTube channels that cater to our audience.<\/li>\n<\/ul>\n\n\n\n<p>In general, tier 1 backlinks <strong>are the most difficult to obtain and will take up most of our time<\/strong>. Usually, we will be the ones writing the content for the link or, at the very least, reviewing the articles before they are published. This enables us to ensure they are of sufficient quality for our purposes and use an appropriate anchor text.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">Tier 2 Backlinks<\/h3>\n\n\n\n<p>The second level of the pyramid includes all those <strong>web pages that link to the URLs of Tier 1<\/strong>. In other words, they will never link directly to our money site, only to the pages on the first level.<\/p>\n\n\n\n<p>Here we <strong>can start to relax the quality<\/strong> of the sites and their content a bit. But just a bit. After all, we are linking to pages that contain backlinks which were difficult to obtain and that we don&#8217;t want to end up penalized.<\/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\/tiered-linkbuilding-tier-2-backlinks.png\" alt=\"Backlinks for tier 2 of a link pyramid\" class=\"wp-image-21033\" title=\"Backlinks for tier 2 of a link pyramid\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/tiered-linkbuilding-tier-2-backlinks.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/tiered-linkbuilding-tier-2-backlinks-300x155.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/tiered-linkbuilding-tier-2-backlinks-768x398.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Some <strong>examples of sites for this level<\/strong> include:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Blogs 2.0 on authoritative platforms like Blogger or WordPress.com.<\/li>\n\n\n\n<li>University blogs.<\/li>\n\n\n\n<li>Wikis.<\/li>\n\n\n\n<li>Websites on link-buying-and-selling sites that aren\u2019t too \u201cspammy\u201d.<\/li>\n\n\n\n<li>Press releases from authoritative sites.<\/li>\n\n\n\n<li>Forums highly relevant thematically to the link.<\/li>\n\n\n\n<li>Active profiles on social networks such as Twitter, Pinterest, or Facebook.<\/li>\n<\/ul>\n\n\n\n<p>As you can see, these links are easier to obtain and work with. Moreover, <strong>we could use AI to generate content<\/strong> and speed up the process, as long as we check the final quality of the result.<\/p>\n\n\n\n<p>Lastly, if you read other articles about link pyramids you might notice that some of the sites I mention here are also recommended for Tier 1.<\/p>\n\n\n\n<p>Keep in mind that many of these posts are a few years old and that <strong>in 2024 Google is quite more cautious about certain types of links<\/strong>. That&#8217;s why I prefer to err on the side of caution and reserve them for Tier 2, leaving the first level for those backlinks that give me greater assurance.<\/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<h3 class=\"wp-block-heading\">Tier 3 Backlinks<\/h3>\n\n\n\n<p>Now we reach the last level of our pyramid, which is also the most aggressive part of our strategy.<\/p>\n\n\n\n<p>From here we <strong>link exclusively to Tier 2 pages and prioritize quantity over quality<\/strong>. The goal is to create a large number of links that strengthen the URLs of the second level and also help with their indexing.<\/p>\n\n\n<div class=\"wp-block-image\">\n<figure class=\"aligncenter size-full\" id=\"Backlinks-for-tier-3-of-a-link-pyramid\"><img decoding=\"async\" width=\"1024\" height=\"530\" src=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Backlinks-for-tier-3-of-a-link-pyramid.png\" alt=\"Backlinks for tier 3 of a link pyramid\" class=\"wp-image-21035\" srcset=\"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Backlinks-for-tier-3-of-a-link-pyramid.png 1024w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Backlinks-for-tier-3-of-a-link-pyramid-300x155.png 300w, https:\/\/dinorank.com\/en-us\/blog-seo\/wp-content\/uploads\/2024\/05\/Backlinks-for-tier-3-of-a-link-pyramid-768x398.png 768w\" sizes=\"(max-width: 1024px) 100vw, 1024px\" \/><\/figure><\/div>\n\n\n<p>Therefore, <strong>for Tier 3, the following are commonly used<\/strong>:<\/p>\n\n\n\n<ul class=\"wp-block-list\">\n<li>Blogs 2.0 of medium-low quality.<\/li>\n\n\n\n<li>Websites on link-buying-and-selling sites with low authority.<\/li>\n\n\n\n<li>Profiles.<\/li>\n\n\n\n<li>Directories.<\/li>\n\n\n\n<li>Bookmarks.<\/li>\n\n\n\n<li>Forums.<\/li>\n\n\n\n<li>Blog comments.<\/li>\n<\/ul>\n\n\n\n<p><strong>There are other more Black Hat techniques that I do not recommend using<\/strong>, such as automated backlink generation tools, link shorteners, or pages of dubious reputation.<\/p>\n\n\n\n<p>These tactics may have worked in the past, but Google is becoming better at recognizing these types of backlinks and, in the best-case scenario, will ignore them. In the worst case, it could penalize them and ruin your entire strategy in an instant.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Conclusions on Tiered Link Building<\/h2>\n\n\n\n<p><strong>Tiered Link Building is a technique that still works today<\/strong> and, when executed properly, can give a boost to your web project.<\/p>\n\n\n\n<p>However, <strong>the risks are evident<\/strong>. You&#8217;re playing against Google&#8217;s policies, and therefore, the possibility of receiving a penalty is always there.<\/p>\n\n\n\n<p>That&#8217;s why, if you decide to employ these kinds of <strong>SEO strategies close to Black Hat<\/strong>, I advise you to proceed with extreme caution.<\/p>\n\n\n\n<p>In this article, I&#8217;ve shown you several keys to setting up a link pyramid with a good chance of success in 2024.<\/p>\n\n\n\n<p>If you&#8217;re up for giving them a shot, I recommend trying them out on a website you&#8217;re just starting, <strong>never on your main project<\/strong>. This way, you can assess their impact more calmly and decide if it&#8217;s the right technique for you.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Do you know what link pyramids are in SEO? If you&#8217;ve started to get into link building for your website, you might have come across this concept. First off, you should know that when we talk about link building strategies, such as Tiered Link Building, we&#8217;re venturing into the world of Black Hat SEO. But, [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":21027,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[52],"tags":[],"class_list":["post-20938","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\/20938","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=20938"}],"version-history":[{"count":8,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts\/20938\/revisions"}],"predecessor-version":[{"id":22694,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/posts\/20938\/revisions\/22694"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/media\/21027"}],"wp:attachment":[{"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/media?parent=20938"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/categories?post=20938"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dinorank.com\/en-us\/blog-seo\/wp-json\/wp\/v2\/tags?post=20938"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}