[{"data":1,"prerenderedAt":1766},["ShallowReactive",2],{"article-alternates":3,"article-\u002Fes\u002Ftech\u002Fhoja-de-ruta-migracion-comercio-sin-cabecera":13},{"i18nKey":4,"paths":5},"tech-006-2026-08",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Ftech\u002Fheadless-e-commerce-migration-roadmap-risikomaessiges-rollout","\u002Fen\u002Ftech\u002Fheadless-ecommerce-migration-roadmap-risk-management","\u002Fes\u002Ftech\u002Fhoja-de-ruta-migracion-comercio-sin-cabecera","\u002Ffr\u002Ftech\u002Fcommerce-headless-migration-roadmap","\u002Fit\u002Ftech\u002Froadmap-migrazione-commerce-headless","\u002Fru\u002Ftech\u002Fmigracion-headless-roadmap-gestion-riesgos","\u002Ftr\u002Ftech\u002Fheadless-e-ticaret-migration-roadmap-ve-risk-yonetimi",{"_path":8,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":1760,"_id":1761,"_source":1762,"_file":1763,"_stem":1764,"_extension":1765},"tech",false,"","Comercio Sin Cabecera: Hoja de Ruta de Migración y Gestión de Riesgos","Estrategia de despliegue por fases, técnicas de preservación SEO y análisis de abandono de carrito para asegurar la transición a comercio headless.","2026-08-04",[21,22,23,24,25],"headless-commerce","migration-strategy","seo-preservation","risk-management","composable-architecture",9,"Roibase",{"type":29,"children":30,"toc":1753},"root",[31,39,46,51,62,201,206,216,510,515,521,526,536,544,549,569,579,597,729,734,740,745,753,787,792,1075,1080,1090,1096,1101,1111,1535,1540,1550,1715,1720,1726,1731,1747],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","La migración a comercio headless en 2026 ya no es \"¿deberíamos hacerlo?\" sino \"¿cómo lo hacemos?\". Sin embargo, como ocurre con toda transformación arquitectónica importante, un paso en falso durante este proceso puede reducir los ingresos entre un 12-18% (dato de Forrester 2025). Los comportamientos de adición al carrito pierden sus señales ocultas, las autoridades SEO se reinician desde cero, las microoptimizaciones en el embudo de conversión se evaporan. En este artículo abordaremos la migración headless como un proyecto de ingeniería por fases y mostraremos cómo gestionar el riesgo de manera efectiva.",{"type":32,"tag":40,"props":41,"children":43},"h2",{"id":42},"despliegue-por-fases-contra-el-caos-monolítico",[44],{"type":37,"value":45},"Despliegue por Fases Contra el Caos Monolítico",{"type":32,"tag":33,"props":47,"children":48},{},[49],{"type":37,"value":50},"El error clásico en migraciones headless: el enfoque de \"gran explosión\". Trasladar todo el sitio a la nueva pila de tecnología de la noche a la mañana es sinónimo de poner los ingresos en riesgo. El despliegue por fases canaliza porciones controladas de tráfico hacia la nueva arquitectura, ofreciendo la oportunidad de aprender del comportamiento de usuarios reales.",{"type":32,"tag":33,"props":52,"children":53},{},[54,60],{"type":32,"tag":55,"props":56,"children":57},"strong",{},[58],{"type":37,"value":59},"Fases por rutas:",{"type":37,"value":61}," La primera fase puede ser páginas de categoría o páginas de detalle de producto (PDPs) — la página principal y el checkout se dejan para después. Un ejemplo de plan de 6 semanas:",{"type":32,"tag":63,"props":64,"children":65},"table",{},[66,95],{"type":32,"tag":67,"props":68,"children":69},"thead",{},[70],{"type":32,"tag":71,"props":72,"children":73},"tr",{},[74,80,85,90],{"type":32,"tag":75,"props":76,"children":77},"th",{},[78],{"type":37,"value":79},"Semana",{"type":32,"tag":75,"props":81,"children":82},{},[83],{"type":37,"value":84},"Alcance",{"type":32,"tag":75,"props":86,"children":87},{},[88],{"type":37,"value":89},"Tráfico",{"type":32,"tag":75,"props":91,"children":92},{},[93],{"type":37,"value":94},"Métrica de Riesgo",{"type":32,"tag":96,"props":97,"children":98},"tbody",{},[99,128,155,178],{"type":32,"tag":71,"props":100,"children":101},{},[102,108,118,123],{"type":32,"tag":103,"props":104,"children":105},"td",{},[106],{"type":37,"value":107},"1-2",{"type":32,"tag":103,"props":109,"children":110},{},[111],{"type":32,"tag":112,"props":113,"children":115},"code",{"className":114},[],[116],{"type":37,"value":117},"\u002Fcollections\u002F{slug}",{"type":32,"tag":103,"props":119,"children":120},{},[121],{"type":37,"value":122},"%5",{"type":32,"tag":103,"props":124,"children":125},{},[126],{"type":37,"value":127},"Tasa de ATC, tasa de salida",{"type":32,"tag":71,"props":129,"children":130},{},[131,136,145,150],{"type":32,"tag":103,"props":132,"children":133},{},[134],{"type":37,"value":135},"3-4",{"type":32,"tag":103,"props":137,"children":138},{},[139],{"type":32,"tag":112,"props":140,"children":142},{"className":141},[],[143],{"type":37,"value":144},"\u002Fproducts\u002F{slug}",{"type":32,"tag":103,"props":146,"children":147},{},[148],{"type":37,"value":149},"%10",{"type":32,"tag":103,"props":151,"children":152},{},[153],{"type":37,"value":154},"Tasa de conversión, profundidad de scroll",{"type":32,"tag":71,"props":156,"children":157},{},[158,163,168,173],{"type":32,"tag":103,"props":159,"children":160},{},[161],{"type":37,"value":162},"5",{"type":32,"tag":103,"props":164,"children":165},{},[166],{"type":37,"value":167},"Página principal",{"type":32,"tag":103,"props":169,"children":170},{},[171],{"type":37,"value":172},"%25",{"type":32,"tag":103,"props":174,"children":175},{},[176],{"type":37,"value":177},"Tasa de rebote, duración de sesión",{"type":32,"tag":71,"props":179,"children":180},{},[181,186,191,196],{"type":32,"tag":103,"props":182,"children":183},{},[184],{"type":37,"value":185},"6",{"type":32,"tag":103,"props":187,"children":188},{},[189],{"type":37,"value":190},"Despliegue completo",{"type":32,"tag":103,"props":192,"children":193},{},[194],{"type":37,"value":195},"%100",{"type":32,"tag":103,"props":197,"children":198},{},[199],{"type":37,"value":200},"Impacto en ingresos",{"type":32,"tag":33,"props":202,"children":203},{},[204],{"type":37,"value":205},"Con este enfoque, si surge un error crítico, el costo de reversión es mínimo — recuperas el tráfico del 5% en lugar del 100%.",{"type":32,"tag":33,"props":207,"children":208},{},[209,214],{"type":32,"tag":55,"props":210,"children":211},{},[212],{"type":37,"value":213},"Arquitectura de feature flags:",{"type":37,"value":215}," Ejecuta el nuevo frontend tras un feature flag usando LaunchDarkly, Statsig o Unleash. Fragmento de Node.js (Unleash):",{"type":32,"tag":217,"props":218,"children":222},"pre",{"code":219,"language":220,"meta":16,"className":221,"style":16},"const unleash = require('unleash-client');\n\nunleash.on('ready', () => {\n  const isHeadlessEnabled = unleash.isEnabled('headless-pdp', {\n    userId: user.id,\n    sessionId: req.sessionID\n  });\n\n  if (isHeadlessEnabled) {\n    res.render('pdp-headless'); \u002F\u002F Next.js, Nuxt o Remix\n  } else {\n    res.render('pdp-legacy'); \u002F\u002F Liquid, Blade, etc.\n  }\n});\n","javascript","language-javascript shiki shiki-themes github-dark",[223],{"type":32,"tag":112,"props":224,"children":225},{"__ignoreMap":16},[226,272,282,320,362,371,380,389,397,410,444,462,492,501],{"type":32,"tag":227,"props":228,"children":231},"span",{"class":229,"line":230},"line",1,[232,238,244,249,255,261,267],{"type":32,"tag":227,"props":233,"children":235},{"style":234},"--shiki-default:#F97583",[236],{"type":37,"value":237},"const",{"type":32,"tag":227,"props":239,"children":241},{"style":240},"--shiki-default:#79B8FF",[242],{"type":37,"value":243}," unleash",{"type":32,"tag":227,"props":245,"children":246},{"style":234},[247],{"type":37,"value":248}," =",{"type":32,"tag":227,"props":250,"children":252},{"style":251},"--shiki-default:#B392F0",[253],{"type":37,"value":254}," require",{"type":32,"tag":227,"props":256,"children":258},{"style":257},"--shiki-default:#E1E4E8",[259],{"type":37,"value":260},"(",{"type":32,"tag":227,"props":262,"children":264},{"style":263},"--shiki-default:#9ECBFF",[265],{"type":37,"value":266},"'unleash-client'",{"type":32,"tag":227,"props":268,"children":269},{"style":257},[270],{"type":37,"value":271},");\n",{"type":32,"tag":227,"props":273,"children":275},{"class":229,"line":274},2,[276],{"type":32,"tag":227,"props":277,"children":279},{"emptyLinePlaceholder":278},true,[280],{"type":37,"value":281},"\n",{"type":32,"tag":227,"props":283,"children":285},{"class":229,"line":284},3,[286,291,296,300,305,310,315],{"type":32,"tag":227,"props":287,"children":288},{"style":257},[289],{"type":37,"value":290},"unleash.",{"type":32,"tag":227,"props":292,"children":293},{"style":251},[294],{"type":37,"value":295},"on",{"type":32,"tag":227,"props":297,"children":298},{"style":257},[299],{"type":37,"value":260},{"type":32,"tag":227,"props":301,"children":302},{"style":263},[303],{"type":37,"value":304},"'ready'",{"type":32,"tag":227,"props":306,"children":307},{"style":257},[308],{"type":37,"value":309},", () ",{"type":32,"tag":227,"props":311,"children":312},{"style":234},[313],{"type":37,"value":314},"=>",{"type":32,"tag":227,"props":316,"children":317},{"style":257},[318],{"type":37,"value":319}," {\n",{"type":32,"tag":227,"props":321,"children":323},{"class":229,"line":322},4,[324,329,334,338,343,348,352,357],{"type":32,"tag":227,"props":325,"children":326},{"style":234},[327],{"type":37,"value":328},"  const",{"type":32,"tag":227,"props":330,"children":331},{"style":240},[332],{"type":37,"value":333}," isHeadlessEnabled",{"type":32,"tag":227,"props":335,"children":336},{"style":234},[337],{"type":37,"value":248},{"type":32,"tag":227,"props":339,"children":340},{"style":257},[341],{"type":37,"value":342}," unleash.",{"type":32,"tag":227,"props":344,"children":345},{"style":251},[346],{"type":37,"value":347},"isEnabled",{"type":32,"tag":227,"props":349,"children":350},{"style":257},[351],{"type":37,"value":260},{"type":32,"tag":227,"props":353,"children":354},{"style":263},[355],{"type":37,"value":356},"'headless-pdp'",{"type":32,"tag":227,"props":358,"children":359},{"style":257},[360],{"type":37,"value":361},", {\n",{"type":32,"tag":227,"props":363,"children":365},{"class":229,"line":364},5,[366],{"type":32,"tag":227,"props":367,"children":368},{"style":257},[369],{"type":37,"value":370},"    userId: user.id,\n",{"type":32,"tag":227,"props":372,"children":374},{"class":229,"line":373},6,[375],{"type":32,"tag":227,"props":376,"children":377},{"style":257},[378],{"type":37,"value":379},"    sessionId: req.sessionID\n",{"type":32,"tag":227,"props":381,"children":383},{"class":229,"line":382},7,[384],{"type":32,"tag":227,"props":385,"children":386},{"style":257},[387],{"type":37,"value":388},"  });\n",{"type":32,"tag":227,"props":390,"children":392},{"class":229,"line":391},8,[393],{"type":32,"tag":227,"props":394,"children":395},{"emptyLinePlaceholder":278},[396],{"type":37,"value":281},{"type":32,"tag":227,"props":398,"children":399},{"class":229,"line":26},[400,405],{"type":32,"tag":227,"props":401,"children":402},{"style":234},[403],{"type":37,"value":404},"  if",{"type":32,"tag":227,"props":406,"children":407},{"style":257},[408],{"type":37,"value":409}," (isHeadlessEnabled) {\n",{"type":32,"tag":227,"props":411,"children":413},{"class":229,"line":412},10,[414,419,424,428,433,438],{"type":32,"tag":227,"props":415,"children":416},{"style":257},[417],{"type":37,"value":418},"    res.",{"type":32,"tag":227,"props":420,"children":421},{"style":251},[422],{"type":37,"value":423},"render",{"type":32,"tag":227,"props":425,"children":426},{"style":257},[427],{"type":37,"value":260},{"type":32,"tag":227,"props":429,"children":430},{"style":263},[431],{"type":37,"value":432},"'pdp-headless'",{"type":32,"tag":227,"props":434,"children":435},{"style":257},[436],{"type":37,"value":437},"); ",{"type":32,"tag":227,"props":439,"children":441},{"style":440},"--shiki-default:#6A737D",[442],{"type":37,"value":443},"\u002F\u002F Next.js, Nuxt o Remix\n",{"type":32,"tag":227,"props":445,"children":447},{"class":229,"line":446},11,[448,453,458],{"type":32,"tag":227,"props":449,"children":450},{"style":257},[451],{"type":37,"value":452},"  } ",{"type":32,"tag":227,"props":454,"children":455},{"style":234},[456],{"type":37,"value":457},"else",{"type":32,"tag":227,"props":459,"children":460},{"style":257},[461],{"type":37,"value":319},{"type":32,"tag":227,"props":463,"children":465},{"class":229,"line":464},12,[466,470,474,478,483,487],{"type":32,"tag":227,"props":467,"children":468},{"style":257},[469],{"type":37,"value":418},{"type":32,"tag":227,"props":471,"children":472},{"style":251},[473],{"type":37,"value":423},{"type":32,"tag":227,"props":475,"children":476},{"style":257},[477],{"type":37,"value":260},{"type":32,"tag":227,"props":479,"children":480},{"style":263},[481],{"type":37,"value":482},"'pdp-legacy'",{"type":32,"tag":227,"props":484,"children":485},{"style":257},[486],{"type":37,"value":437},{"type":32,"tag":227,"props":488,"children":489},{"style":440},[490],{"type":37,"value":491},"\u002F\u002F Liquid, Blade, etc.\n",{"type":32,"tag":227,"props":493,"children":495},{"class":229,"line":494},13,[496],{"type":32,"tag":227,"props":497,"children":498},{"style":257},[499],{"type":37,"value":500},"  }\n",{"type":32,"tag":227,"props":502,"children":504},{"class":229,"line":503},14,[505],{"type":32,"tag":227,"props":506,"children":507},{"style":257},[508],{"type":37,"value":509},"});\n",{"type":32,"tag":33,"props":511,"children":512},{},[513],{"type":37,"value":514},"Este código te permite cambiar el frontend por usuario. Puedes A\u002FB testear la experiencia antigua y nueva en la misma sesión y leer el delta de conversión en tiempo real.",{"type":32,"tag":40,"props":516,"children":518},{"id":517},"preservación-de-autoridad-seo-paridad-de-urls-y-disciplina-de-redirecciones",[519],{"type":37,"value":520},"Preservación de Autoridad SEO: Paridad de URLs y Disciplina de Redirecciones",{"type":32,"tag":33,"props":522,"children":523},{},[524],{"type":37,"value":525},"El mayor costo oculto en migraciones headless es la erosión SEO. Si el nuevo stack cambia la estructura de URLs, pierdes la potencia de backlinks acumulada por Google, el presupuesto de rastreo y el historial de datos de tráfico de esa URL.",{"type":32,"tag":33,"props":527,"children":528},{},[529,534],{"type":32,"tag":55,"props":530,"children":531},{},[532],{"type":37,"value":533},"Obligación de paridad de URLs:",{"type":37,"value":535}," Los sistemas antiguo y nuevo deben mantener la misma estructura de slug. Por ejemplo, al migrar de Shopify a Hydrogen:",{"type":32,"tag":217,"props":537,"children":539},{"code":538},"Antiguo: \u002Fproducts\u002Fzapatilla-hombre-blanca\nNuevo: \u002Fproducts\u002Fzapatilla-hombre-blanca\n",[540],{"type":32,"tag":112,"props":541,"children":542},{"__ignoreMap":16},[543],{"type":37,"value":538},{"type":32,"tag":33,"props":545,"children":546},{},[547],{"type":37,"value":548},"Aunque cambie la lógica de generación de slug, el resultado debe ser idéntico. Para garantizar esto, antes de la migración:",{"type":32,"tag":550,"props":551,"children":552},"ol",{},[553,559,564],{"type":32,"tag":554,"props":555,"children":556},"li",{},[557],{"type":37,"value":558},"Extrae todas las URLs del sistema antiguo (CSV, combínalo con datos de tráfico de 30 días)",{"type":32,"tag":554,"props":560,"children":561},{},[562],{"type":37,"value":563},"Prueba las mismas URLs en el sistema nuevo con una ruta canaria",{"type":32,"tag":554,"props":565,"children":566},{},[567],{"type":37,"value":568},"Anula el diff — incluso una única diferencia significa pérdida de SEO",{"type":32,"tag":33,"props":570,"children":571},{},[572,577],{"type":32,"tag":55,"props":573,"children":574},{},[575],{"type":37,"value":576},"Tradeoff 301 vs 302:",{"type":37,"value":578}," Las redirecciones temporales (302) envían a Google la señal \"esta URL está temporalmente en otro lugar\", mientras que las permanentes (301) dicen \"esta URL ahora está aquí\". Durante el despliegue por fases tiene sentido usar 302 — pasarás a 301 en el despliegue completo. Sin embargo, si usas 302 más de 4 semanas, Google podría igualmente considerarla permanente (John Mueller, 2024).",{"type":32,"tag":33,"props":580,"children":581},{},[582,587,589,595],{"type":32,"tag":55,"props":583,"children":584},{},[585],{"type":37,"value":586},"Disciplina de etiqueta canónica:",{"type":37,"value":588}," Si tu nuevo frontend renderiza en servidor, configura la etiqueta ",{"type":32,"tag":112,"props":590,"children":592},{"className":591},[],[593],{"type":37,"value":594},"\u003Clink rel=\"canonical\">",{"type":37,"value":596}," apuntando a la URL antigua. Esto envía a Google el mensaje \"la autoridad original sigue siendo el dominio antiguo\". Ejemplo Next.js:",{"type":32,"tag":217,"props":598,"children":602},{"code":599,"language":600,"meta":16,"className":601,"style":16},"\u002F\u002F pages\u002Fproducts\u002F[slug].jsx\nexport async function generateMetadata({ params }) {\n  return {\n    alternates: {\n      canonical: `https:\u002F\u002Flegacy.site.com\u002Fproducts\u002F${params.slug}`\n    }\n  };\n}\n","jsx","language-jsx shiki shiki-themes github-dark",[603],{"type":32,"tag":112,"props":604,"children":605},{"__ignoreMap":16},[606,614,653,665,673,705,713,721],{"type":32,"tag":227,"props":607,"children":608},{"class":229,"line":230},[609],{"type":32,"tag":227,"props":610,"children":611},{"style":440},[612],{"type":37,"value":613},"\u002F\u002F pages\u002Fproducts\u002F[slug].jsx\n",{"type":32,"tag":227,"props":615,"children":616},{"class":229,"line":274},[617,622,627,632,637,642,648],{"type":32,"tag":227,"props":618,"children":619},{"style":234},[620],{"type":37,"value":621},"export",{"type":32,"tag":227,"props":623,"children":624},{"style":234},[625],{"type":37,"value":626}," async",{"type":32,"tag":227,"props":628,"children":629},{"style":234},[630],{"type":37,"value":631}," function",{"type":32,"tag":227,"props":633,"children":634},{"style":251},[635],{"type":37,"value":636}," generateMetadata",{"type":32,"tag":227,"props":638,"children":639},{"style":257},[640],{"type":37,"value":641},"({ ",{"type":32,"tag":227,"props":643,"children":645},{"style":644},"--shiki-default:#FFAB70",[646],{"type":37,"value":647},"params",{"type":32,"tag":227,"props":649,"children":650},{"style":257},[651],{"type":37,"value":652}," }) {\n",{"type":32,"tag":227,"props":654,"children":655},{"class":229,"line":284},[656,661],{"type":32,"tag":227,"props":657,"children":658},{"style":234},[659],{"type":37,"value":660},"  return",{"type":32,"tag":227,"props":662,"children":663},{"style":257},[664],{"type":37,"value":319},{"type":32,"tag":227,"props":666,"children":667},{"class":229,"line":322},[668],{"type":32,"tag":227,"props":669,"children":670},{"style":257},[671],{"type":37,"value":672},"    alternates: {\n",{"type":32,"tag":227,"props":674,"children":675},{"class":229,"line":364},[676,681,686,690,695,700],{"type":32,"tag":227,"props":677,"children":678},{"style":257},[679],{"type":37,"value":680},"      canonical: ",{"type":32,"tag":227,"props":682,"children":683},{"style":263},[684],{"type":37,"value":685},"`https:\u002F\u002Flegacy.site.com\u002Fproducts\u002F${",{"type":32,"tag":227,"props":687,"children":688},{"style":257},[689],{"type":37,"value":647},{"type":32,"tag":227,"props":691,"children":692},{"style":263},[693],{"type":37,"value":694},".",{"type":32,"tag":227,"props":696,"children":697},{"style":257},[698],{"type":37,"value":699},"slug",{"type":32,"tag":227,"props":701,"children":702},{"style":263},[703],{"type":37,"value":704},"}`\n",{"type":32,"tag":227,"props":706,"children":707},{"class":229,"line":373},[708],{"type":32,"tag":227,"props":709,"children":710},{"style":257},[711],{"type":37,"value":712},"    }\n",{"type":32,"tag":227,"props":714,"children":715},{"class":229,"line":382},[716],{"type":32,"tag":227,"props":717,"children":718},{"style":257},[719],{"type":37,"value":720},"  };\n",{"type":32,"tag":227,"props":722,"children":723},{"class":229,"line":391},[724],{"type":32,"tag":227,"props":725,"children":726},{"style":257},[727],{"type":37,"value":728},"}\n",{"type":32,"tag":33,"props":730,"children":731},{},[732],{"type":37,"value":733},"En el despliegue completo, eliminarás esta etiqueta y transferirás la autoridad al nuevo dominio.",{"type":32,"tag":40,"props":735,"children":737},{"id":736},"análisis-de-abandono-de-carrito-captar-los-puntos-de-fricción-ocultos",[738],{"type":37,"value":739},"Análisis de Abandono de Carrito: Captar los Puntos de Fricción Ocultos",{"type":32,"tag":33,"props":741,"children":742},{},[743],{"type":37,"value":744},"En migraciones headless, las caídas de tasa de conversión generalmente no comienzan en checkout, sino antes de agregar al carrito. Si el usuario agregaba a carrito en 3 clics en el sistema antiguo, 4 clics o 1 segundo más de tiempo de carga en el nuevo es razón suficiente para abandonar.",{"type":32,"tag":33,"props":746,"children":747},{},[748],{"type":32,"tag":55,"props":749,"children":750},{},[751],{"type":37,"value":752},"Métricas críticas:",{"type":32,"tag":754,"props":755,"children":756},"ul",{},[757,767,777],{"type":32,"tag":554,"props":758,"children":759},{},[760,765],{"type":32,"tag":55,"props":761,"children":762},{},[763],{"type":37,"value":764},"Tasa de ATC:",{"type":37,"value":766}," Vistas de página de producto \u002F adiciones al carrito",{"type":32,"tag":554,"props":768,"children":769},{},[770,775],{"type":32,"tag":55,"props":771,"children":772},{},[773],{"type":37,"value":774},"Latencia click-to-ATC:",{"type":37,"value":776}," Tiempo entre clic en botón y confirmación (objetivo \u003C600ms)",{"type":32,"tag":554,"props":778,"children":779},{},[780,785],{"type":32,"tag":55,"props":781,"children":782},{},[783],{"type":37,"value":784},"Tasa de salida en PDP:",{"type":37,"value":786}," Salidas antes de ATC (si en el nuevo frontend supera el 12%, es alerta)",{"type":32,"tag":33,"props":788,"children":789},{},[790],{"type":37,"value":791},"Recopila estas métricas en ambos sistemas en paralelo. Con BigQuery + GA4:",{"type":32,"tag":217,"props":793,"children":797},{"code":794,"language":795,"meta":16,"className":796,"style":16},"SELECT\n  page_location,\n  event_name,\n  COUNTIF(event_name = 'add_to_cart') \u002F COUNT(*) AS atc_rate,\n  AVG(TIMESTAMP_DIFF(atc_timestamp, page_view_timestamp, MILLISECOND)) AS click_latency_ms\nFROM `project.dataset.events_*`\nWHERE _TABLE_SUFFIX BETWEEN '20260701' AND '20260731'\n  AND event_name IN ('page_view', 'add_to_cart')\nGROUP BY page_location\nHAVING atc_rate \u003C 0.08 -- Crítico si está por debajo del 8%\nORDER BY click_latency_ms DESC;\n","sql","language-sql shiki shiki-themes github-dark",[798],{"type":32,"tag":112,"props":799,"children":800},{"__ignoreMap":16},[801,809,817,825,881,913,926,959,1002,1015,1052],{"type":32,"tag":227,"props":802,"children":803},{"class":229,"line":230},[804],{"type":32,"tag":227,"props":805,"children":806},{"style":234},[807],{"type":37,"value":808},"SELECT\n",{"type":32,"tag":227,"props":810,"children":811},{"class":229,"line":274},[812],{"type":32,"tag":227,"props":813,"children":814},{"style":257},[815],{"type":37,"value":816},"  page_location,\n",{"type":32,"tag":227,"props":818,"children":819},{"class":229,"line":284},[820],{"type":32,"tag":227,"props":821,"children":822},{"style":257},[823],{"type":37,"value":824},"  event_name,\n",{"type":32,"tag":227,"props":826,"children":827},{"class":229,"line":322},[828,833,838,843,848,853,858,862,867,871,876],{"type":32,"tag":227,"props":829,"children":830},{"style":257},[831],{"type":37,"value":832},"  COUNTIF(event_name ",{"type":32,"tag":227,"props":834,"children":835},{"style":234},[836],{"type":37,"value":837},"=",{"type":32,"tag":227,"props":839,"children":840},{"style":263},[841],{"type":37,"value":842}," 'add_to_cart'",{"type":32,"tag":227,"props":844,"children":845},{"style":257},[846],{"type":37,"value":847},") ",{"type":32,"tag":227,"props":849,"children":850},{"style":234},[851],{"type":37,"value":852},"\u002F",{"type":32,"tag":227,"props":854,"children":855},{"style":240},[856],{"type":37,"value":857}," COUNT",{"type":32,"tag":227,"props":859,"children":860},{"style":257},[861],{"type":37,"value":260},{"type":32,"tag":227,"props":863,"children":864},{"style":234},[865],{"type":37,"value":866},"*",{"type":32,"tag":227,"props":868,"children":869},{"style":257},[870],{"type":37,"value":847},{"type":32,"tag":227,"props":872,"children":873},{"style":234},[874],{"type":37,"value":875},"AS",{"type":32,"tag":227,"props":877,"children":878},{"style":257},[879],{"type":37,"value":880}," atc_rate,\n",{"type":32,"tag":227,"props":882,"children":883},{"class":229,"line":364},[884,889,894,899,904,908],{"type":32,"tag":227,"props":885,"children":886},{"style":240},[887],{"type":37,"value":888},"  AVG",{"type":32,"tag":227,"props":890,"children":891},{"style":257},[892],{"type":37,"value":893},"(TIMESTAMP_DIFF(atc_timestamp, page_view_timestamp, ",{"type":32,"tag":227,"props":895,"children":896},{"style":234},[897],{"type":37,"value":898},"MILLISECOND",{"type":32,"tag":227,"props":900,"children":901},{"style":257},[902],{"type":37,"value":903},")) ",{"type":32,"tag":227,"props":905,"children":906},{"style":234},[907],{"type":37,"value":875},{"type":32,"tag":227,"props":909,"children":910},{"style":257},[911],{"type":37,"value":912}," click_latency_ms\n",{"type":32,"tag":227,"props":914,"children":915},{"class":229,"line":373},[916,921],{"type":32,"tag":227,"props":917,"children":918},{"style":234},[919],{"type":37,"value":920},"FROM",{"type":32,"tag":227,"props":922,"children":923},{"style":263},[924],{"type":37,"value":925}," `project.dataset.events_*`\n",{"type":32,"tag":227,"props":927,"children":928},{"class":229,"line":382},[929,934,939,944,949,954],{"type":32,"tag":227,"props":930,"children":931},{"style":234},[932],{"type":37,"value":933},"WHERE",{"type":32,"tag":227,"props":935,"children":936},{"style":257},[937],{"type":37,"value":938}," _TABLE_SUFFIX ",{"type":32,"tag":227,"props":940,"children":941},{"style":234},[942],{"type":37,"value":943},"BETWEEN",{"type":32,"tag":227,"props":945,"children":946},{"style":263},[947],{"type":37,"value":948}," '20260701'",{"type":32,"tag":227,"props":950,"children":951},{"style":234},[952],{"type":37,"value":953}," AND",{"type":32,"tag":227,"props":955,"children":956},{"style":263},[957],{"type":37,"value":958}," '20260731'\n",{"type":32,"tag":227,"props":960,"children":961},{"class":229,"line":391},[962,967,972,977,982,987,992,997],{"type":32,"tag":227,"props":963,"children":964},{"style":234},[965],{"type":37,"value":966},"  AND",{"type":32,"tag":227,"props":968,"children":969},{"style":257},[970],{"type":37,"value":971}," event_name ",{"type":32,"tag":227,"props":973,"children":974},{"style":234},[975],{"type":37,"value":976},"IN",{"type":32,"tag":227,"props":978,"children":979},{"style":257},[980],{"type":37,"value":981}," (",{"type":32,"tag":227,"props":983,"children":984},{"style":263},[985],{"type":37,"value":986},"'page_view'",{"type":32,"tag":227,"props":988,"children":989},{"style":257},[990],{"type":37,"value":991},", ",{"type":32,"tag":227,"props":993,"children":994},{"style":263},[995],{"type":37,"value":996},"'add_to_cart'",{"type":32,"tag":227,"props":998,"children":999},{"style":257},[1000],{"type":37,"value":1001},")\n",{"type":32,"tag":227,"props":1003,"children":1004},{"class":229,"line":26},[1005,1010],{"type":32,"tag":227,"props":1006,"children":1007},{"style":234},[1008],{"type":37,"value":1009},"GROUP BY",{"type":32,"tag":227,"props":1011,"children":1012},{"style":257},[1013],{"type":37,"value":1014}," page_location\n",{"type":32,"tag":227,"props":1016,"children":1017},{"class":229,"line":412},[1018,1023,1028,1033,1038,1042,1047],{"type":32,"tag":227,"props":1019,"children":1020},{"style":234},[1021],{"type":37,"value":1022},"HAVING",{"type":32,"tag":227,"props":1024,"children":1025},{"style":257},[1026],{"type":37,"value":1027}," atc_rate ",{"type":32,"tag":227,"props":1029,"children":1030},{"style":234},[1031],{"type":37,"value":1032},"\u003C",{"type":32,"tag":227,"props":1034,"children":1035},{"style":240},[1036],{"type":37,"value":1037}," 0",{"type":32,"tag":227,"props":1039,"children":1040},{"style":257},[1041],{"type":37,"value":694},{"type":32,"tag":227,"props":1043,"children":1044},{"style":240},[1045],{"type":37,"value":1046},"08",{"type":32,"tag":227,"props":1048,"children":1049},{"style":440},[1050],{"type":37,"value":1051}," -- Crítico si está por debajo del 8%\n",{"type":32,"tag":227,"props":1053,"children":1054},{"class":229,"line":446},[1055,1060,1065,1070],{"type":32,"tag":227,"props":1056,"children":1057},{"style":234},[1058],{"type":37,"value":1059},"ORDER BY",{"type":32,"tag":227,"props":1061,"children":1062},{"style":257},[1063],{"type":37,"value":1064}," click_latency_ms ",{"type":32,"tag":227,"props":1066,"children":1067},{"style":234},[1068],{"type":37,"value":1069},"DESC",{"type":32,"tag":227,"props":1071,"children":1072},{"style":257},[1073],{"type":37,"value":1074},";\n",{"type":32,"tag":33,"props":1076,"children":1077},{},[1078],{"type":37,"value":1079},"Esta consulta muestra qué categorías de productos tienen tasas de ATC reducidas y latencias aumentadas. Por ejemplo, si la categoría \"zapatillas blancas\" tiene una latencia de 1200ms en el nuevo frontend, investiga el tamaño del bundle o la sobrecarga de llamadas API.",{"type":32,"tag":33,"props":1081,"children":1082},{},[1083,1088],{"type":32,"tag":55,"props":1084,"children":1085},{},[1086],{"type":37,"value":1087},"Tradeoff de session replay:",{"type":37,"value":1089}," Herramientas como Hotjar o LogRocket graban cada píxel pero conllevan riesgo de privacidad del usuario. Alternativa: la API \"frustration signal\" de FullStory — solo captura anomalías como clics rápidos, mensajes de error, clics en espacios en blanco, sin grabar la sesión completa.",{"type":32,"tag":40,"props":1091,"children":1093},{"id":1092},"rollback-en-arquitectura-componible",[1094],{"type":37,"value":1095},"Rollback en Arquitectura Componible",{"type":32,"tag":33,"props":1097,"children":1098},{},[1099],{"type":37,"value":1100},"La pila headless típicamente está compuesta por múltiples componentes: frontend (Next.js, Nuxt), CMS (Contentful, Sanity), motor de comercio (Shopify, commercetools), búsqueda (Algolia, Typesense). Si uno falla, el plan de rollback debe ser claro.",{"type":32,"tag":33,"props":1102,"children":1103},{},[1104,1109],{"type":32,"tag":55,"props":1105,"children":1106},{},[1107],{"type":37,"value":1108},"Patrón circuit breaker:",{"type":37,"value":1110}," Coloca timeout + límite de reintentos en cada servicio de terceros. Ejemplo para Shopify Storefront API:",{"type":32,"tag":217,"props":1112,"children":1114},{"code":1113,"language":220,"meta":16,"className":221,"style":16},"const fetchProduct = async (handle) => {\n  const controller = new AbortController();\n  const timeout = setTimeout(() => controller.abort(), 3000); \u002F\u002F timeout 3s\n\n  try {\n    const response = await fetch(`https:\u002F\u002Fshop.myshopify.com\u002Fapi\u002F2024-01\u002Fgraphql.json`, {\n      method: 'POST',\n      headers: { 'X-Shopify-Storefront-Access-Token': token },\n      body: JSON.stringify({ query: productQuery, variables: { handle } }),\n      signal: controller.signal\n    });\n    clearTimeout(timeout);\n    return response.json();\n  } catch (err) {\n    if (err.name === 'AbortError') {\n      \u002F\u002F Timeout: fallback a datos en caché o API heredada\n      return fetchFromLegacySystem(handle);\n    }\n    throw err;\n  }\n};\n",[1115],{"type":32,"tag":112,"props":1116,"children":1117},{"__ignoreMap":16},[1118,1159,1190,1249,1256,1268,1308,1326,1344,1371,1379,1387,1400,1422,1439,1468,1477,1496,1504,1518,1526],{"type":32,"tag":227,"props":1119,"children":1120},{"class":229,"line":230},[1121,1125,1130,1134,1138,1142,1147,1151,1155],{"type":32,"tag":227,"props":1122,"children":1123},{"style":234},[1124],{"type":37,"value":237},{"type":32,"tag":227,"props":1126,"children":1127},{"style":251},[1128],{"type":37,"value":1129}," fetchProduct",{"type":32,"tag":227,"props":1131,"children":1132},{"style":234},[1133],{"type":37,"value":248},{"type":32,"tag":227,"props":1135,"children":1136},{"style":234},[1137],{"type":37,"value":626},{"type":32,"tag":227,"props":1139,"children":1140},{"style":257},[1141],{"type":37,"value":981},{"type":32,"tag":227,"props":1143,"children":1144},{"style":644},[1145],{"type":37,"value":1146},"handle",{"type":32,"tag":227,"props":1148,"children":1149},{"style":257},[1150],{"type":37,"value":847},{"type":32,"tag":227,"props":1152,"children":1153},{"style":234},[1154],{"type":37,"value":314},{"type":32,"tag":227,"props":1156,"children":1157},{"style":257},[1158],{"type":37,"value":319},{"type":32,"tag":227,"props":1160,"children":1161},{"class":229,"line":274},[1162,1166,1171,1175,1180,1185],{"type":32,"tag":227,"props":1163,"children":1164},{"style":234},[1165],{"type":37,"value":328},{"type":32,"tag":227,"props":1167,"children":1168},{"style":240},[1169],{"type":37,"value":1170}," controller",{"type":32,"tag":227,"props":1172,"children":1173},{"style":234},[1174],{"type":37,"value":248},{"type":32,"tag":227,"props":1176,"children":1177},{"style":234},[1178],{"type":37,"value":1179}," new",{"type":32,"tag":227,"props":1181,"children":1182},{"style":251},[1183],{"type":37,"value":1184}," AbortController",{"type":32,"tag":227,"props":1186,"children":1187},{"style":257},[1188],{"type":37,"value":1189},"();\n",{"type":32,"tag":227,"props":1191,"children":1192},{"class":229,"line":284},[1193,1197,1202,1206,1211,1216,1220,1225,1230,1235,1240,1244],{"type":32,"tag":227,"props":1194,"children":1195},{"style":234},[1196],{"type":37,"value":328},{"type":32,"tag":227,"props":1198,"children":1199},{"style":240},[1200],{"type":37,"value":1201}," timeout",{"type":32,"tag":227,"props":1203,"children":1204},{"style":234},[1205],{"type":37,"value":248},{"type":32,"tag":227,"props":1207,"children":1208},{"style":251},[1209],{"type":37,"value":1210}," setTimeout",{"type":32,"tag":227,"props":1212,"children":1213},{"style":257},[1214],{"type":37,"value":1215},"(() ",{"type":32,"tag":227,"props":1217,"children":1218},{"style":234},[1219],{"type":37,"value":314},{"type":32,"tag":227,"props":1221,"children":1222},{"style":257},[1223],{"type":37,"value":1224}," controller.",{"type":32,"tag":227,"props":1226,"children":1227},{"style":251},[1228],{"type":37,"value":1229},"abort",{"type":32,"tag":227,"props":1231,"children":1232},{"style":257},[1233],{"type":37,"value":1234},"(), ",{"type":32,"tag":227,"props":1236,"children":1237},{"style":240},[1238],{"type":37,"value":1239},"3000",{"type":32,"tag":227,"props":1241,"children":1242},{"style":257},[1243],{"type":37,"value":437},{"type":32,"tag":227,"props":1245,"children":1246},{"style":440},[1247],{"type":37,"value":1248},"\u002F\u002F timeout 3s\n",{"type":32,"tag":227,"props":1250,"children":1251},{"class":229,"line":322},[1252],{"type":32,"tag":227,"props":1253,"children":1254},{"emptyLinePlaceholder":278},[1255],{"type":37,"value":281},{"type":32,"tag":227,"props":1257,"children":1258},{"class":229,"line":364},[1259,1264],{"type":32,"tag":227,"props":1260,"children":1261},{"style":234},[1262],{"type":37,"value":1263},"  try",{"type":32,"tag":227,"props":1265,"children":1266},{"style":257},[1267],{"type":37,"value":319},{"type":32,"tag":227,"props":1269,"children":1270},{"class":229,"line":373},[1271,1276,1281,1285,1290,1295,1299,1304],{"type":32,"tag":227,"props":1272,"children":1273},{"style":234},[1274],{"type":37,"value":1275},"    const",{"type":32,"tag":227,"props":1277,"children":1278},{"style":240},[1279],{"type":37,"value":1280}," response",{"type":32,"tag":227,"props":1282,"children":1283},{"style":234},[1284],{"type":37,"value":248},{"type":32,"tag":227,"props":1286,"children":1287},{"style":234},[1288],{"type":37,"value":1289}," await",{"type":32,"tag":227,"props":1291,"children":1292},{"style":251},[1293],{"type":37,"value":1294}," fetch",{"type":32,"tag":227,"props":1296,"children":1297},{"style":257},[1298],{"type":37,"value":260},{"type":32,"tag":227,"props":1300,"children":1301},{"style":263},[1302],{"type":37,"value":1303},"`https:\u002F\u002Fshop.myshopify.com\u002Fapi\u002F2024-01\u002Fgraphql.json`",{"type":32,"tag":227,"props":1305,"children":1306},{"style":257},[1307],{"type":37,"value":361},{"type":32,"tag":227,"props":1309,"children":1310},{"class":229,"line":382},[1311,1316,1321],{"type":32,"tag":227,"props":1312,"children":1313},{"style":257},[1314],{"type":37,"value":1315},"      method: ",{"type":32,"tag":227,"props":1317,"children":1318},{"style":263},[1319],{"type":37,"value":1320},"'POST'",{"type":32,"tag":227,"props":1322,"children":1323},{"style":257},[1324],{"type":37,"value":1325},",\n",{"type":32,"tag":227,"props":1327,"children":1328},{"class":229,"line":391},[1329,1334,1339],{"type":32,"tag":227,"props":1330,"children":1331},{"style":257},[1332],{"type":37,"value":1333},"      headers: { ",{"type":32,"tag":227,"props":1335,"children":1336},{"style":263},[1337],{"type":37,"value":1338},"'X-Shopify-Storefront-Access-Token'",{"type":32,"tag":227,"props":1340,"children":1341},{"style":257},[1342],{"type":37,"value":1343},": token },\n",{"type":32,"tag":227,"props":1345,"children":1346},{"class":229,"line":26},[1347,1352,1357,1361,1366],{"type":32,"tag":227,"props":1348,"children":1349},{"style":257},[1350],{"type":37,"value":1351},"      body: ",{"type":32,"tag":227,"props":1353,"children":1354},{"style":240},[1355],{"type":37,"value":1356},"JSON",{"type":32,"tag":227,"props":1358,"children":1359},{"style":257},[1360],{"type":37,"value":694},{"type":32,"tag":227,"props":1362,"children":1363},{"style":251},[1364],{"type":37,"value":1365},"stringify",{"type":32,"tag":227,"props":1367,"children":1368},{"style":257},[1369],{"type":37,"value":1370},"({ query: productQuery, variables: { handle } }),\n",{"type":32,"tag":227,"props":1372,"children":1373},{"class":229,"line":412},[1374],{"type":32,"tag":227,"props":1375,"children":1376},{"style":257},[1377],{"type":37,"value":1378},"      signal: controller.signal\n",{"type":32,"tag":227,"props":1380,"children":1381},{"class":229,"line":446},[1382],{"type":32,"tag":227,"props":1383,"children":1384},{"style":257},[1385],{"type":37,"value":1386},"    });\n",{"type":32,"tag":227,"props":1388,"children":1389},{"class":229,"line":464},[1390,1395],{"type":32,"tag":227,"props":1391,"children":1392},{"style":251},[1393],{"type":37,"value":1394},"    clearTimeout",{"type":32,"tag":227,"props":1396,"children":1397},{"style":257},[1398],{"type":37,"value":1399},"(timeout);\n",{"type":32,"tag":227,"props":1401,"children":1402},{"class":229,"line":494},[1403,1408,1413,1418],{"type":32,"tag":227,"props":1404,"children":1405},{"style":234},[1406],{"type":37,"value":1407},"    return",{"type":32,"tag":227,"props":1409,"children":1410},{"style":257},[1411],{"type":37,"value":1412}," response.",{"type":32,"tag":227,"props":1414,"children":1415},{"style":251},[1416],{"type":37,"value":1417},"json",{"type":32,"tag":227,"props":1419,"children":1420},{"style":257},[1421],{"type":37,"value":1189},{"type":32,"tag":227,"props":1423,"children":1424},{"class":229,"line":503},[1425,1429,1434],{"type":32,"tag":227,"props":1426,"children":1427},{"style":257},[1428],{"type":37,"value":452},{"type":32,"tag":227,"props":1430,"children":1431},{"style":234},[1432],{"type":37,"value":1433},"catch",{"type":32,"tag":227,"props":1435,"children":1436},{"style":257},[1437],{"type":37,"value":1438}," (err) {\n",{"type":32,"tag":227,"props":1440,"children":1442},{"class":229,"line":1441},15,[1443,1448,1453,1458,1463],{"type":32,"tag":227,"props":1444,"children":1445},{"style":234},[1446],{"type":37,"value":1447},"    if",{"type":32,"tag":227,"props":1449,"children":1450},{"style":257},[1451],{"type":37,"value":1452}," (err.name ",{"type":32,"tag":227,"props":1454,"children":1455},{"style":234},[1456],{"type":37,"value":1457},"===",{"type":32,"tag":227,"props":1459,"children":1460},{"style":263},[1461],{"type":37,"value":1462}," 'AbortError'",{"type":32,"tag":227,"props":1464,"children":1465},{"style":257},[1466],{"type":37,"value":1467},") {\n",{"type":32,"tag":227,"props":1469,"children":1471},{"class":229,"line":1470},16,[1472],{"type":32,"tag":227,"props":1473,"children":1474},{"style":440},[1475],{"type":37,"value":1476},"      \u002F\u002F Timeout: fallback a datos en caché o API heredada\n",{"type":32,"tag":227,"props":1478,"children":1480},{"class":229,"line":1479},17,[1481,1486,1491],{"type":32,"tag":227,"props":1482,"children":1483},{"style":234},[1484],{"type":37,"value":1485},"      return",{"type":32,"tag":227,"props":1487,"children":1488},{"style":251},[1489],{"type":37,"value":1490}," fetchFromLegacySystem",{"type":32,"tag":227,"props":1492,"children":1493},{"style":257},[1494],{"type":37,"value":1495},"(handle);\n",{"type":32,"tag":227,"props":1497,"children":1499},{"class":229,"line":1498},18,[1500],{"type":32,"tag":227,"props":1501,"children":1502},{"style":257},[1503],{"type":37,"value":712},{"type":32,"tag":227,"props":1505,"children":1507},{"class":229,"line":1506},19,[1508,1513],{"type":32,"tag":227,"props":1509,"children":1510},{"style":234},[1511],{"type":37,"value":1512},"    throw",{"type":32,"tag":227,"props":1514,"children":1515},{"style":257},[1516],{"type":37,"value":1517}," err;\n",{"type":32,"tag":227,"props":1519,"children":1521},{"class":229,"line":1520},20,[1522],{"type":32,"tag":227,"props":1523,"children":1524},{"style":257},[1525],{"type":37,"value":500},{"type":32,"tag":227,"props":1527,"children":1529},{"class":229,"line":1528},21,[1530],{"type":32,"tag":227,"props":1531,"children":1532},{"style":257},[1533],{"type":37,"value":1534},"};\n",{"type":32,"tag":33,"props":1536,"children":1537},{},[1538],{"type":37,"value":1539},"Este código, si la API de Shopify no responde en 3 segundos, hace fallback al sistema antiguo. La experiencia del usuario se mantiene ininterrumpida.",{"type":32,"tag":33,"props":1541,"children":1542},{},[1543,1548],{"type":32,"tag":55,"props":1544,"children":1545},{},[1546],{"type":37,"value":1547},"Disparador de rollback automático:",{"type":37,"value":1549}," Con Prometheus + Alertmanager, si la tasa de error supera el 2%, activa reversión automática:",{"type":32,"tag":217,"props":1551,"children":1555},{"code":1552,"language":1553,"meta":16,"className":1554,"style":16},"groups:\n  - name: headless_alerts\n    rules:\n      - alert: HighErrorRate\n        expr: rate(http_requests_total{job=\"headless-frontend\",status=~\"5..\"}[5m]) > 0.02\n        for: 2m\n        actions:\n          - trigger_rollback: true\n            target_version: \"legacy-stable\"\n","yaml","language-yaml shiki shiki-themes github-dark",[1556],{"type":32,"tag":112,"props":1557,"children":1558},{"__ignoreMap":16},[1559,1573,1596,1608,1630,1647,1664,1676,1698],{"type":32,"tag":227,"props":1560,"children":1561},{"class":229,"line":230},[1562,1568],{"type":32,"tag":227,"props":1563,"children":1565},{"style":1564},"--shiki-default:#85E89D",[1566],{"type":37,"value":1567},"groups",{"type":32,"tag":227,"props":1569,"children":1570},{"style":257},[1571],{"type":37,"value":1572},":\n",{"type":32,"tag":227,"props":1574,"children":1575},{"class":229,"line":274},[1576,1581,1586,1591],{"type":32,"tag":227,"props":1577,"children":1578},{"style":257},[1579],{"type":37,"value":1580},"  - ",{"type":32,"tag":227,"props":1582,"children":1583},{"style":1564},[1584],{"type":37,"value":1585},"name",{"type":32,"tag":227,"props":1587,"children":1588},{"style":257},[1589],{"type":37,"value":1590},": ",{"type":32,"tag":227,"props":1592,"children":1593},{"style":263},[1594],{"type":37,"value":1595},"headless_alerts\n",{"type":32,"tag":227,"props":1597,"children":1598},{"class":229,"line":284},[1599,1604],{"type":32,"tag":227,"props":1600,"children":1601},{"style":1564},[1602],{"type":37,"value":1603},"    rules",{"type":32,"tag":227,"props":1605,"children":1606},{"style":257},[1607],{"type":37,"value":1572},{"type":32,"tag":227,"props":1609,"children":1610},{"class":229,"line":322},[1611,1616,1621,1625],{"type":32,"tag":227,"props":1612,"children":1613},{"style":257},[1614],{"type":37,"value":1615},"      - ",{"type":32,"tag":227,"props":1617,"children":1618},{"style":1564},[1619],{"type":37,"value":1620},"alert",{"type":32,"tag":227,"props":1622,"children":1623},{"style":257},[1624],{"type":37,"value":1590},{"type":32,"tag":227,"props":1626,"children":1627},{"style":263},[1628],{"type":37,"value":1629},"HighErrorRate\n",{"type":32,"tag":227,"props":1631,"children":1632},{"class":229,"line":364},[1633,1638,1642],{"type":32,"tag":227,"props":1634,"children":1635},{"style":1564},[1636],{"type":37,"value":1637},"        expr",{"type":32,"tag":227,"props":1639,"children":1640},{"style":257},[1641],{"type":37,"value":1590},{"type":32,"tag":227,"props":1643,"children":1644},{"style":263},[1645],{"type":37,"value":1646},"rate(http_requests_total{job=\"headless-frontend\",status=~\"5..\"}[5m]) > 0.02\n",{"type":32,"tag":227,"props":1648,"children":1649},{"class":229,"line":373},[1650,1655,1659],{"type":32,"tag":227,"props":1651,"children":1652},{"style":1564},[1653],{"type":37,"value":1654},"        for",{"type":32,"tag":227,"props":1656,"children":1657},{"style":257},[1658],{"type":37,"value":1590},{"type":32,"tag":227,"props":1660,"children":1661},{"style":263},[1662],{"type":37,"value":1663},"2m\n",{"type":32,"tag":227,"props":1665,"children":1666},{"class":229,"line":382},[1667,1672],{"type":32,"tag":227,"props":1668,"children":1669},{"style":1564},[1670],{"type":37,"value":1671},"        actions",{"type":32,"tag":227,"props":1673,"children":1674},{"style":257},[1675],{"type":37,"value":1572},{"type":32,"tag":227,"props":1677,"children":1678},{"class":229,"line":391},[1679,1684,1689,1693],{"type":32,"tag":227,"props":1680,"children":1681},{"style":257},[1682],{"type":37,"value":1683},"          - ",{"type":32,"tag":227,"props":1685,"children":1686},{"style":1564},[1687],{"type":37,"value":1688},"trigger_rollback",{"type":32,"tag":227,"props":1690,"children":1691},{"style":257},[1692],{"type":37,"value":1590},{"type":32,"tag":227,"props":1694,"children":1695},{"style":240},[1696],{"type":37,"value":1697},"true\n",{"type":32,"tag":227,"props":1699,"children":1700},{"class":229,"line":26},[1701,1706,1710],{"type":32,"tag":227,"props":1702,"children":1703},{"style":1564},[1704],{"type":37,"value":1705},"            target_version",{"type":32,"tag":227,"props":1707,"children":1708},{"style":257},[1709],{"type":37,"value":1590},{"type":32,"tag":227,"props":1711,"children":1712},{"style":263},[1713],{"type":37,"value":1714},"\"legacy-stable\"\n",{"type":32,"tag":33,"props":1716,"children":1717},{},[1718],{"type":37,"value":1719},"Esta configuración YAML, si la tasa de error permanece por encima del 2% durante 2 minutos, desactiva el feature flag y redirige el tráfico al sistema antiguo.",{"type":32,"tag":40,"props":1721,"children":1723},{"id":1722},"cierre-gestión-de-riesgos-es-un-proceso-no-un-proyecto-único",[1724],{"type":37,"value":1725},"Cierre: Gestión de Riesgos es un Proceso, No un Proyecto Único",{"type":32,"tag":33,"props":1727,"children":1728},{},[1729],{"type":37,"value":1730},"La migración headless requiere monitoreo activo durante 90 días posteriores a la implementación. Core Web Vitals (LCP, CLS, FID), métricas del embudo de conversión y tasa de errores del lado del servidor deben seguirse en dashboards semanales. Aunque no haya problemas en los primeros 30 días, la estacionalidad del tráfico (por ejemplo, Black Friday) puede revelar nuevos patrones de carga.",{"type":32,"tag":33,"props":1732,"children":1733},{},[1734,1736,1745],{"type":37,"value":1735},"El enfoque ",{"type":32,"tag":1737,"props":1738,"children":1742},"a",{"href":1739,"rel":1740},"https:\u002F\u002Fwww.roibase.com.tr\u002Fes\u002Fheadless",[1741],"nofollow",[1743],{"type":37,"value":1744},"Headless Commerce",{"type":37,"value":1746},", con despliegue por fases correcto y disciplina de métricas, te permite transformar tu infraestructura de comercio electrónico de manera segura. Captar puntos de fricción durante el proceso, preservar la autoridad SEO y mantener el plan de rollback listo convierte la velocidad y flexibilidad que promete headless en crecimiento real de ingresos.",{"type":32,"tag":1748,"props":1749,"children":1750},"style",{},[1751],{"type":37,"value":1752},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":284,"depth":284,"links":1754},[1755,1756,1757,1758,1759],{"id":42,"depth":274,"text":45},{"id":517,"depth":274,"text":520},{"id":736,"depth":274,"text":739},{"id":1092,"depth":274,"text":1095},{"id":1722,"depth":274,"text":1725},"markdown","content:es:tech:hoja-de-ruta-migracion-comercio-sin-cabecera.md","content","es\u002Ftech\u002Fhoja-de-ruta-migracion-comercio-sin-cabecera.md","es\u002Ftech\u002Fhoja-de-ruta-migracion-comercio-sin-cabecera","md",1785967481224]