{"id":20519,"date":"2020-12-09T20:13:42","date_gmt":"2020-12-09T19:13:42","guid":{"rendered":"https:\/\/dinorank.com\/blog\/?p=3030"},"modified":"2026-03-18T09:37:17","modified_gmt":"2026-03-18T08:37:17","slug":"seo-en-prestashop","status":"publish","type":"post","link":"https:\/\/dinorank.com\/blog\/seo-para-prestashop\/","title":{"rendered":"SEO en Prestashop: Optimiza y mejora tu posicionamiento web en 2024"},"content":{"rendered":"<p>Prestashop es uno de los CMS m\u00e1s populares a la hora de crear un ecommerce por lo que es de sobra conocido en ese aspecto. Sin embargo, hay algo que se suele olvidar con relativa facilidad: <strong>una tienda online hecha con Prestashop tambi\u00e9n necesita SEO.<\/strong><\/p>\n<p><img fetchpriority=\"high\" decoding=\"async\" class=\"aligncenter wp-image-3107 size-large\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/SEO-en-Prestashop-Optimiza-y-mejora-tu-posicionamiento-web-1024x559.png\" alt=\"\" width=\"770\" height=\"420\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/SEO-en-Prestashop-Optimiza-y-mejora-tu-posicionamiento-web-1024x559.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/SEO-en-Prestashop-Optimiza-y-mejora-tu-posicionamiento-web-300x164.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/SEO-en-Prestashop-Optimiza-y-mejora-tu-posicionamiento-web-768x419.png 768w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/SEO-en-Prestashop-Optimiza-y-mejora-tu-posicionamiento-web.png 1100w\" sizes=\"(max-width: 770px) 100vw, 770px\" \/><\/p>\n<p>Si bien es cierto que Prestashop tiene algunos m\u00f3dulos interesantes en cuanto al posicionamiento que complementan las funciones que ya de por s\u00ed integra, tambi\u00e9n necesita algunos ajustes en otros aspectos para que su rendimiento sea efectivo al 100%. En este post te vamos a explicar c\u00f3mo gestionar el SEO en Prestashop.<\/p>\n<h2>Gu\u00eda pr\u00e1ctica para hacer SEO en Prestahop<\/h2>\n<p>Como dec\u00edamos al principio <strong>es com\u00fan ver ecommerce corriendo en Prestashop<\/strong> y por ello creemos necesario ofrecer esta gu\u00eda a todos los usuarios que quieran mejorar el posicionamiento en sus tiendas online y que est\u00e9n usando este CMS.<\/p>\n<p>Aunque es mucha gente la que piensa que el <a href=\"https:\/\/dinorank.com\/blog\/seo-para-ecommerce\/\">SEO en un ecommerce<\/a> no es tan importante como en otro tipo de p\u00e1ginas web lo cierto es que no es as\u00ed. Hay que cuidar el SEO de una tienda online con la misma dedicaci\u00f3n con la que se cuidar\u00eda el SEO de un blog.<\/p>\n<p>No solo se trata de que <strong>tenga una buena experiencia de usuario<\/strong> sino que tambi\u00e9n se debe prestar atenci\u00f3n a los detalles que satisfacen a Google. La conjunci\u00f3n de ambos factores y todo lo que abarcan es lo que ayudar\u00e1 a mejorar el posicionamiento del ecommerce y al aumento de las ventas.<\/p>\n<p>Por ello, no solo hay que conocer los preceptos b\u00e1sicos del SEO, es decir, los que se aplican a cualquier proyecto web, sino tambi\u00e9n cu\u00e1les son los detalles espec\u00edficos que hay que cuidar cuando se trata de posicionar un ecommerce.<\/p>\n<div id=\"brxe-5c527e\" class=\"brxe-block p-2 gap-15\"><div id=\"brxe-d69b57\" class=\"brxe-text-basic h2\">Multiplica las visitas a tu tienda online en 3 pasos\n<\/div><div id=\"brxe-445cc8\" class=\"brxe-text-basic\"><strong>Descarga gratis<\/strong> <strong>esta masterclass<\/strong> de SEO para eCommerce y aprende a conseguir <strong>tr\u00e1fico cualificado desde Google<\/strong>.\n<\/div><div id=\"brxe-dec6ff\" data-script-id=\"dec6ff\" class=\"brxe-code incontent-form-html\"><style>@import url(https:\/\/fonts.bunny.net\/css?family=source-sans-pro:400,700);<\/style>\n<style>\n#_form_303_{font-size:14px;line-height:1.6;font-family:arial, helvetica, sans-serif;margin:0}#_form_303_ *{outline:0}._form_hide{display:none;visibility:hidden}._form_show{display:block;visibility:visible}#_form_303_._form-top{top:0}#_form_303_._form-bottom{bottom:0}#_form_303_._form-left{left:0}#_form_303_._form-right{right:0}#_form_303_ input[type=\"text\"],#_form_303_ input[type=\"tel\"],#_form_303_ input[type=\"date\"],#_form_303_ 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_303_ textarea{resize:none}#_form_303_ ._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_303_ ._submit:disabled{cursor:not-allowed;opacity:0.4}#_form_303_ ._submit.processing{position:relative}#_form_303_ ._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_303_ ._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_303_ ._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_303_ ._close-icon:before{position:relative}#_form_303_ ._form-body{margin-bottom:30px}#_form_303_ ._form-image-left{width:150px;float:left}#_form_303_ ._form-content-right{margin-left:164px}#_form_303_ ._form-branding{color:#fff;font-size:10px;clear:both;text-align:left;margin-top:30px;font-weight:100}#_form_303_ ._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_303_ .form-sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);border:0}#_form_303_ ._form-label,#_form_303_ ._form_element ._form-label{font-weight:bold;margin-bottom:5px;display:block}#_form_303_._dark ._form-branding{color:#333}#_form_303_._dark ._form-branding ._logo{background-image:url(\"https:\/\/d226aj4ao1t61q.cloudfront.net\/jftq2c8s_aclogo_dk.png\")}#_form_303_ ._form_element{position:relative;margin-bottom:10px;font-size:0;max-width:100%}#_form_303_ ._form_element *{font-size:14px}#_form_303_ ._form_element._clear{clear:both;width:100%;float:none}#_form_303_ ._form_element._clear:after{clear:left}#_form_303_ ._form_element input[type=\"text\"],#_form_303_ ._form_element input[type=\"date\"],#_form_303_ ._form_element select,#_form_303_ ._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_303_ ._field-wrapper{position:relative}#_form_303_ ._inline-style{float:left}#_form_303_ ._inline-style input[type=\"text\"]{width:150px}#_form_303_ ._inline-style:not(._clear){margin-right:20px}#_form_303_ ._form_element img._form-image{max-width:100%}#_form_303_ ._form_element ._form-fieldset{border:0;padding:0.01em 0 0 0;margin:0;min-width:0}#_form_303_ ._clear-element{clear:left}#_form_303_ ._full_width{width:100%}#_form_303_ ._form_full_field{display:block;width:100%;margin-bottom:10px}#_form_303_ input[type=\"text\"]._has_error,#_form_303_ textarea._has_error{border:#F37C7B 1px solid}#_form_303_ input[type=\"checkbox\"]._has_error{outline:#F37C7B 1px solid}#_form_303_ ._show_be_error{float:left}#_form_303_ ._error{display:block;position:absolute;font-size:14px;z-index:10000001}#_form_303_ ._error._above{padding-bottom:4px;bottom:39px;right:0}#_form_303_ ._error._below{padding-top:8px;top:100%;right:0}#_form_303_ ._error._above ._error-arrow{bottom:-4px;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-top:8px solid #FFDDDD}#_form_303_ ._error._below ._error-arrow{top:0;right:15px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #FFDDDD}#_form_303_ ._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_303_ ._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_303_ ._error-inner._form_error{margin-bottom:5px;text-align:left}#_form_303_ ._button-wrapper ._error-inner._form_error{position:static}#_form_303_ ._error-inner._no_arrow{margin-bottom:10px}#_form_303_ ._error-arrow{position:absolute;width:0;height:0}#_form_303_ ._error-html{margin-bottom:10px}.pika-single{z-index:10000001 !important}#_form_303_ input[type=\"text\"].datetime_date{width:69%;display:inline}#_form_303_ select.datetime_time{width:29%;display:inline;height:32px}#_form_303_ input[type=\"date\"].datetime_date{width:69%;display:inline-flex}#_form_303_ input[type=\"time\"].datetime_time{width:29%;display:inline-flex}@media (min-width:320px) and (max-width:667px){::-webkit-scrollbar{display:none}#_form_303_{margin:0;width:100%;min-width:100%;max-width:100%;box-sizing:border-box}#_form_303_ *{-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;font-size:1em}#_form_303_ ._form-content{margin:0;width:100%}#_form_303_ ._form-inner{display:block;min-width:100%}#_form_303_ ._form-title,#_form_303_ ._inline-style{margin-top:0;margin-right:0;margin-left:0}#_form_303_ ._form-title{font-size:1.2em}#_form_303_ ._form_element{margin:0 0 20px;padding:0;width:100%}#_form_303_ ._form-element,#_form_303_ ._inline-style,#_form_303_ input[type=\"text\"],#_form_303_ label,#_form_303_ p,#_form_303_ textarea:not(.g-recaptcha-response){float:none;display:block;width:100%}#_form_303_ ._row._checkbox-radio label{display:inline}#_form_303_ ._row,#_form_303_ p,#_form_303_ label{margin-bottom:0.7em;width:100%}#_form_303_ ._row input[type=\"checkbox\"],#_form_303_ ._row input[type=\"radio\"]{margin:0 !important;vertical-align:middle !important}#_form_303_ ._row input[type=\"checkbox\"]+span label{display:inline}#_form_303_ ._row span label{margin:0 !important;width:initial !important;vertical-align:middle !important}#_form_303_ ._form-image{max-width:100%;height:auto !important}#_form_303_ input[type=\"text\"]{padding-left:10px;padding-right:10px;font-size:16px;line-height:1.3em;-webkit-appearance:none}#_form_303_ input[type=\"radio\"],#_form_303_ 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_303_ button[type=\"submit\"]{padding:20px;font-size:1.5em}#_form_303_ ._inline-style{margin:20px 0 0 !important}#_form_303_ ._inline-style input[type=\"text\"]{width:100%}}#_form_303_ .sms_consent_checkbox{position:relative;width:100%;display:flex;align-items:flex-start;padding:20px 0}#_form_303_ .sms_consent_checkbox input[type=\"checkbox\"]{float:left;margin:5px 10px 10px 0}#_form_303_ .sms_consent_checkbox .sms_consent_message{display:inline;float:left;text-align:left;margin-bottom:10px;font-size:14px;color:#7D8799}#_form_303_ .sms_consent_checkbox .sms_consent_message.sms_consent_mini{width:90%}#_form_303_ .sms_consent_checkbox ._error._above{right:auto;bottom:0}#_form_303_ .sms_consent_checkbox ._error._above ._error-arrow{right:auto;left:5px}@media (min-width:320px) and (max-width:667px){#_form_303_ .sms_consent_checkbox ._error._above{top:-30px;left:0;bottom:auto}}#_form_303_ .field-required{color:#FF0000}#_form_303_{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_303_ ._show_be_error{min-width:100%}#_form_303_._inline-form,#_form_303_._inline-form ._form-content{font-family:Source Sans Pro;font-size:14px;font-weight:400}#_form_303_._inline-form ._row span,#_form_303_._inline-form ._row label{font-family:Source Sans Pro;font-size:14px;font-weight:400;line-height:1.6em;color:#888 !important}#_form_303__inlineform input[type=\"text\"],#_form_303__inlineform input[type=\"date\"],#_form_303__inlineform input[type=\"tel\"],#_form_303__inlineform select,#_form_303__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_303_._inline-form ._html-code *:not(h1, h2, h3, h4, h5, h6),#_form_303_._inline-form .sms_consent_message,#_form_303_._inline-form ._form-thank-you{font-family:Source Sans Pro;font-size:14px;font-weight:400;color:#888 !important}#_form_303_._inline-form ._form-label,#_form_303_._inline-form ._form-emailidentifier,#_form_303_._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_303_._inline-form ._submit{margin-top:12px;font-family:Source Sans Pro;font-size:14px;font-weight:400}#_form_303_._inline-form ._html-code h1,#_form_303_._inline-form ._html-code h2,#_form_303_._inline-form ._html-code h3,#_form_303_._inline-form ._html-code h4,#_form_303_._inline-form ._html-code h5,#_form_303_._inline-form ._html-code h6,#_form_303_._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_303_._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_303_:before,#_form_303_:after{content:\" \";display:table}#_form_303_:after{clear:both}#_form_303_._inline-style{width:auto;display:inline-block}#_form_303_._inline-style input[type=\"text\"],#_form_303_._inline-style input[type=\"date\"]{padding:10px 12px}#_form_303_._inline-style button._inline-style{position:relative;top:27px}#_form_303_._inline-style p{margin:0}#_form_303_._inline-style ._button-wrapper{position:relative;margin:16px 12.5px 0 20px}#_form_303_ ._form-thank-you{position:relative;left:0;right:0;text-align:center;font-size:18px}#_form_303_ ._form-pc-confirmation ._submit{margin-top:16px}@media (min-width:320px) and (max-width:667px){#_form_303_._inline-form._inline-style ._inline-style._button-wrapper{margin-top:20px !important;margin-left:0 !important}}#_form_303_ .iti{width:100%}#_form_303_ .iti.iti--allow-dropdown.iti--separate-dial-code{width:100%}#_form_303_ .iti input{width:100%;border:#979797 1px solid;border-radius:4px}#_form_303_ .iti--separate-dial-code .iti__selected-flag{background-color:#FFFFFF;border-radius:4px}#_form_303_ .iti--separate-dial-code .iti__selected-flag:hover{background-color:rgba(0, 0, 0, 0.05)}#_form_303_ .iti__country-list{border-radius:4px;margin-top:4px;min-width:460px}#_form_303_ .iti__country-list--dropup{margin-bottom:4px}#_form_303_ .phone-error-hidden{display:none}#_form_303_ .phone-error{color:#E40E49}#_form_303_ .phone-input-error{border:1px solid #E40E49 !important}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field fieldset{margin:0;margin-bottom:1.1428571429em;border:none;padding:0}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field fieldset:last-child{margin-bottom:0}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field legend{margin-bottom:1.1428571429em}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field label{display:flex;align-items:flex-start;justify-content:flex-start;margin-bottom:0.8571428571em}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field label:last-child{margin-bottom:0}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field input{margin:0;margin-right:8px}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label{display:block;font-weight:400;margin-top:-4px}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-label-with-description{display:block;font-weight:700;margin-top:-4px}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field ._form-checkbox-option-description{margin:0;font-size:0.8571428571em}#_form_303_._inline-form ._form-content ._form-list-subscriptions-field ._form-subscriptions-unsubscribe-all-description{line-height:normal;margin-top:-2px}\n#_form_303_ ._submit{width:100%;font-family:\"Source Sans Pro\", Sans-serif !important;font-size:18px !important;font-weight:500 !important}#_form_303_ ._submit:hover{background-color:#04937E !important}#_form_303_ input#email{padding:3px 12px;background-color:#ffffff;border-radius:2px}#_form_303_._form{margin-top:-5px}#_form_303_ ._error._below{position:relative !important}#_form_303_ ._error._above{position:absolute !important}@media (min-width:320px) and (max-width:667px){#_form_303_ ._form_element{margin:0 0 0px}}<\/style>\n<form method=\"POST\" action=\"https:\/\/deandelafuenteromero.activehosted.com\/proc.php\" id=\"_form_303_\" class=\"_form _form_303 _inline-form  _dark\" novalidate data-styles-version=\"5\">\n  <input type=\"hidden\" name=\"u\" value=\"303\" \/>\n  <input type=\"hidden\" name=\"f\" value=\"303\" \/>\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=\"513de613934ca8ef70dd17b0c29f683d\" \/>\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=\"Tu email...\" required\/>\n      <\/div>\n    <\/div>\n    <div class=\"_form_element _x87696446 _full_width \" >\n      <fieldset class=\"_form-fieldset\">\n        <div class=\"_row\">\n          <legend for=\"field[15][]\" class=\"_form-label\">\n          <\/legend>\n        <\/div>\n        <input data-autofill=\"false\" type=\"hidden\" id=\"field[15][]\" name=\"field[15][]\" value=\"~|\">\n        <div class=\"_row _checkbox-radio\">\n          <input id=\"field_15He le\u00eddo y acepto la pol\u00edtica de privacidad\" type=\"checkbox\" name=\"field[15][]\"\n          value=\"He le\u00eddo y acepto la pol\u00edtica de privacidad\"                                                                                 required                                >\n          <span>\n            <label for=\"field_15He le\u00eddo y acepto la pol\u00edtica de privacidad\">\n              He le\u00eddo y acepto la pol\u00edtica de privacidad<span class=\"field-required\">\n              *\n            <\/span>\n          <\/label>\n        <\/span>\n      <\/div>\n    <\/fieldset>\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_303_submit\" class=\"_submit\" type=\"submit\">\n      Ap\u00fantate aqu\u00ed\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 = {\"15\":\"poltica_privacidad\",\"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_303_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_303_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(\"303\", \"Lo sentimos, ocurri\u00f3 un error con el env\u00edo. Acorta tus respuestas y vuelve a intentarlo.\");\n            } else {\n                _show_error(\"303\", \"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_303_');\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    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_303_submit');\n            submitButton.disabled = true;\n            submitButton.classList.add('processing');\n                    var serialized = _form_serialize(document.getElementById('_form_303_')).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(\"303\", \"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><style>\/* Texto junto al checkbox: blanco y en l\u00ednea *\/\n._form_303 ._checkbox-radio label {\n  display: inline !important;\n  margin-left: 4px !important;\n}\n\n\/* Color blanco del texto \"Verifica que eres un humano\" *\/\n._form_303 label[for=\"ls\"],\n._form_303 ._form_element label._form-label {\n  color: #ffffff !important;\n  display: inline-block;\n  font-weight: 400 !important;\n  margin-left: 8px;\n}\n\n\/* Placeholder del campo de email *\/\n#_form_303_ #email::placeholder {\n  color: #002132 !important;\n}\n\n\/* Altura del campo de email reducida *\/\n#_form_303_ #email {\n  padding: 8px 12px !important;\n  height: 40px !important;\n  font-size: 14px !important;\n  line-height: 1.2 !important;\n  margin-bottom: 16px !important;\n}\n<\/style><\/div><\/div>\n<h2>Optimiza y mejora el posicionamiento con Prestashop<\/h2>\n<p><strong>Mejorar el SEO en Prestashop es vital para lograr un buen posicionamiento web en Google\u00a0<\/strong>y para ello no sirve tan solo atenerse a las directrices b\u00e1sicas sino que hay que tener en cuenta las peculiaridades del SEO en un ecommerce y, en concreto, en un CMS como Prestashop.<\/p>\n<h3>Elige un theme amigable con el SEO<\/h3>\n<p>Debes ser especialmente cuidadoso a la hora de escoger el theme o plantilla de tu Prestashop ya que no todos est\u00e1n bien optimizados de cara al posicionamiento. De hecho, hay themes que ni siquiera permiten una adecuada gesti\u00f3n de los encabezados o no tienen la opci\u00f3n de a\u00f1adir contenido a las p\u00e1ginas de categor\u00edas.<\/p>\n<p>Esto no quiere decir que no puedas usar la plantilla que quieras, solo que algunas de ellas te exigir\u00e1n programar determinadas caracter\u00edsticas, modificar algo de c\u00f3digo o instalar m\u00f3dulos adicionales para seg\u00fan qu\u00e9 funciones.<\/p>\n<p>Por supuesto, la mejor opci\u00f3n siempre que se encuentre al alcance, es pedir a un programador que dise\u00f1e un theme seg\u00fan tus gustos y necesidades.<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-3044 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/themes-prestashop.png\" alt=\"themes-prestashop\" width=\"771\" height=\"838\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/themes-prestashop.png 771w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/themes-prestashop-276x300.png 276w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/themes-prestashop-768x835.png 768w\" sizes=\"(max-width: 771px) 100vw, 771px\" \/><\/p>\n<h3>Cuida el title y la metadescription<\/h3>\n<p>Lo primero que debes cuidar es el title y la metadescription ya que son los dos detalles que los usuarios van a ver en las SERPs cuando tu URL aparezca en el listado. Por ello, deben ser<strong> descriptivos y atractivos y adem\u00e1s, incluir la palabra clave<\/strong> por la que quieres posicionar esa URL en concreto. De estos dos factores dependen en buena parte que los usuarios accedan a tu p\u00e1gina desde los resultados de b\u00fasqueda de Google.<\/p>\n<p>Para ello, puedes entrar en la pesta\u00f1a SEO dentro de la edici\u00f3n de la entrada de cada producto. Si quieres modificar estos valores tambi\u00e9n en las p\u00e1ginas tienes que seguir la ruta <em>Configurar &gt; Par\u00e1metros de la tienda &gt; Tr\u00e1fico y SEO,<\/em> donde podr\u00e1s poner t\u00edtulos y metadescripciones por defecto. En este mismo apartado podr\u00e1s modificar tambi\u00e9n las URL, aunque Prestashop mantendr\u00e1 las ID de producto.<\/p>\n<p><strong>\u00bfQu\u00e9 son las ID de producto?<\/strong> Por defecto Prestashop crea URL de este tipo: <em>tutiendaonline.com\/pantalones\/pantalones-verdes-54<\/em>. Este \u00faltimo n\u00famero es la ID y se puede colocar al principio o al final, aunque lo m\u00e1s recomendable es eliminarlo (m\u00e1s abajo te explicamos c\u00f3mo).<\/p>\n<p><img decoding=\"async\" class=\"aligncenter wp-image-3045 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/url-prestashop.png\" alt=\"url-prestashop\" width=\"998\" height=\"223\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/url-prestashop.png 998w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/url-prestashop-300x67.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/url-prestashop-768x172.png 768w\" sizes=\"(max-width: 998px) 100vw, 998px\" \/><\/p>\n<p>Algunos webmaster optan simplemente por mover la ID a la parte final de la URL ya que pierde cualquier tipo de relevancia que pudiera tener y no se preocupan demasiado por eliminarla. \u00a1Ojo! <strong>Debes realizar esta configuraci\u00f3n antes de comenzar a crear las URL de producto de tu ecommerce<\/strong>; de lo contrario, tendr\u00e1s que hacer redirecciones.<\/p>\n<p>Las opciones que ofrece Prestashop para la gesti\u00f3n de URL son las siguientes:<\/p>\n<ul>\n<li><strong>URL amigable<\/strong>. Esta opci\u00f3n debe estar activada para que se habilite la posibilidad de configuraci\u00f3n.<\/li>\n<li><strong>URL acentuada<\/strong>. Debe estar siempre desactivada ya que no es necesario colocar tildes en las URL en tanto que son indiferentes para los buscadores.<\/li>\n<li><strong>Redirigir a URL can\u00f3nica<\/strong>. Si vas a tener varias URL con un producto exactamente igual, tendr\u00e1s que marcar la opci\u00f3n 301 para que Google sepa que solo debe indexar una de ellas.<\/li>\n<\/ul>\n<p>Hay otras opciones relacionadas con Apache pero no te recomendamos tocarlas a menos que tengas ciertos conocimientos de programaci\u00f3n o que la reescritura de las URL te est\u00e9 dando problemas.<\/p>\n<p>Para<strong> optimizar Prestashop y hacer las URLs amigables\u00a0<\/strong>debes tener en cuenta siempre la conjunci\u00f3n entre el SEO y la naturalidad para poder responder de la forma adecuada tanto a Google como a tus potenciales clientes. Si eres demasiado t\u00e9cnico los usuarios lo percibir\u00e1n y no estar\u00e1n tan proclives a comprar como si les atraes de una forma m\u00e1s cercana y natural.<\/p>\n<blockquote><p>Una URL amigable es aquella que no incluye par\u00e1metros extra\u00f1os, contiene la keyword que hay que posicionar y evita las <em>stop words<\/em><\/p><\/blockquote>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3046\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/producto-prestashop.png\" alt=\"producto-prestashop\" width=\"600\" height=\"298\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/producto-prestashop.png 600w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/producto-prestashop-300x149.png 300w\" sizes=\"(max-width: 600px) 100vw, 600px\" \/><\/p>\n<h3>Escribe las descripciones de los productos<\/h3>\n<p>La descripci\u00f3n de los productos es uno de los puntos m\u00e1s delicados en el SEO de un ecommerce y, por supuesto, en Prestashop no es diferente. Si no se le dedica un poco de tiempo a la creaci\u00f3n de estas descripciones <strong>puede surgir f\u00e1cilmente el problema del contenido duplicado<\/strong>.<\/p>\n<p>Algunos webmasters deciden copiar literalmente las descripciones de los proveedores sin darse cuenta de que est\u00e1n duplicando contenido y que van a ser ellos los penalizados por Google. Lo mejor es crear contenido original.<\/p>\n<p>Adem\u00e1s, tambi\u00e9n puede aparecer contenido duplicado cuando se hace la descripci\u00f3n de dos o m\u00e1s art\u00edculos muy semejantes, por ejemplo, dos blusas pr\u00e1cticamente iguales excepto en el color.<\/p>\n<p>En este caso tienes dos opciones: usar la etiqueta &#8220;<em>rel=canonical<\/em>&#8221; en la URL principal para que Google sepa que es la original o introducir un selector de variantes en el producto para evitar crear m\u00e1s URL, es decir, que en una ficha se pueda elegir color, talla, etc.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3047\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/prestashop-productos.png\" alt=\"prestashop-productos\" width=\"1000\" height=\"574\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/prestashop-productos.png 1000w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/prestashop-productos-300x172.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/prestashop-productos-768x441.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<h3>\u00bfQu\u00e9 hacer con los productos descatalogados?<\/h3>\n<p>Otro problema que suele haber con los productos del cat\u00e1logo de una tienda online es que, cuando ya no hay stock, no se puede -o no se deber\u00eda, al menos- eliminar esa URL sin m\u00e1s que ya estar\u00edamos creando un error 404 que perjudicar\u00eda el posicionamiento.<\/p>\n<p>Por suerte, la versi\u00f3n 1.7 de Prestashop incluye una opci\u00f3n en la que puedes asignar distintas p\u00e1ginas de redirecci\u00f3n a los art\u00edculos que son descatalogados:<\/p>\n<ul>\n<li><strong>Error 404.<\/strong> Como dec\u00edamos no es la opci\u00f3n m\u00e1s conveniente pero si por alg\u00fan motivo la prefieres puedes configurarla como p\u00e1gina de redirecci\u00f3n.<\/li>\n<li><strong>Redirecci\u00f3n 301<\/strong>. La URL del producto descatalogado puede redirigir al comprador a un producto de similares caracter\u00edsticas, a la categor\u00eda o a una selecci\u00f3n de art\u00edculos.<\/li>\n<li><strong>Redirecci\u00f3n 302<\/strong>. Si aspiras a volver a disponer de ese producto en un plazo corto de tiempo puedes usar esta redirecci\u00f3n temporal.<\/li>\n<\/ul>\n<p>Si realmente quieres eliminar esa URL puedes hacerlo pero antes de nada tienes que desindexarla usando la etiqueta &#8220;noindex&#8221;. Una vez que compruebas en Google Search Console que ya est\u00e1 desindexada y que, por tanto, los robots de Google no la van a rastrear, puedes borrarla sin consecuencias.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3048\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/categorias-prestashop.png\" alt=\"categorias-prestashop\" width=\"998\" height=\"345\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/categorias-prestashop.png 998w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/categorias-prestashop-300x104.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/categorias-prestashop-768x265.png 768w\" sizes=\"(max-width: 998px) 100vw, 998px\" \/><\/p>\n<h3>Posicionar las categor\u00edas de tu ecommerce<\/h3>\n<p>Las categor\u00edas son las grandes olvidadas en el SEO de un ecommerce ya que por lo general nos solemos centrar m\u00e1s en los productos. Sin embargo, <strong>unas categor\u00edas bien estructuradas deben posicionar igual o mejor que los art\u00edculos<\/strong> a la venta ya que representan el escaparate de aquello que est\u00e1n buscando tus potenciales clientes.<\/p>\n<p>De hecho, las categor\u00edas deben indexarse y posicionar por su propia URL y tener <strong>una jerarqu\u00eda l\u00f3gica que ayude tanto a Google como al usuario a comprender qu\u00e9 es lo que vendes en tu ecommerce de Prestashop<\/strong>. De cada categor\u00eda saldr\u00e1n las URL de los productos que se incluyen en ella creando una estructura en forma de pir\u00e1mide.<\/p>\n<p>Por todo esto, tambi\u00e9n tienes que cuidar los titles y metadescriptions de las categor\u00edas ya que aparecer\u00e1n en los resultados de b\u00fasqueda de Google, como te hemos comentado un poco m\u00e1s arriba. Para poder hacerlo tienes que seguir este camino: <em>Ventas &gt; Cat\u00e1logo &gt; Categor\u00edas.<\/em><\/p>\n<p>Por \u00faltimo, <strong>coloca un texto descriptivo en cada una de las categor\u00edas que te ayude a posicionarlas<\/strong>. Explica qu\u00e9 es lo que hay en esa categor\u00eda y aprovecha para colocar la palabra clave por la que quieres rankear en las SERPs.<\/p>\n<p>Para no despistar a los clientes te recomendamos una pr\u00e1ctica bastante usada en los ecommerce: pon un texto breve pero descriptivo a modo de introducci\u00f3n y a continuaci\u00f3n los productos. Debajo de estos puedes colocar un texto m\u00e1s amplio que te servir\u00e1 para el posicionamiento pero no molestar\u00e1 a los usuarios que quieran buscar un art\u00edculo.<\/p>\n<p>Sin embargo, no son demasiados los themes de Prestashop que ofrecen estos bloques de contenido para a\u00f1adir texto en las p\u00e1ginas de categor\u00edas as\u00ed que tendr\u00e1s que instalar el m\u00f3dulo ContentBox o recurrir a un programador que pueda crearlo a tu gusto.<\/p>\n<blockquote><p>No debe haber m\u00e1s de tres clicks desde una URL hasta la home<\/p><\/blockquote>\n<h3><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3049\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/cache-prestashop.png\" alt=\"cache-prestashop\" width=\"1000\" height=\"421\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/cache-prestashop.png 1000w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/cache-prestashop-300x126.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/cache-prestashop-768x323.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/h3>\n<h3>Mejora el rendimiento de tu Prestashop<\/h3>\n<p>Las im\u00e1genes son muy importantes en un ecommerce de Prestashop y eso se traduce en que habr\u00e1 una gran cantidad de ellas, m\u00e1s que en una web de otra tem\u00e1tica.<\/p>\n<p>Por ello y en vistas al SEO, debes optimizarlas para que no ralenticen la velocidad de carga de tu tienda online y a\u00f1adir la <a href=\"https:\/\/dinorank.com\/blog\/etiqueta-alt-seo\/\">etiqueta &#8220;alt&#8221;<\/a>, aprovechando para incluir la keyword. Ten en cuenta la b\u00fasqueda de im\u00e1genes de Google \ud83d\ude09<\/p>\n<p><strong>Aseg\u00farate de que tu Prestashop tiene una perfecta visualizaci\u00f3n en m\u00f3viles<\/strong> ya que m\u00e1s de la mitad de las compras online se realizan a trav\u00e9s de este dispositivo y si tu web no se ve bien, los usuarios ir\u00e1n a buscar sus art\u00edculos a otra parte.<\/p>\n<p>Esto nos lleva directamente a hablar del rendimiento, en concreto de la velocidad de carga, un factor esencial en el posicionamiento y las conversiones ya que si tu ecommerce tarda m\u00e1s de lo normal en mostrarse, el potencial cliente se marchar\u00e1.<\/p>\n<p>Para solucionarlo puedes recurrir a las propias opciones de Prestashop. Por un lado puedes <strong>activar la Smarty Cach\u00e9 y adem\u00e1s, tambi\u00e9n puedes habilitar las opciones CCC: Combinaci\u00f3n, Compresi\u00f3n y Cach\u00e9.<\/strong> Te permitir\u00e1n eliminar l\u00edneas de c\u00f3digo innecesarias y gestionar el JavaScript y el CSS para que se integren con el resto de la web.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3050\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/ccc-prestashop.png\" alt=\"ccc-prestashop\" width=\"997\" height=\"434\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/ccc-prestashop.png 997w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/ccc-prestashop-300x131.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/ccc-prestashop-768x334.png 768w\" sizes=\"(max-width: 997px) 100vw, 997px\" \/><\/p>\n<h3>Pon en valor tu ecommerce: blog y link building<\/h3>\n<p>Instalar un blog en tu Prestashop tambi\u00e9n te ayudar\u00e1 a posicionar y, adem\u00e1s, a <strong>ofrecer contenido de valor a tus usuarios<\/strong>. Escribe textos relacionados con el sector en el que te mueves para retener durante m\u00e1s tiempo a los usuarios y aumentar el tiempo de permanencia en la p\u00e1gina.<\/p>\n<p>Adem\u00e1s, puedes aprovechar estos contenidos para <strong>incorporar enlaces internos hacia aquellos productos y categor\u00edas que te interese promocionar<\/strong>. Prestashop tiene una opci\u00f3n para instalar un blog aunque puede que sea demasiado b\u00e1sico para lo que estamos acostumbrados.<\/p>\n<p>Para finalizar y una vez que tengas lista tu tienda online con Prestashop puedes empezar a pensar en tu estrategia de Linkbuilding y la b\u00fasqueda de enlaces externos que apunten hacia tu web. Recuerda que para ello debes buscar<strong> sitios de autoridad y que, a ser posible, est\u00e9n relacionados con tu sector<\/strong> para que Google los vea con la mayor naturalidad posible.<\/p>\n<p>Ten en cuenta que en cuanto a los links externos la calidad es mucho m\u00e1s primordial que la cantidad puesto que diez enlaces de mucha autoridad podr\u00e1n llevarte m\u00e1s tr\u00e1fico y conversiones que treinta links de sitios web sin apenas autoridad.<\/p>\n<p>Y eso no se aplica tan solo al proceso de comprar enlaces sino tambi\u00e9n al de conseguirlos mediante otras t\u00e9cnicas como el guestposting, por ejemplo. Adem\u00e1s, si detectas que te han enlazado desde una p\u00e1gina de dudosa calidad es preferible que les escribas y les pidas que eliminen ese link.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-18584 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2023\/10\/logo_nuevo.png\" alt=\"\" width=\"1500\" height=\"327\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2023\/10\/logo_nuevo.png 1300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2023\/10\/logo_nuevo-300x65.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2023\/10\/logo_nuevo-1024x223.png 1024w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2023\/10\/logo_nuevo-768x167.png 768w\" sizes=\"(max-width: 1500px) 100vw, 1500px\" \/><\/p>\n<h3>\u00daltimos tips para un SEO efectivo con Prestashop y Dinorank<\/h3>\n<p>DinoRANK cuenta con varias funciones que te ayudar\u00e1n a mejorar el posicionamiento en Prestashop. Como herramienta All-In-One, te ofrece la posibilidad de gestionar pr\u00e1cticamente todo el SEO de tu tienda online desde un mismo lugar.<\/p>\n<p>La funci\u00f3n <strong>Keyword Research<\/strong> de DinoRANK te permite buscar las palabras clave con las que posicionar tu Prestashop, tanto sencillas como long tail. Adem\u00e1s, ver\u00e1s la evoluci\u00f3n de esas keywords en los \u00faltimos doce meses para que compruebes cu\u00e1l ha sido su tendencia hasta ahora y si tiene alguna estacionalidad.<\/p>\n<p>Una vez que tengas en marcha tu tienda online podr\u00e1s comprobar los movimientos de tus palabras clave con la funci\u00f3n T<strong>racking de Posiciones<\/strong> para saber cu\u00e1les est\u00e1n funcionando mejor.<\/p>\n<p>Otra funci\u00f3n muy interesante de DinoRANK y que resulta fundamental a la hora de trabajar el posicionamiento en Prestashop es <strong>Enlazado Interno<\/strong>, pues gracias a su gr\u00e1fico en forma de bolitas y ramilletes podr\u00e1s ver de un solo vistazo c\u00f3mo est\u00e1s enlazando tus productos y categor\u00edas.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3052\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/dinorank-enlazado-interno-prestashop.png\" alt=\"dinorank-enlazado-interno-prestashop\" width=\"1000\" height=\"460\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/dinorank-enlazado-interno-prestashop.png 1000w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/dinorank-enlazado-interno-prestashop-300x138.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/dinorank-enlazado-interno-prestashop-768x353.png 768w\" sizes=\"(max-width: 1000px) 100vw, 1000px\" \/><\/p>\n<p>Esta funci\u00f3n se complementa con la de <strong>Pagerank Interno<\/strong> que te dir\u00e1 cu\u00e1les son las URL de m\u00e1s autoridad dentro de tu tienda online. A partir de esta informaci\u00f3n podr\u00e1s gestionar los links internos para que este pagerank se distribuya de forma coherente por el resto de URLs de tu web.<\/p>\n<p>DinoRANK tambi\u00e9n te puede ayudar a mejorar tus contenidos gracias a <strong>WDF*DF y Prominencia Sem\u00e1ntica<\/strong>, una funci\u00f3n que te dir\u00e1 qu\u00e9 palabras clave a\u00f1adir a tus textos para que posicionen bas\u00e1ndose en las keywords que ya est\u00e1 rankeando tu competencia.<\/p>\n<p>Sirve tanto para textos que a\u00fan no est\u00e1n escritos como para mejorar los que ya tienes as\u00ed que te servir\u00e1 para dar un fuerte impulso a los contenidos de tus categor\u00edas y productos as\u00ed como a las entradas del blog de tu tienda online, si es que has decidido incluir uno.<\/p>\n<p>Otro apartado muy interesante es el de <strong>Canibalizaciones<\/strong>, enfocado directamente a detectar si dos o m\u00e1s URL de tu Prestashop est\u00e1n tratando de posicionar por la misma palabra clave. Este dato es especialmente importante cuando se trata de una tienda online con muchas URLs ya que existe m\u00e1s riesgo de que se produzcan estas canibalizaciones.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-19561 size-full\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/grafica-tf-idf.png\" alt=\"grafica tf idf\" width=\"1434\" height=\"510\" \/><\/p>\n<p>En el caso de detectar alguna, DinoRANK te sugerir\u00e1 posibles soluciones para que puedas resolver el problema cuanto antes y que afecte lo m\u00ednimo al SEO de tu tienda online.<\/p>\n<p>Si seguimos explorando las posibilidades de DinoRANK llegamos a la opci\u00f3n de <strong>Tr\u00e1fico Org\u00e1nico<\/strong>. Tras sincronizar tu Prestashop con Search Console y Google Analytics podr\u00e1s ver el comportamiento de tus palabras clave: su posici\u00f3n media, el n\u00famero de impresiones y el n\u00famero de clicks.<\/p>\n<p>Por \u00faltimo, puedes hacer una <strong>Auditor\u00eda SEO<\/strong> completa de tu Prestashop en DinoRANK, un informe descargable en formato pdf donde ver\u00e1s todos los detalles relacionados con estados de URL, titles, metadescripciones, velocidad de cada URL y otros aspectos a solucionar en tu tienda online.<\/p>\n<p>Como ves, DinoRANK es la herramienta SEO m\u00e1s completa para gestionar el posicionamiento de tu ecommerce ya que pr\u00e1cticamente no necesitar\u00e1s salir de su panel de control para obtener los datos que necesitas.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-3057\" src=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/modulos-prestashop.png\" alt=\"modulos-prestashop\" width=\"955\" height=\"367\" srcset=\"https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/modulos-prestashop.png 955w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/modulos-prestashop-300x115.png 300w, https:\/\/dinorank.com\/blog\/wp-content\/uploads\/2020\/12\/modulos-prestashop-768x295.png 768w\" sizes=\"(max-width: 955px) 100vw, 955px\" \/><\/p>\n<h2>M\u00f3dulos SEO para Prestashop<\/h2>\n<p><strong>Las ventajas que ofrece el SEO en Prestashop<\/strong> pueden parecer algo limitadas pero existen algunos m\u00f3dulos adicionales que puedes instalar para ayudarte con el posicionamiento.<\/p>\n<p>Son m\u00f3dulos tanto gratuitos como de pago, cada uno con sus ventajas e inconvenientes pero todos ellos con utilidades que te pueden facilitar la gesti\u00f3n del SEO de tu ecommerce.<\/p>\n<ul>\n<li><strong>ContentBox<\/strong>. Se trata de un m\u00f3dulo que te permite incluir bloques de contenido en las p\u00e1ginas. Como te hemos indicado un poco m\u00e1s arriba, algunos themes de Prestashop no cuentan con esta opci\u00f3n as\u00ed que gracias a este m\u00f3dulo puedes solucionarlo.<\/li>\n<li><strong>TinyPNG<\/strong>. Dada la cantidad de im\u00e1genes que hay que subir a una tienda online puede ser tedioso tener que comprimirlas todas. Este m\u00f3dulo para Prestashop se encarga de hacerlo por ti.<\/li>\n<li><strong>SmartBlog<\/strong>.\u00a0 Este m\u00f3dulo te permite instalar un blog en Prestashop con m\u00e1s opciones de las que tiene el CMS por defecto. Otra opci\u00f3n es que instales un WordPress dentro de tu hosting, en una carpeta, para tener un blog mucho m\u00e1s completo.<\/li>\n<li><strong>Google Sitemaps<\/strong>. Viene por defecto en Prestashop\u00a0 (<em>Mejoras &gt; M\u00f3dulos &gt; Gestor de m\u00f3dulos &gt; Google sitemap) <\/em>por lo que no necesitar\u00e1s instalar ninguno adicional para gestionar tu sitemap.<\/li>\n<li><strong>SEO Expert<\/strong>.\u00a0 Te permite crear patrones en base a las distintas categor\u00edas de tu cat\u00e1logo para que los titles y las metadescriptions de tus productos se creen de forma autom\u00e1tica. Es especialmente \u00fatil si tienes una tienda online con muchas URL.<\/li>\n<li><strong>Pretty URLs<\/strong>. Este m\u00f3dulo elimina las ID de las URL de los productos y realiza las redirecciones necesarias para evitar errores 404, ya que la opci\u00f3n <em>Enlaces Amigables<\/em> de Prestashop mantiene las ID. Ten en cuenta que seg\u00fan algunos webmaster puede no ser demasiado recomendable prescindir de las ID.<\/li>\n<li><strong>Page Cache Ultimate<\/strong>.\u00a0 Como hemos visto Prestashop cuenta con sus propias opciones para gestionar la cach\u00e9 y el resto de WPO de tu ecommerce pero algunos webmaster recomiendan este m\u00f3dulo.<\/li>\n<li><strong>PSCleaner<\/strong>. Es m\u00f3dulo se encarga de limpiar toda la &#8220;basura&#8221; que se genera en tu Prestashop: ficheros que ya no se usan, carritos abandonados, usuarios que se dan de baja&#8230; Te ahorrar\u00e1 mucho trabajo aunque es recomendable hacer un barrido manual de vez en cuando por si acaso.<\/li>\n<li><strong>Canonical SEO<\/strong>. Muchas veces se crean contenidos duplicados ante productos que son exactamente iguales pero cambian en color, talla, etc. Este m\u00f3dulo crea URL can\u00f3nicas de forma autom\u00e1tica para evitar penalizaciones.<\/li>\n<\/ul>\n<p>La necesidad de algunos de estos m\u00f3dulos y otros para realizar algunas operaciones b\u00e1sicas relacionadas con el posicionamiento es lo que ha hecho que muchos negocios acaben eligiendo otros CMS para crear tus tiendas online.<\/p>\n<p>Sin embargo, al final cada usuario es el que debe decidir cu\u00e1l es el CMS que mejor se ajusta a las necesidades de su ecommerce. A fin de cuentas, otros CMS tambi\u00e9n requieren de addons o plugins para complementar sus funciones por lo que Prestashop no es el \u00fanico en este sentido.<\/p>\n<h2>Conclusi\u00f3n<\/h2>\n<p>Posicionar un ecommerce en Prestashop no se diferencia demasiado de posicionar cualquier tienda online aunque por sus caracter\u00edsticas hay que tener en cuenta algunos detalles que no deben ser pasados por alto.<\/p>\n<p>Uno de ellos son las opciones que ofrece el propio Prestashop para mejorar el SEO y el rendimiento y otro, la posibilidad de apoyar con m\u00f3dulos externos estas funciones.<\/p>\n<p>Y t\u00fa, \u00bfusas Prestashop en tu ecommerce? \u00bfQu\u00e9 haces para mejorar el SEO de tu tienda online?<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Prestashop es uno de los CMS m\u00e1s populares a la hora de crear un ecommerce por lo que es de sobra conocido en ese aspecto. Sin embargo, hay algo que se suele olvidar con relativa facilidad: una tienda online hecha con Prestashop tambi\u00e9n necesita SEO. Si bien es cierto que Prestashop tiene algunos m\u00f3dulos interesantes [&hellip;]<\/p>\n","protected":false},"author":3,"featured_media":3107,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"footnotes":""},"categories":[21],"tags":[],"class_list":["post-20519","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-ecommerce-seo"],"acf":[],"_links":{"self":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/20519","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/comments?post=20519"}],"version-history":[{"count":3,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/20519\/revisions"}],"predecessor-version":[{"id":32848,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/posts\/20519\/revisions\/32848"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/media\/3107"}],"wp:attachment":[{"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/media?parent=20519"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/categories?post=20519"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/dinorank.com\/blog\/wp-json\/wp\/v2\/tags?post=20519"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}