Experto en SEO Semántico Online | Certificación UTN | Impulsa tu Éxito en el Mercado Mexicano | Aprender21

Certificado por UTN FRVM + ITSS

12 Meses — Inicio en 48hs

Universidad Tecnológica Nacional
★★★★☆ 4.8 de 5
64 estudiantes
Certificado UTN + ITSS
Inicio en 48hs

Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado

Con Certificación de Instituto Tecnológico Superior Serra y Universidad Tecnológica Nacional

Conviértete en un Experto en SEO Semántico y marca la diferencia en el dinámico mercado digital de México. Este programa avanzado te capacita para dominar las estrategias de posicionamiento más sofisticadas, esenciales para que negocios mexicanos, desde PyMEs hasta grandes corporativos como Liverpool, El Palacio de Hierro o cadenas de autoservicio, sobresalgan en Google. Aprenderás a ir más allá de las palabras clave, entendiendo la intención de búsqueda del usuario mexicano y construyendo autoridad temática que los algoritmos de Google valoran. La creciente penetración del e-commerce y la digitalización de servicios en México exigen profesionales con estas habilidades para optimizar la visibilidad en resultados orgánicos, locales y por voz. Esta especialización es clave para asegurar un crecimiento sostenido y generar leads calificados en un entorno altamente competitivo.

Instituto Tecnológico Superior Serra

ITSS Logo UTN Logo

Certificación Académica de Prestigio

📅
Desde 1999 25+ años de trayectoria online
👥
30.000+ Egresados Comunidad en 20 países
🎓
Certificación Reconocida Aval de ITSS y UTN
✅
Calidad ISO 9001 Procesos certificados

¿Este curso es para ti?

✓ Quieres conseguir empleo en menos de 6 meses
✓ Necesitas un certificado reconocido en tu CV
✓ Estudias a tu propio ritmo, sin horarios fijos
✓ No requieres experiencia previa en el área
✓ Buscas una formación práctica con tutor personal
✓ Quieres potenciar tu perfil para ascender o cambiar de empleo

Ficha Técnica

📚 Denominación Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado
🎓 Certificación UTN + ITSS
⏱ Duración 12 Meses
🚀 Inicio 24/48 hs
💻 Modalidad 100% Online
📦 Estructura 8 módulos + Final
👨‍🏫 Tutor Personal 48 hs
💳 Cuotas Hasta 6 sin interés
rating (4.8)
👥 64 estudiantes inscriptos

Descripción Académica

Denominación y Estructura Curricular

Certificación: Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado


Estructura Curricular: Se encuentra integrado por 8 módulos de estudio independientes.

Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado



Programa de Estudio de Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado

➤
Por qué todo negocio necesita posicionarse. Rastreo (crawling), indexación y cómo Google clasifica y muestra los resultados de búsqueda.
➤
Anuncios pagos, mapa local, resultados orgánicos, fragmentos destacados (featured snippets) y respuestas automáticas de Google.
➤
Contenido útil para el usuario, estructura técnica sana y reputación/confianza (popularidad web y enlaces naturales).
➤
Qué es GSC, cómo saber si tu sitio está indexado en Google y cómo interpretar clics, impresiones, CTR y posición media.
➤
Cómo está construida una web (WordPress, Shopify, Tiendanube) y dónde se gestiona el contenido para optimizarlo.
➤
Configuración paso a paso de Rank Math y Yoast SEO en WordPress: títulos, metaetiquetas y sitemaps XML automáticos.
➤
Vinculación de la web con GSC y GA4. Métricas clave: usuarios, páginas más visitadas, fuentes de tráfico y países.
➤
Cómo rastrear un sitio pequeño, detectar enlaces rotos (404), títulos vacíos o duplicados e imágenes pesadas.
➤
Búsquedas informativas, comparativas y transaccionales. La diferencia entre tráfico curioso y clientes con intención de compra.
➤
Google Suggest (autocompletar), búsquedas relacionadas, AnswerThePublic y extensiones de navegador para descubrir ideas.
➤
Cómo elegir palabras con oportunidad real para sitios nuevos o pequeños (evaluando volumen vs dificultad de competencia).
➤
Creación de la planilla maestra de palabras clave para una pyme local o tienda online organizada por intención y página destino.
➤
Título SEO (), encabezados jerárquicos (H1, H2, H3), URL amigable y meta descripción atractiva para mejorar el CTR. </div> </div> </div> <div class="card"> <div class="card-header" id="heading14"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse14" aria-expanded="false" aria-controls="collapse14" style="text-decoration: underline;"> Unidad 14: Optimización de Imágenes y Archivos Multimedia </button> </div> <div id="collapse14" class="collapse" aria-labelledby="heading14" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Nombres de archivo descriptivos, texto alternativo (alt), compresión en WebP y tiempos de carga rápidos. </div> </div> </div> <div class="card"> <div class="card-header" id="heading15"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse15" aria-expanded="false" aria-controls="collapse15" style="text-decoration: underline;"> Unidad 15: Redacción de Artículos Asistida con IA (ChatGPT / Gemini) </button> </div> <div id="collapse15" class="collapse" aria-labelledby="heading15" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Cómo crear borradores útiles y estructurados con inteligencia artificial sin generar contenido basura ni duplicado. </div> </div> </div> <div class="card"> <div class="card-header" id="heading16"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse16" aria-expanded="false" aria-controls="collapse16" style="text-decoration: underline;"> Unidad 16: Enlazado Interno Básico </button> </div> <div id="collapse16" class="collapse" aria-labelledby="heading16" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Cómo conectar artículos del blog con las páginas de venta o servicios para guiar al usuario y distribuir relevancia en Google. </div> </div> </div> <div class="card"> <div class="card-header" id="heading17"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse17" aria-expanded="false" aria-controls="collapse17" style="text-decoration: underline;"> Unidad 17: Por Qué Repetir Palabras Ya No Funciona </button> </div> <div id="collapse17" class="collapse" aria-labelledby="heading17" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> La evolución de Google hacia la comprensión de Temas Completos y contexto en lugar de contar repeticiones mecánicas. </div> </div> </div> <div class="card"> <div class="card-header" id="heading18"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse18" aria-expanded="false" aria-controls="collapse18" style="text-decoration: underline;"> Unidad 18: Entidades Explicadas de Forma Sencilla </button> </div> <div id="collapse18" class="collapse" aria-labelledby="heading18" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Personas, marcas, productos, lugares y cómo Google entiende las relaciones entre conceptos del mundo real. </div> </div> </div> <div class="card"> <div class="card-header" id="heading19"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse19" aria-expanded="false" aria-controls="collapse19" style="text-decoration: underline;"> Unidad 19: Cómo Responder Todo lo que el Cliente Pregunta </button> </div> <div id="collapse19" class="collapse" aria-labelledby="heading19" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Identificar dudas frecuentes, objeciones y subtemas obligatorios para que Google te considere la respuesta más completa. </div> </div> </div> <div class="card"> <div class="card-header" id="heading20"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse20" aria-expanded="false" aria-controls="collapse20" style="text-decoration: underline;"> Unidad 20: Datos Estructurados Simples (Schema con Plugins) </button> </div> <div id="collapse20" class="collapse" aria-labelledby="heading20" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Cómo activar Schema de Organización, Negocio Local, Artículo y FAQ sin tocar código utilizando plugins de WordPress. </div> </div> </div> <div class="card"> <div class="card-header" id="heading21"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse21" aria-expanded="false" aria-controls="collapse21" style="text-decoration: underline;"> Unidad 21: Google Business Profile desde Cero </button> </div> <div id="collapse21" class="collapse" aria-labelledby="heading21" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Creación, verificación y configuración de la ficha de Google Mi Negocio para empresas locales, comercios y profesionales. </div> </div> </div> <div class="card"> <div class="card-header" id="heading22"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse22" aria-expanded="false" aria-controls="collapse22" style="text-decoration: underline;"> Unidad 22: Optimización de la Ficha Local en Google Maps </button> </div> <div id="collapse22" class="collapse" aria-labelledby="heading22" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Categorías principales y secundarias, fotos reales del negocio, catálogo de productos/servicios y horarios de atención. </div> </div> </div> <div class="card"> <div class="card-header" id="heading23"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse23" aria-expanded="false" aria-controls="collapse23" style="text-decoration: underline;"> Unidad 23: Gestión de Reseñas y Señales Locales </button> </div> <div id="collapse23" class="collapse" aria-labelledby="heading23" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> La importancia del factor confianza. Cómo pedir reseñas a clientes satisfechos y cómo responder reseñas negativas con profesionalismo. </div> </div> </div> <div class="card"> <div class="card-header" id="heading24"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse24" aria-expanded="false" aria-controls="collapse24" style="text-decoration: underline;"> Unidad 24: SEO Local en el Sitio Web (NAP y Páginas de Zona) </button> </div> <div id="collapse24" class="collapse" aria-labelledby="heading24" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Creación de páginas de zona/ciudad, datos de contacto consistentes (NAP: Nombre, Dirección, Teléfono) y mapa embebido. </div> </div> </div> <div class="card"> <div class="card-header" id="heading25"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse25" aria-expanded="false" aria-controls="collapse25" style="text-decoration: underline;"> Unidad 25: Experiencia en Celulares (Mobile-First) </button> </div> <div id="collapse25" class="collapse" aria-labelledby="heading25" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Por qué la mayoría del tráfico viene de smartphones y cómo verificar que tu web sea cómoda y legible en móviles. </div> </div> </div> <div class="card"> <div class="card-header" id="heading26"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse26" aria-expanded="false" aria-controls="collapse26" style="text-decoration: underline;"> Unidad 26: Velocidad de Carga (PageSpeed) para Principiantes </button> </div> <div id="collapse26" class="collapse" aria-labelledby="heading26" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Optimización de caché, reducción de plugins pesados y cómo medir el rendimiento del sitio con PageSpeed Insights. </div> </div> </div> <div class="card"> <div class="card-header" id="heading27"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse27" aria-expanded="false" aria-controls="collapse27" style="text-decoration: underline;"> Unidad 27: Gestión de Errores 404 y Redirecciones 301 </button> </div> <div id="collapse27" class="collapse" aria-labelledby="heading27" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Qué hacer cuando borras o cambias una URL. Cómo aplicar redirecciones 301 con plugin para no perder visitas ni autoridad. </div> </div> </div> <div class="card"> <div class="card-header" id="heading28"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse28" aria-expanded="false" aria-controls="collapse28" style="text-decoration: underline;"> Unidad 28: Checklist de Mantenimiento SEO Mensual </button> </div> <div id="collapse28" class="collapse" aria-labelledby="heading28" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Tareas recurrentes para mantener una web sana: rastreo mensual, revisión de indexación en Search Console y sitemaps. </div> </div> </div> <div class="card"> <div class="card-header" id="heading29"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse29" aria-expanded="false" aria-controls="collapse29" style="text-decoration: underline;"> Unidad 29: Cómo Realizar una Auditoría SEO para un Cliente </button> </div> <div id="collapse29" class="collapse" aria-labelledby="heading29" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Elaboración de un informe sencillo de 5 páginas con problemas detectados, soluciones prácticas y oportunidades de mejora. </div> </div> </div> <div class="card"> <div class="card-header" id="heading30"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse30" aria-expanded="false" aria-controls="collapse30" style="text-decoration: underline;"> Unidad 30: Propuesta Comercial y Fijación de Precios </button> </div> <div id="collapse30" class="collapse" aria-labelledby="heading30" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Cómo cotizar un servicio de optimización inicial y un retainer mensual de mantenimiento SEO para pequeñas empresas. </div> </div> </div> <div class="card"> <div class="card-header" id="heading31"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse31" aria-expanded="false" aria-controls="collapse31" style="text-decoration: underline;"> Unidad 31: Buenas Prácticas y Ética Profesional </button> </div> <div id="collapse31" class="collapse" aria-labelledby="heading31" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Qué técnicas evitar (Black Hat) para no ser penalizado por las actualizaciones de Google y asegurar resultados a largo plazo. </div> </div> </div> <div class="card"> <div class="card-header" id="heading32"> ➤ <button class="btn btn-link" type="button" data-toggle="collapse" data-target="#collapse32" aria-expanded="false" aria-controls="collapse32" style="text-decoration: underline;"> Unidad 32: PROYECTO FINAL INTEGRADOR: Especialista SEO Práctico </button> </div> <div id="collapse32" class="collapse" aria-labelledby="heading32" data-parent="#accordionTemario"> <div class="card-body" class="pl-30"> Optimización práctica completa de un sitio web real (negocio local, blog o tienda) con entrega de informe final para titulación. </div> </div> </div> </div> <div class="temario-fade"></div> <button class="temario-expand-btn" type="button" aria-expanded="false"> <span class="temario-expand-label">Ver programa completo</span> <span class="temario-expand-count">· 32 unidades</span> <svg class="temario-chevron" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2.5" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><polyline points="6 9 12 15 18 9"></polyline></svg> </button> </div><!-- /.temario-wrapper --> <br><br> <p class="u-font_size-16px">Ud. puede acceder al <strong><a href="/temarios/Temario%20ESEO.pdf" target="_blank">Temario completo aquí</a></strong>.</p> <br><br><br> </div><!-- fin módulos + programa full-width --> <div class="clearfix"></div> <br><br><br> <div id="botonmasinfodiv" class="d-none"> <button type="submit" class="botonform" onclick="enviarMasInfo();">Quiero más información</button> </div> <!-- boton --> </div> <!-- row --> </div> <!-- container --> <div class="pb-40"></div> <div class="pb-20"></div> <div class="pb-20"></div> <div class="container-fluid"> <div class="row"> <p class="outcome-copy">Al completar el <strong>Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado</strong> estarás capacitado/a para trabajar como <strong>Especialista en SEO Semántico</strong>: posicionar sitios web en Google, diseñar estrategias de contenido semántico y conseguir tráfico orgánico sostenido. Recibirás certificación académica con validez internacional reconocida por empleadores en toda Latinoamérica y España.</p> <br> <div class="clearfix onlymobile"></div> </div> <!-- row --> </div> <!-- container --> <div class="pb-20"></div> <!-- DURACION Y HORARIOS ***************************************************************** --> <div class="sectiongris"> <div class="container-fluid"> <div class="row"> <div class="bloqueimagen izquierda minidominio "> <img loading="lazy" class="sombranegra bloqueimagen" class="p-0" src="https://res.cloudinary.com/aprender21/image/upload/q_auto:low/aprender21/estudiar%20en%20linea%20aprender21.jpg" alt="Aprender21 Duracion"> </div> <div class="bloquetexto derecha predominio"> <!-- resto 60% --> <h2>Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado: Duración y Tiempos de estudio</h2> <div class="clearfix onlymobile"></div> <h4 class="cursos">Modalidad de Estudio</h4> <p>La metodología de estudio es 100% online.</p> <ul><li>La modalidad de estudio es asíncrona. </li> <li>No tiene dias ni horarios.</li> <li>Todo el material se encuentra en el campus virtual las 24hs. al cual accede en el momento que pueda.</li><li>Tiene actividades y examenes online para presentar en cada módulo de estudio. </li><li>El tutor se encuentra disponible para dudas, consultas y correccion de actividades.</li></ul> <h4 class="cursos">Duración de la Formación</h4> <p><strong>Tiempos de estudios totalmente flexibles</strong>: Ud. contará con <strong>12 Meses</strong> para realizarlo. Puede hacerlo incluso en menor tiempo, dependiento de sus conocimientos previos y tiempos disponibles. No hay horarios ni días específicos para la realización de las Actividades Obligatorias correspondientes o Exámenes finales.</p> <p><strong>Nos adaptamos a sus conocimientos</strong>: Para nuestros alumnos que cuentan con conocimientos previos en determinadas áreas, podrán realizar cada una de las formaciones integrantes en 45 días, que es la mitad del tiempo sugerido.</p> <h4 class="cursos">Tiempos de estudio</h4> <p>El alumno puede estudiar con el material de estudio durante las 24 horas los 365 días del año. Los tutores responden dentro de las 48 horas hábiles.</p> <p><strong>Libre elección de horarios</strong> para la realización de exámenes y actividades obligatorias a través de nuestro <a href="http://institutocbtech.com/campusvirtual/" target="_blank">Campus Virtual</a>. Total libertad de elegir el momento para el envío de actividades, para realizar consultas con su tutor o para participar en foros de discusión.</p> <h4 class="cursos">Requisitos</h4> <p>No tiene requisitos previos. La formación comienza desde cero.</p> <br><br> </div> <!-- resto 60% --> </div> <!-- row --> </div> <!-- container --> </div> <!-- sectiongris DE PERFIL PROFESIONAL--> <div class="pt-40"></div> <!-- METODOLOGÍA: comentada — info cubierta por secciones Ficha Técnica + Que Incluye --> <!-- PREGUNTAS FRECUENTES CON SCHEMA.ORG FAQPage ***************************************************************** --> <style> .faq2-wrap { max-width: 680px; } .faq2-item { border-bottom: 1px solid #e2e8f0; margin-bottom: 0; } .faq2-trigger { display: flex; align-items: center; gap: 14px; width: 100%; background: none; border: none; padding: 16px 4px; cursor: pointer; text-align: left; color: #1a2e45; } .faq2-trigger:hover { background: rgba(58,138,171,0.04); } .faq2-num { font-size: 11px; font-weight: 700; color: #3A8AAB; min-width: 22px; letter-spacing: 0.5px; opacity: 0.7; } .faq2-teaser { font-size: 15px; font-weight: 600; color: #1a2e45; flex: 1; } .faq2-chevron { font-size: 11px; color: #3A8AAB; transition: transform 0.25s ease; flex-shrink: 0; } .faq2-trigger[aria-expanded="true"] .faq2-chevron { transform: rotate(90deg); } .faq2-body { padding: 4px 4px 20px 36px; color: #4a5568; line-height: 1.75; font-size: 14.5px; } .faq2-question { font-weight: 700; color: #1a2e45; display: block; margin-bottom: 8px; font-size: 15px; } </style> <div class="section-blue-tint"> <div class="container-fluid"> <div class="row"> <div class="bloqueimagen derecha minidominio "> <img loading="lazy" class="sombranegra bloqueimagen" style="padding: 0;" src="/images/cursofaq.jpg" alt="Preguntas frecuentes Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado"> </div> <div class="bloquetexto izquierda predominio"> <div> <h2 style="color: #323e4f; font-size: 28px; margin-bottom: 25px; font-weight: 600;"> Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado: Preguntas Frecuentes </h2> <div class="faq2-wrap"> <!-- 1 --> <div class="faq2-item"> <button class="faq2-trigger" data-toggle="collapse" data-target="#faq2b1" aria-expanded="false" aria-controls="faq2b1"> <span class="faq2-num">01</span> <span class="faq2-teaser">Sin costos ocultos</span> <span class="faq2-chevron">▶</span> </button> <div id="faq2b1" class="collapse faq2-body"> <span class="faq2-question">¿Cuánto cuesta en total el experto?</span> <span>El precio total se muestra en el formulario al final de esta página. <strong>No hay costos ocultos</strong>: incluye acceso completo al campus virtual, material didáctico, evaluaciones y soporte de tutores. El certificado del Instituto CBTech está incluido. Para certificaciones adicionales (ITSS o UTN), hay un costo de emisión que se abona solo al finalizar si deseas obtenerlo.</span> </div> </div> <!-- 2 --> <div class="faq2-item"> <button class="faq2-trigger" data-toggle="collapse" data-target="#faq2b2" aria-expanded="false" aria-controls="faq2b2"> <span class="faq2-num">02</span> <span class="faq2-teaser">El certificado digital</span> <span class="faq2-chevron">▶</span> </button> <div id="faq2b2" class="collapse faq2-body"> <span class="faq2-question">¿Cómo obtengo el certificado?</span> <span>Al completar el experto y aprobar las evaluaciones, recibes automáticamente tu <strong>certificado digital del Instituto CBTech</strong> sin costo adicional. Opcionalmente puedes solicitar el del <strong>Instituto Tecnológico Superior Serra (ITSS)</strong> o de la <strong>Universidad Tecnológica Nacional (UTN)</strong> con validez internacional. Todos incluyen código QR verificable.</span> </div> </div> <!-- 3 --> <div class="faq2-item"> <button class="faq2-trigger" data-toggle="collapse" data-target="#faq2b3" aria-expanded="false" aria-controls="faq2b3"> <span class="faq2-num">03</span> <span class="faq2-teaser">Estudia a tu ritmo</span> <span class="faq2-chevron">▶</span> </button> <div id="faq2b3" class="collapse faq2-body"> <span class="faq2-question">¿Cuánto tiempo tengo para completar el experto?</span> <span>El plazo máximo es de <strong>12 Meses</strong>, pero <strong>puedes terminar antes</strong> si avanzas más rápido. Estudias a tu propio ritmo con acceso 24/7 al campus virtual, sin horarios fijos.</span> </div> </div> <!-- 4 --> <div class="faq2-item"> <button class="faq2-trigger" data-toggle="collapse" data-target="#faq2b4" aria-expanded="false" aria-controls="faq2b4"> <span class="faq2-num">04</span> <span class="faq2-teaser">Compatible con el trabajo</span> <span class="faq2-chevron">▶</span> </button> <div id="faq2b4" class="collapse faq2-body"> <span class="faq2-question">¿Puedo trabajar mientras estudio?</span> <span><strong>¡Por supuesto!</strong> El experto es 100% online y asincónico: no hay clases en vivo obligatorias. Más del 80% de nuestros estudiantes trabajan mientras cursan. Avanzas de noche, los fines de semana o cuando tengas tiempo libre.</span> </div> </div> <!-- 5 --> <div class="faq2-item"> <button class="faq2-trigger" data-toggle="collapse" data-target="#faq2b5" aria-expanded="false" aria-controls="faq2b5"> <span class="faq2-num">05</span> <span class="faq2-teaser">Reconocido en toda América</span> <span class="faq2-chevron">▶</span> </button> <div id="faq2b5" class="collapse faq2-body"> <span class="faq2-question">¿El certificado tiene validez internacional?</span> <span><strong>Sí.</strong> El Instituto Tecnológico Superior Serra tiene sedes en <strong>Madrid (España)</strong> y <strong>México DF</strong>. Los certificados incluyen código QR para verificación online, aceptados por empleadores en toda Latinoamérica y España.</span> </div> </div> <!-- 6 --> <div class="faq2-item"> <button class="faq2-trigger" data-toggle="collapse" data-target="#faq2b6" aria-expanded="false" aria-controls="faq2b6"> <span class="faq2-num">06</span> <span class="faq2-teaser">Dónde trabajan nuestros egresados</span> <span class="faq2-chevron">▶</span> </button> <div id="faq2b6" class="collapse faq2-body"> <span class="faq2-question">¿Qué salida laboral tiene este experto?</span> <span>Nuestros egresados trabajan en empresas, organismos públicos, emprendimientos propios o de forma freelance. Con <strong>64 estudiantes inscriptos</strong> y valoración de <strong>4.8/5</strong>, somos una referencia en formación profesional online en la región.</span> </div> </div> </div><!-- /faq2-wrap --> </div> </div> <!-- bloquetexto --> </div> <!-- row --> </div> <!-- container --> </div> <!-- section-blue-tint FAQ--> <div class="faq-cta-bar"> <a class="btn btn-primary btncta inscrahora faq-cta-btn" href="#inscripcion">Inscribirme ahora ↓</a> </div> <style> .faq-cta-bar { text-align: center; padding: 28px 20px; background: #fff; border-top: 1px solid #e8edf3; } .faq-cta-btn { font-size: 17px; padding: 14px 36px; border-radius: 6px; } </style> <div class="pt-20"></div> <div class="container-fluid"> <div class="row"> <div class="bloqueimagen izquierda minidominio"> <img loading="lazy" class="bloqueimagen" src="https://res.cloudinary.com/aprender21/image/upload/c_scale,q_auto:low,r_15,w_250/v1561762509/aprender21/Certificaciones_Aprender21.fw.png" alt="Certificaciones de Aprender21"> </div> <div class="bloquetexto derecha predominio"> <!-- resto 60% --> <h2>Experto en SEO Semántico Online | Certificación UTN | Impulsa tu Éxito en el Mercado Mexicano | Aprender21: Certificaciones de Prestigio</h2> <div class="clearfix onlymobile"></div> <h4 class="cursos">Certificación individual por cada Curso Integrante</h4> <p>En este mundo globalizado necesitamos obtener credenciales internacionales que validen nuestros conocimientos. Por este mismo motivo contamos con importantes convenios académicos con las siguientes Universidades e Institutos de Formación Profesional:</p> <table> <tr> <td style="width: 80px; text-align: center;"><img loading="lazy" src="https://res.cloudinary.com/aprender21/image/upload/c_scale,q_auto:low,h_50/v1562124139/aprender21/logoinstitutocbtech.png" alt="ITSS"></td> <td><a href="http://institutocbtech.com" target="_blank">Instituto de Formación Profesional Cbtech</a></td> </tr> <tr> <td style="width: 80px; text-align: center;"><img loading="lazy" src="https://res.cloudinary.com/aprender21/image/upload/c_scale,q_auto:low,h_50/v1562124139/aprender21/icono_itss.png" alt="ITSS"></td> <td><a href="https://institutoserra.org" target="_blank">Instituto Tecnológico Superior Serra - ITSS</a></td> </tr> <tr> <td style="width: 80px; text-align: center;"><img loading="lazy" src="https://res.cloudinary.com/aprender21/image/upload/c_scale,q_auto:low,h_50/v1562124139/aprender21/logo-utn.png" alt="UTN"></td> <td><a href="http://extension.frvm.utn.edu.ar" target="_blank">Universidad Tecnológica Nacional FRVM</a></td> </tr> </table> <br> <p>En particular, la Universidad Tecnológica Nacional - FRVM ofrece certificaciones exclusivas para nuestros Expertos en áreas tecnológicas bajo normas ISO 9001:2015 en el proceso de certificación.</p> <p>Igualmente, Aprender21 e Instituto CBTech han certificado bajo normas ISO su proceso de gestión del Campus Virtual.</p> <h4 class="cursos">Certificación Integral como Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado</h4> <p>Una vez aprobados los cursos integrantes y el examen final, <strong>Ud. podrá acceder sin costo</strong> a la emisión digital de los certificados correspondientes por parte de Instituto CBTech y del Instituto Tecnológico Superior Serra.</p> <p>Opcionalmente, y abonados aparte los costos correspondientes, Ud. accederá al envío digital de la Certificación exclusiva de la Universidad Tecnológica Nacional FRVM y/o del Instituto Tecnológico Superior Serra como <strong>"Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado"</strong> junto con las certificaciones de Instituto Cbtech por cada módulo de estudio. El proceso que involucra la emisión por parte de <a href="/blog/cursos-a-distancia-utn">UTN</a> puede tardar de 6 a 12 meses. Conozca más detalles del <a href="/certificaciones.php">proceso de certificaciones aquí</a>.</p> <br><br> </div> <!-- resto 60% --> </div> <!-- row --> </div> <!-- container --> <div class="pb-1"></div> <div class="container-fluid"> <div class="row dorado"> <div class="wrappergl"> <input checked type=radio name="slider" id="slide1" class="inputgl" /> <input type=radio name="slider" id="slide2" class="inputgl"/> <input type=radio name="slider" id="slide3" class="inputgl"/> <div class="slider-wrappergl"> <div class="innergl"> <article class="artgl"> <div class="infogl top-left"> <h3></h3></div> <img loading="lazy" src="/imagenes/imgcertif/c_utn.png" alt="Certificado UTN Facultad Regional Villa María" /> </article> <article class="artgl"> <div class="infogl top-left"> <h3></h3></div> <img loading="lazy" src="/imagenes/imgcertif/certificadoitss.jpg" alt="Certificado ITSS" /> </article> <article class="artgl"> <div class="infogl top-left"> <h3></h3></div> <img loading="lazy" src="/imagenes/imgcertif/ict_go.jpg" alt="Certificado Instituto CBTech" /> </article> </div> <!-- .inner --> </div> <!-- .slider-wrapper --> <div class="slider-prev-next-control"> <label for=slide1></label> <label for=slide2></label> <label for=slide3></label> </div> <!-- .slider-prev-next-control --> <div class="slider-dot-control"> <label for=slide1></label> <label for=slide2></label> <label for=slide3></label> </div> <!-- .slider-dot-control --> </div> </div> <!-- row --> </div> <!-- container --> <div class="pb-40"></div> <div class="pb-20"></div> <!-- Social proof banner --> <div class="testimonials-banner"> <span class="testimonials-banner__stars">★★★★☆</span> <span class="testimonials-banner__stat">4.8 promedio</span> <span class="testimonials-banner__sep">·</span> <span class="testimonials-banner__stat">49+ testimonios</span> <span class="testimonials-banner__sep">·</span> <span class="testimonials-banner__stat">14 países</span> </div> <h2 class="testimonials-heading">Lo que dicen nuestros alumnos</h2> <div class="testimonials-grid testimonials-grid--3col"> <div class="testimonial-card"> <div class="testimonial-card__header"> <div class="testimonial-card__initials">MA</div> <div class="testimonial-card__info"> <div class="testimonial-card__name">Martín Aguirre</div> <a class="testimonial-card__course" href="/cursos-marketing/experto-seo-semantico.php">Experto en SEO Semántico</a> </div> </div> <div class="testimonial-card__rating"> ★★★★☆ <span class="testimonial-card__rating-num">4.9</span> </div> <div class="testimonial-card__quote">"Antes hacía SEO con herramientas y trucos sueltos. Ahora tengo un framework completo basado en entidades y semántica."</div> <div class="testimonial-card__badge">🎓 Egresado 2026</div> </div> <!-- Schema JSON-LD per review --> <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Review", "itemReviewed": { "@type": "Course", "name": "Experto en SEO Semántico", "provider": { "@type": "Organization", "name": "Aprender21", "url": "https://www.aprender21.com" } }, "reviewRating": { "@type": "Rating", "ratingValue": "4.9", "bestRating": "5" }, "name": "Pasé de hacer SEO intuitivo a tener un sistema real", "author": { "@type": "Person", "name": "Martín Aguirre" }, "reviewBody": "Antes hacía SEO con herramientas y trucos sueltos. Ahora tengo un framework completo basado en entidades y semántica." } </script> <div class="testimonial-card"> <div class="testimonial-card__header"> <div class="testimonial-card__initials">CH</div> <div class="testimonial-card__info"> <div class="testimonial-card__name">Carolina Herrera P.</div> <a class="testimonial-card__course" href="/cursos-marketing/experto-seo-semantico.php">Experto en SEO Semántico</a> </div> </div> <div class="testimonial-card__rating"> ★★★★☆ <span class="testimonial-card__rating-num">4.8</span> </div> <div class="testimonial-card__quote">"No encontré en ningún otro programa un enfoque tan claro sobre cómo optimizar para LLMs y AI Overviews."</div> <div class="testimonial-card__badge">🎓 Egresado 2026</div> </div> <!-- Schema JSON-LD per review --> <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Review", "itemReviewed": { "@type": "Course", "name": "Experto en SEO Semántico", "provider": { "@type": "Organization", "name": "Aprender21", "url": "https://www.aprender21.com" } }, "reviewRating": { "@type": "Rating", "ratingValue": "4.8", "bestRating": "5" }, "name": "El módulo de GEO y SEO para IA es único", "author": { "@type": "Person", "name": "Carolina Herrera P." }, "reviewBody": "No encontré en ningún otro programa un enfoque tan claro sobre cómo optimizar para LLMs y AI Overviews." } </script> <div class="testimonial-card"> <div class="testimonial-card__header"> <div class="testimonial-card__initials">DM</div> <div class="testimonial-card__info"> <div class="testimonial-card__name">Diego Morales</div> <a class="testimonial-card__course" href="/cursos-marketing/seo-semantico/curso-seo-ia-geo.php">SEO para IA y GEO</a> </div> </div> <div class="testimonial-card__rating"> ★★★★☆ <span class="testimonial-card__rating-num">4.7</span> </div> <div class="testimonial-card__quote">"El enfoque en Topical Maps y arquitectura semántica me diferenció de otros freelancers que solo hacen keywords."</div> <div class="testimonial-card__badge">🎓 Egresado 2026</div> </div> <!-- Schema JSON-LD per review --> <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Review", "itemReviewed": { "@type": "Course", "name": "SEO para IA y GEO", "provider": { "@type": "Organization", "name": "Aprender21", "url": "https://www.aprender21.com" } }, "reviewRating": { "@type": "Rating", "ratingValue": "4.7", "bestRating": "5" }, "name": "De freelancer a consultor SEO con clientes recurrentes", "author": { "@type": "Person", "name": "Diego Morales" }, "reviewBody": "El enfoque en Topical Maps y arquitectura semántica me diferenció de otros freelancers que solo hacen keywords." } </script> </div> <!-- AggregateRating schema --> <script type="application/ld+json"> { "@context": "https://schema.org/", "@type": "Course", "name": "Experto en SEO Semántico", "provider": { "@type": "Organization", "name": "Aprender21", "url": "https://www.aprender21.com" }, "aggregateRating": { "@type": "AggregateRating", "ratingValue": "4.8", "reviewCount": "3", "bestRating": "5" } } </script> <!-- Dual CTA --> <div class="testimonials-cta"> <a class="testimonials-cta__link" href="testimonios.php?categ=eseo">Ver más testimonios →</a> <a class="testimonials-cta__action" href="#inscripcion">Inscribirme ahora ↓</a> </div> <script> (function(){var io=new IntersectionObserver(function(entries){entries.forEach(function(e){if(e.isIntersecting){e.target.classList.add('is-visible');io.unobserve(e.target)}})},{threshold:0.1});document.querySelectorAll('.testimonials-grid--3col .testimonial-card').forEach(function(c,i){c.style.transitionDelay=i*120+'ms';io.observe(c)})})(); </script> <div class="pb-20"></div> <!-- Anchors for scroll navigation - always present --> <a name="inscripcion" id="inscripcion"></a> <a name="xfiform"></a> <div id="xfi-container" class="container-fluid"> <div class="row" > <div id="header_xfi" align="center" class="bordeform" style="width:100%;padding:10px 20px;"> <h4 class="u-font_size-19px" style="color:#ffffff;">Formulario Seguro de Inscripción<br>Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado</h4> </div><!--end of heading of xfi --> <div id="xfi" class="bordeform"> <div id="bloquetexto-izquierda" class="bloquetexto izquierda equaldominio"> <!-- resto 60% --> <div class="clearfix onlymobile"></div> <div class="descripxfi"> <p><strong>El costo INCLUYE TODO EL CURSADO durante los 12 Meses de la Formación</strong>. </p> <p>El Experto incluye todos los módulos de estudio correspondientes al nivel, las actividades, acceso al Campus Virtual y su Tutor personal.</p> <p>Además están incluídas las certificaciones digitales por módulo emitido por <strong>Instituto CBTech</strong> y del Experto por el <strong>Instituto Tecnológico Superior Serra</strong>.</p> <p>Opcionalmente, puede elegir por el <strong>certificado físico de UTN (Universidad Tecnológica Nacional)</strong>, el examen final, la emisión y <strong>envío de certificados físicos, los cuales se abonan al finalizar</strong>. El costo aproximado es de 60 dólares.</p> <style> #listapreciosx span, #pais2 {font-size: 16px;} </style> <div id="listapreciosx"> <div class="pt-40"> <u><span>Valor total<span id="decursado"> de cursado para</span></span></u>: <select name="pais2" id="pais2" onchange2="cargarcbfpago()"> <option value="AR" selected="">Argentina</option> <option value="AO">Angola</option> <option value="BO">Bolivia</option> <option value="BR">Brasil</option> <option value="CL">Chile</option> <option value="CO">Colombia</option> <option value="CR">Costa Rica</option> <option value="GT">Guatemala</option> <option value="DO">R.Dominicana</option> <option value="EC">Ecuador</option> <option value="ES">España</option> <option value="US">Estados Unidos</option> <option value="SV">El Salvador</option> <option value="HN">Honduras</option> <option value="MX">México</option> <option value="NI">Nicaragua</option> <option value="PA">Panamá</option> <option value="PY">Paraguay</option> <option value="PE">Perú</option> <option value="UY">Uruguay</option> <option value="VE">Venezuela</option> <option value="XT">Otro Pais</option> </select> </div> <div class="pt-5 text-center"> <span class="text-gray"> <span id="tachado"> <span id="preciototal">$1</span> <span id="12csi" class=""> en cuotas sin interés</span> </span> </span> <br><span id="divo" class="">ó<br></span> <span class="text-maroon"> <strong> <span> <span id="preciodesc">$ 8.250</span> <span id="1psc" class=""> en un pago</span> </span> </strong> </span> </div> <div class="pt-8 text-center"> <span> <span> <span class="bg-maroon text-white text-pre" style="color: white;">  25%  OFF  </span>      <span class="bg-green text-white text-pre" style="color: white;">  Envío gratis  </span> </span> </span> </div> </div> <!-- div listapreciosx --> <!-- ── Urgency countdown ──────────────────────────── --> <div id="urgency-block" style="margin:12px 0 6px;text-align:center;background:rgba(255,80,60,0.12);border:1px solid rgba(255,80,60,0.35);border-radius:8px;padding:9px 14px;"> <span style="font-size:13px;color:#ff6b4a;font-weight:600;">🔥 Oferta especial termina en:</span> <span id="urgency-timer" style="font-size:17px;font-weight:700;color:#ff6b4a;font-variant-numeric:tabular-nums;letter-spacing:1px;margin-left:6px;"></span> </div> <script> (function(){ var KEY = 'a21_off_exp_v2'; var stored = localStorage.getItem(KEY); var exp = stored ? parseInt(stored, 10) : 0; if (!exp || exp < Date.now()) { exp = Date.now() + 72 * 60 * 60 * 1000; // 72 h rolling localStorage.setItem(KEY, exp); } var el = document.getElementById('urgency-timer'); var block = document.getElementById('urgency-block'); if (!el) return; function pad(n){ return n < 10 ? '0'+n : ''+n; } function tick(){ var diff = exp - Date.now(); if (diff <= 0) { exp = Date.now() + 72 * 60 * 60 * 1000; localStorage.setItem(KEY, exp); diff = exp - Date.now(); } var h = Math.floor(diff / 3600000); var m = Math.floor((diff % 3600000) / 60000); var s = Math.floor((diff % 60000) / 1000); el.textContent = pad(h) + ':' + pad(m) + ':' + pad(s); setTimeout(tick, 1000); } tick(); })(); </script> <!-- ── /Urgency countdown ─────────────────────────── --> <br> <div id="mpagodescrip2" class=""></div><br> <div id="mpagodescrip"></div> <br> <br> </div> <!-- descripxfi --> </div> <!-- resto 60% --> <div class="bloquetexto derecha equaldominio"> <!-- ========== FORMULARIO DE INSCRIPCIÓN MODERNO ========== --> <script> window.dataLayer = window.dataLayer || []; (function() { var codcurso = 'ESEO'; var cursoName = 'Experto en SEO Sem&aacute;ntico - Especializaci&oacute;n en Posicionamiento Web Avanzado'; var currency = 'ARS'; var eventId = 'a21-vc-' + codcurso + '-' + Date.now(); var fired = false; function readPrice() { var p = parseFloat(window.preciodesc || window.preciolista || 0) || 0; if (!p) { var qt = document.querySelector('input[name="qtotal"]'); if (qt) p = parseFloat(qt.getAttribute('data-sin-credito') || qt.value) || 0; } return p; } function fire() { if (fired) return; fired = true; var price = readPrice(); // GA4 view_item — push dual schema: // - top-level (items, currency, value) lo lee FB_CONVERSIONS_API GA4_Event tag → CAPI server-side // - ecommerce.items (nested) lo lee el GA4 Event tag con "Send Ecommerce data: Data Layer" → reportes GA4 window.dataLayer.push({ ecommerce: null }); window.dataLayer.push({ event: 'view_item', event_id: eventId, currency: currency, value: price, items: [{ item_id: codcurso, item_name: cursoName, price: price, quantity: 1 }], ecommerce: { currency: currency, value: price, items: [{ item_id: codcurso, item_name: cursoName, price: price, quantity: 1 }] } }); // Meta Pixel ViewContent — manual con content_ids para DPA matching if (typeof fbq === 'function' && codcurso) { fbq('track', 'ViewContent', { content_ids: [codcurso], content_type: 'product', content_name: cursoName, value: price, currency: currency }, { eventID: eventId }); } } // Polling: espera hasta 1.5s a que la course page setee window.preciodesc / qtotal, // luego dispara con el precio que haya (o 0). Defer asegura DOM listo + JS de la página corrió. function tryFireWithPolling() { var attempts = 0; var maxAttempts = 6; // 6 * 250ms = 1.5s max var iv = setInterval(function() { attempts++; if (readPrice() > 0 || attempts >= maxAttempts) { clearInterval(iv); fire(); } }, 250); } if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', tryFireWithPolling); } else { tryFireWithPolling(); } })(); </script> <div class="enrollment-form"> <!-- Header del Formulario --> <div class="form-header"> <p class="form-tagline"> Comience a estudiar <strong>HOY</strong> y reciba su certificado en 12 Meses. </p> </div> <!-- Social Proof --> <div class="form-social-proof"> <span class="fsp-item"><strong>+42.000</strong> estudiantes</span> <span class="fsp-dot">·</span> <span class="fsp-item">★ 4.8/5</span> <span class="fsp-dot">·</span> <span class="fsp-item">Certificado incluido</span> </div> <!-- Formulario --> <form id="form1" action="/inscripcion3/paso2.php" method="POST" class="forminscrip"> <!-- Progress Indicator --> <div class="checkout-steps"> <div class="cro-step active"><span class="cro-step-num">1</span><span class="cro-step-label">Datos</span></div> <div class="cro-step-line"></div> <div class="cro-step"><span class="cro-step-num">2</span><span class="cro-step-label">Pago</span></div> <div class="cro-step-line"></div> <div class="cro-step"><span class="cro-step-num">3</span><span class="cro-step-label">Confirmación</span></div> </div> <!-- Campos Visibles --> <div class="form-fields"> <!-- Nombre --> <div class="form-group"> <label for="realname">Nombre *</label> <input id="realname" name="realname" type="text" class="input" required placeholder="Ej: Maria Lopez"> </div> <!-- Email --> <div class="form-group"> <label for="email">Email *</label> <input id="email" name="email" type="email" class="input" required placeholder="Ej: maria@gmail.com"> </div> <!-- Teléfono + país telefónico (required) --> <div class="form-group"> <label for="telefono">Teléfono *</label> <div class="phone-row" style="display:flex;gap:8px;"> <select id="phone_country" name="phone_country" class="input" required style="flex:0 0 130px;" aria-label="País del teléfono"> <option value="AR" data-prefix="+54">🇦🇷 +54</option> <option value="MX" data-prefix="+52">🇲🇽 +52</option> <option value="ES" data-prefix="+34">🇪🇸 +34</option> <option value="CO" data-prefix="+57">🇨🇴 +57</option> <option value="PE" data-prefix="+51">🇵🇪 +51</option> <option value="CL" data-prefix="+56">🇨🇱 +56</option> <option value="EC" data-prefix="+593">🇪🇨 +593</option> <option value="VE" data-prefix="+58">🇻🇪 +58</option> <option value="BO" data-prefix="+591">🇧🇴 +591</option> <option value="PY" data-prefix="+595">🇵🇾 +595</option> <option value="UY" data-prefix="+598">🇺🇾 +598</option> <option value="PA" data-prefix="+507">🇵🇦 +507</option> <option value="BR" data-prefix="+55">🇧🇷 +55</option> <option value="US" data-prefix="+1">🇺🇸 +1</option> <option value="OTRO" data-prefix="">🌍 Otro</option> </select> <input id="telefono" name="telefono" type="tel" class="input" required pattern="^\+?[\d\s().-]{6,20}$" placeholder="Ej: +54 11 5555-1234" style="flex:1;"> </div> </div> <!-- WhatsApp opt-in --> <div class="form-group" style="margin-top:-6px;"> <label style="display:flex;align-items:flex-start;gap:8px;font-weight:400;font-size:.875rem;line-height:1.35;cursor:pointer;"> <input type="checkbox" id="whatsapp_optin" name="whatsapp_optin" value="1" checked style="margin-top:3px;flex:0 0 auto;"> <span>Acepto recibir notificaciones por WhatsApp sobre mi inscripción</span> </label> </div> <script> // Geo-based phone_country preselect. Server fallback: $paisbase already wins via /api/geo.php domain path. (function(){ var sel = document.getElementById('phone_country'); var pc = document.getElementById('cbpais'); if (!sel) return; // 1) Sync with cbpais on load (paisbase already preset by server) if (pc && pc.value) { var match = sel.querySelector('option[value="' + pc.value + '"]'); if (match) sel.value = pc.value; } // 2) Call /api/geo.php to override w/ IP-detected country fetch('/api/geo.php', { credentials: 'same-origin' }) .then(function(r){ return r.json(); }) .then(function(d){ if (!d || !d.country) return; var opt = sel.querySelector('option[value="' + d.country + '"]'); if (opt) sel.value = d.country; }) .catch(function(){}); // 3) Keep phone_country in sync if user changes cbpais if (pc) { pc.addEventListener('change', function(){ var opt = sel.querySelector('option[value="' + pc.value + '"]'); if (opt) sel.value = pc.value; }); } })(); </script> <!-- País --> <div class="form-group"> <label for="cbpais">País *</label> <select id="cbpais" name="cbpais" class="input" required> <option value="AR" >Argentina</option> <option value="AO" >Angola</option> <option value="BO" >Bolivia</option> <option value="BR" >Brasil</option> <option value="CL" >Chile</option> <option value="CO" >Colombia</option> <option value="CR" >Costa Rica</option> <option value="GT" >Guatemala</option> <option value="DO" >R.Dominicana</option> <option value="EC" >Ecuador</option> <option value="ES" >España</option> <option value="US" >Estados Unidos</option> <option value="SV" >El Salvador</option> <option value="HN" >Honduras</option> <option value="MX" selected>México</option> <option value="NI" >Nicaragua</option> <option value="PA" >Panamá</option> <option value="PY" >Paraguay</option> <option value="PE" >Perú</option> <option value="UY" >Uruguay</option> <option value="VE" >Venezuela</option> <option value="XT" >Otro País</option> </select> </div> <!-- CPF — shown only when BR is selected (required for DLocalGo BR payments) --> <div id="cpf-row" class="form-group" style="display:none;"> <label for="cpf">CPF (Cadastro de Pessoas Físicas) *</label> <input type="text" id="cpf" name="cpf" class="input" placeholder="000.000.000-00" maxlength="14" autocomplete="off" inputmode="numeric"> </div> <script> // CPF field: show when BR selected, hide otherwise (function() { function toggleCpfField(pais) { var row = document.getElementById('cpf-row'); var input = document.getElementById('cpf'); if (!row) return; if (pais === 'BR') { row.style.display = 'block'; } else { row.style.display = 'none'; if (input) input.value = ''; } } // On country change document.addEventListener('change', function(e) { var el = e.target; if (el && (el.id === 'cbpais' || el.id === 'pais2')) { toggleCpfField(el.value); } }); // On page load: show if BR is default (BR domain sets paisbase='BR') document.addEventListener('DOMContentLoaded', function() { var cbpais = document.getElementById('cbpais'); if (cbpais) toggleCpfField(cbpais.value); }); })(); </script> <!-- Opción de Pago --> <div class="form-group"> <label for="fpago">Elija su opción de pago</label> <select id="fpago" name="fpago" class="input payment-select" onchange="recalcularCuotas();"> <option value="mlar">Mercado Pago: 6 cuotas sin interés con tarjeta</option> <option value="depar">Transferencia Bancaria: 25% de descuento (CBU/CVU/Alias)</option> </select> </div> <!-- Cantidad de Cuotas --> <div id="divfcuotas" class="form-group"> <label for="fcuotas">Elija la cantidad de cuotas</label> <select id="fcuotas" name="fcuotas" class="input" size="3" onchange="recalcularCuotas2();"></select> </div> <!-- Info de Mercado Pago --> <div id="bigcuadro_mlar" class="payment-info hidden"> <div id="cuadro_mlar" class="payment-info-text"></div> <div id="cuadroimg_mlar" class="payment-info-images"> <img id="img_cuadroimg_mlar" loading="lazy" src="/images/mpago/mppais_ar.png" alt="Mercado Pago y Tarjetas de Crédito"> <img id="img_cuadroimg_todopago" loading="lazy" src="/images/mpago/todopago6csi.jpg" alt="TodoPago"> </div> </div> <!-- Info de PayU --> <div id="cuadro_payu" class="payment-info hidden mostrarpayu"> Pago seguro con PayU: En el siguiente paso se eligen el medio de pago y las cuotas disponibles. El precio ya incluye el 25 por ciento de descuento. </div> <!-- Crédito de módulo previo (visible solo cuando ?credito= está en URL) --> <div id="credito_container" class="form-group credito-container" style="display:none;"> <div class="credito-badge"> <span class="credito-check">✓</span> <span id="credito_texto">Crédito módulo previo</span> </div> <div id="credito_precio_info" class="credito-precio-info"></div> </div> <style> /* ============================================ */ /* ESTILOS CRÉDITO CAMPUS — APRENDER21 */ /* ============================================ */ .credito-container { margin-top: 12px; padding: 16px 18px; background: linear-gradient(135deg, rgba(0, 184, 148, 0.15) 0%, rgba(0, 206, 201, 0.15) 100%); border-radius: 10px; border: 2px solid rgba(0, 184, 148, 0.5); animation: credito-appear 0.4s ease-out; } @keyframes credito-appear { from { opacity: 0; transform: translateY(-8px); } to { opacity: 1; transform: translateY(0); } } .credito-badge { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 14px; color: #00b894 !important; } .credito-badge span, .credito-badge #credito_texto { color: #00b894 !important; } .credito-check { display: inline-flex; align-items: center; justify-content: center; width: 22px; height: 22px; background: #00b894; color: white; border-radius: 50%; font-size: 13px; font-weight: 900; flex-shrink: 0; } .credito-precio-info { margin-top: 10px; padding-top: 10px; border-top: 1px solid rgba(0, 184, 148, 0.3); font-size: 13px; color: rgba(255,255,255,0.85); display: flex; flex-wrap: wrap; align-items: center; gap: 8px; } .credito-original { text-decoration: line-through; color: rgba(255,255,255,0.6); } .credito-flecha { color: rgba(255,255,255,0.6); } .credito-final { color: #00cec9; font-size: 18px; font-weight: 800; } .credito-ahorro { background: rgba(0,184,148,0.2); padding: 3px 9px; border-radius: 12px; font-size: 12px; font-weight: 600; color: #00b894; } </style> <style> /* ============================================ */ /* ESTILOS CUPÓN DE DESCUENTO - APRENDER21 */ /* ============================================ */ .cupon-container { margin-top: 10px; padding: 18px 18px 0 18px; background: linear-gradient(135deg, rgba(102, 126, 234, 0.1) 0%, rgba(118, 75, 162, 0.1) 100%); border-radius: 12px; border: 2px dashed rgba(102, 126, 234, 0.4); position: relative; overflow: hidden; } .cupon-arrow { font-size: 10px; display: inline-block; transition: transform 0.3s; margin-left: 4px; } .cupon-open .cupon-arrow { transform: rotate(180deg); } .cupon-open .cupon-input-group { display: flex !important; } .cupon-container::before { content: ''; position: absolute; top: -50%; left: -50%; width: 200%; height: 200%; background: radial-gradient(circle, rgba(255,215,0,0.05) 0%, transparent 70%); pointer-events: none; } .cupon-container label { display: flex; align-items: center; gap: 8px; font-size: 15px; margin-bottom: 12px; } .cupon-icon { font-size: 20px; animation: cupon-bounce 2s infinite; } @keyframes cupon-bounce { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-3px); } } .cupon-input-group { display: flex; gap: 10px; } .cupon-input { flex: 1; text-transform: uppercase; font-weight: 600; letter-spacing: 1px; border: 2px solid rgba(102, 126, 234, 0.3) !important; transition: all 0.3s ease !important; } .cupon-input:focus { border-color: #667eea !important; box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.2) !important; } .cupon-input::placeholder { letter-spacing: 0; font-weight: 400; } .btn-cupon { padding: 12px 24px; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); color: white; border: none; border-radius: 8px; cursor: pointer; font-weight: 700; font-size: 14px; text-transform: uppercase; letter-spacing: 0.5px; transition: all 0.3s ease; white-space: nowrap; min-width: 100px; } .btn-cupon:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 6px 20px rgba(102, 126, 234, 0.5); } .btn-cupon:active:not(:disabled) { transform: translateY(0); } .btn-cupon:disabled { background: linear-gradient(135deg, #28a745 0%, #20c997 100%); cursor: default; transform: none; box-shadow: none; } .btn-cupon.loading { background: linear-gradient(135deg, #6c757d 0%, #495057 100%); } .cupon-mensaje { margin-top: 10px; font-size: 14px; min-height: 22px; font-weight: 500; padding: 0 4px; } .cupon-mensaje.error { color: #ff6b6b; } .cupon-mensaje.success { color: #51cf66; } .cupon-mensaje.loading { color: #adb5bd; } /* Info del descuento aplicado */ .cupon-descuento-info { margin-top: 15px; padding: 16px 18px; background: linear-gradient(135deg, #51cf66 0%, #40c057 100%); border-radius: 10px; box-shadow: 0 4px 15px rgba(81, 207, 102, 0.3); animation: cupon-success-appear 0.4s ease-out; } @keyframes cupon-success-appear { from { opacity: 0; transform: translateY(-10px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } .cupon-badge { display: flex; align-items: center; gap: 10px; font-weight: 700; font-size: 15px; color: white; } .cupon-check { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; background: white; color: #40c057; border-radius: 50%; font-size: 14px; font-weight: 900; } /* Comparativa de precios */ .cupon-precio-comparativa { margin-top: 12px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,0.3); display: flex; flex-wrap: wrap; align-items: center; gap: 12px; } .precio-original { font-size: 14px; color: rgba(255,255,255,0.8); text-decoration: line-through; text-decoration-color: rgba(255,255,255,0.5); } .precio-flecha { color: rgba(255,255,255,0.6); font-size: 18px; } .precio-final { font-size: 20px; font-weight: 800; color: white; text-shadow: 0 2px 4px rgba(0,0,0,0.2); } .precio-ahorro { background: rgba(255,255,255,0.2); padding: 4px 10px; border-radius: 20px; font-size: 12px; font-weight: 700; color: white; } /* Estado deshabilitado del input */ .cupon-input:disabled { background: rgba(81, 207, 102, 0.2) !important; border-color: #51cf66 !important; color: #51cf66 !important; cursor: default; } /* Responsive */ @media (max-width: 480px) { .cupon-input-group { flex-direction: column; } .btn-cupon { width: 100%; } .cupon-precio-comparativa { flex-direction: column; align-items: flex-start; gap: 8px; } .precio-flecha { transform: rotate(90deg); } } </style> <script> // Variables globales para cupón var cuponAplicado = null; var cuponDescuento = 0; var precioOriginalSinCupon = 0; // Guardar precio original antes del cupón function validarCupon() { var codigo = document.getElementById('cupon_codigo').value.trim().toUpperCase(); var mensaje = document.getElementById('cupon_mensaje'); var btnValidar = document.getElementById('btn_validar_cupon'); var descuentoInfo = document.getElementById('cupon_descuento_info'); var descuentoTexto = document.getElementById('cupon_descuento_texto'); // Obtener código del curso var codcurso = document.getElementById('codcurso')?.value || ''; var tipocurso = document.getElementById('tipocurso')?.value || ''; var cursoParam = tipocurso || codcurso; if (!codigo) { mensaje.textContent = 'Ingresa un código de cupón'; mensaje.className = 'cupon-mensaje error'; return; } // Estado de carga btnValidar.disabled = true; btnValidar.classList.add('loading'); btnValidar.textContent = 'Validando...'; mensaje.textContent = 'Verificando cupón...'; mensaje.className = 'cupon-mensaje loading'; descuentoInfo.style.display = 'none'; // Llamar API de validación fetch('/inscripcion3/validar-cupon.php?codigo=' + encodeURIComponent(codigo) + '&curso=' + encodeURIComponent(cursoParam)) .then(function(response) { return response.json(); }) .then(function(data) { btnValidar.classList.remove('loading'); if (data.valido) { cuponAplicado = data.codigo; cuponDescuento = data.descuento; mensaje.textContent = ''; mensaje.className = 'cupon-mensaje success'; descuentoTexto.textContent = data.descuento + '% de descuento adicional - ' + data.descripcion; descuentoInfo.style.display = 'block'; // Actualizar campos ocultos document.getElementById('cupon_codigo_aplicado').value = data.codigo; document.getElementById('cupon_descuento_aplicado').value = data.descuento; // Deshabilitar input después de aplicar document.getElementById('cupon_codigo').disabled = true; btnValidar.textContent = '✓ Aplicado'; btnValidar.disabled = true; // Recalcular precios con cupón recalcularPreciosConCupon(data.descuento); // GA4 Tracking if (typeof gtag !== 'undefined') { gtag('event', 'coupon_applied', { coupon_code: data.codigo, discount_percentage: data.descuento }); } } else { cuponAplicado = null; cuponDescuento = 0; btnValidar.disabled = false; btnValidar.textContent = 'Aplicar'; mensaje.textContent = data.mensaje; mensaje.className = 'cupon-mensaje error'; descuentoInfo.style.display = 'none'; // Limpiar campos ocultos document.getElementById('cupon_codigo_aplicado').value = ''; document.getElementById('cupon_descuento_aplicado').value = '0'; } }) .catch(function(error) { btnValidar.classList.remove('loading'); btnValidar.disabled = false; btnValidar.textContent = 'Aplicar'; mensaje.textContent = 'Error al validar el cupón. Intenta nuevamente.'; mensaje.className = 'cupon-mensaje error'; console.error('Error validando cupón:', error); }); } // Función para recalcular precios con el cupón function recalcularPreciosConCupon(descuentoPorcentaje) { // Obtener precio actual con 25% de descuento base var precioBase = window.preciodesc || 0; var precioLista = window.preciolista || 0; var pais = window.spais || 'AR'; if (precioBase <= 0) { console.warn('No se pudo obtener el precio base para aplicar cupón'); return; } // ============================================ // GUARDAR VARIABLES GLOBALES PARA xpreciosunbounce.js // ============================================ window.cuponDescuento = descuentoPorcentaje; window.cuponAplicado = cuponAplicado; // ============================================ // Guardar precio original (con 25% de descuento ya aplicado) precioOriginalSinCupon = precioBase; // Calcular nuevo precio con cupón adicional var factorDescuento = (100 - descuentoPorcentaje) / 100; var precioConCupon = Math.round(precioBase * factorDescuento); var ahorro = precioBase - precioConCupon; // Formatear precios usando la función existente si está disponible var precioOriginalFormateado = precioBase; var precioFinalFormateado = precioConCupon; var ahorroFormateado = ahorro; if (typeof formatprecios === 'function') { precioOriginalFormateado = formatprecios(pais, precioBase); precioFinalFormateado = formatprecios(pais, precioConCupon); ahorroFormateado = formatprecios(pais, ahorro); } // Mostrar comparativa de precios var comparativa = document.getElementById('cupon_precio_comparativa'); if (comparativa) { comparativa.innerHTML = '<span class="precio-original">' + precioOriginalFormateado + '</span>' + '<span class="precio-flecha">→</span>' + '<span class="precio-final">' + precioFinalFormateado + '</span>' + '<span class="precio-ahorro">¡Ahorrás ' + ahorroFormateado + '!</span>'; } // Actualizar el precio mostrado en el formulario var preciodescEl = document.getElementById('preciodesc'); if (preciodescEl) { preciodescEl.innerHTML = '<span style="text-decoration:line-through;color:#999;font-size:0.85em;">' + precioOriginalFormateado + '</span> <strong style="color:#51cf66;">' + precioFinalFormateado + '</strong>'; } // ============================================ // RECALCULAR TODOS LOS PRECIOS (cuotas, medios de pago, precio total, etc.) // setvariables_curso() actualiza #preciototal, #preciodesc y llama a recalcularCuotas() // ============================================ if (typeof setvariables_curso === 'function') { setvariables_curso(); console.log('✅ setvariables_curso() ejecutado con cupón - actualiza todos los precios'); } else if (typeof recalcularCuotas === 'function') { recalcularCuotas(); console.log('✅ recalcularCuotas() ejecutado con cupón'); } // ============================================ console.log('✅ Cupón aplicado: ' + cuponAplicado + ' (' + descuentoPorcentaje + '%)'); console.log(' Precio original: ' + precioOriginalFormateado); console.log(' Precio final: ' + precioFinalFormateado); console.log(' Ahorro: ' + ahorroFormateado); } // Función legacy - ahora recalcularCuotas() maneja todo con window.cuponDescuento function actualizarCuotasConCupon(precioConCupon, pais) { // Ya no es necesaria - recalcularCuotas() usa window.cuponDescuento // Se mantiene vacía por compatibilidad } // ============================================================ // CRÉDITO CAMPUS (módulo previo pagado) // ============================================================ var creditoMonto = 0; var creditoMoneda = ''; var _creditoMonedaPais = { ARS: 'AR', MXN: 'MX', COP: 'CO', CLP: 'CL', PEN: 'PE', UYU: 'UY', BOB: 'BO', PYG: 'PY', USD: 'EC', EUR: 'ES' }; var _creditoPaisMoneda = { AR: 'ARS', MX: 'MXN', CO: 'COP', CL: 'CLP', PE: 'PEN', EC: 'USD', VE: 'USD', PA: 'USD', UY: 'UYU', BO: 'BOB', PY: 'PYG', ES: 'EUR' }; function aplicarCreditoAlPrecio() { if (creditoMonto <= 0) return; var qtotalEl = document.getElementById('qtotal'); if (!qtotalEl) return; var paisActual = ((window.spais || '') || (document.getElementById('cbpais') ? document.getElementById('cbpais').value : '') || 'AR').toUpperCase(); var monedaEsperada = _creditoPaisMoneda[paisActual] || ''; if (creditoMoneda !== monedaEsperada) return; var qtotalBase = parseFloat(qtotalEl.getAttribute('data-sin-credito') || qtotalEl.value) || 0; if (qtotalBase <= 0) return; var qtotalConCredito = Math.max(0, qtotalBase - creditoMonto); qtotalEl.value = Math.round(qtotalConCredito); qtotalEl.setAttribute('data-sin-credito', qtotalBase); var infoEl = document.getElementById('credito_precio_info'); if (infoEl && typeof formatprecios === 'function') { var paisFmt = _creditoMonedaPais[creditoMoneda] || paisActual; var spanOriginal = document.createElement('span'); spanOriginal.className = 'credito-original'; spanOriginal.textContent = formatprecios(paisFmt, qtotalBase); var spanFlecha = document.createElement('span'); spanFlecha.className = 'credito-flecha'; spanFlecha.textContent = '→'; var spanFinal = document.createElement('strong'); spanFinal.className = 'credito-final'; spanFinal.textContent = formatprecios(paisFmt, qtotalConCredito); var spanAhorro = document.createElement('span'); spanAhorro.className = 'credito-ahorro'; spanAhorro.textContent = '−' + formatprecios(paisFmt, creditoMonto) + ' módulo cursado'; infoEl.textContent = ''; infoEl.appendChild(spanOriginal); infoEl.appendChild(spanFlecha); infoEl.appendChild(spanFinal); infoEl.appendChild(spanAhorro); } } function aplicarCredito(token) { fetch('/inscripcion3/validar-credito.php?token=' + encodeURIComponent(token)) .then(function(r) { return r.json(); }) .then(function(data) { if (!data.valido) { console.warn('Crédito campus inválido:', data.mensaje); return; } creditoMonto = data.monto; creditoMoneda = data.moneda; window.creditoMonto = data.monto; window.creditoMoneda = data.moneda; document.getElementById('credito_token').value = token; document.getElementById('credito_monto').value = data.monto; document.getElementById('credito_moneda').value = data.moneda; var container = document.getElementById('credito_container'); var texto = document.getElementById('credito_texto'); if (container) container.style.display = 'block'; if (texto && typeof formatprecios === 'function') { var paisFmt = _creditoMonedaPais[data.moneda] || 'AR'; texto.textContent = 'Crédito módulo previo: −' + formatprecios(paisFmt, data.monto); } aplicarCreditoAlPrecio(); if (typeof setvariables_curso === 'function' && !window._creditoHookInstalled) { var _origSVC = setvariables_curso; setvariables_curso = function() { _origSVC.apply(this, arguments); var qel = document.getElementById('qtotal'); if (qel) qel.removeAttribute('data-sin-credito'); setTimeout(aplicarCreditoAlPrecio, 80); }; window._creditoHookInstalled = true; } }) .catch(function(err) { console.error('Error validando crédito campus:', err); }); } // ============================================================ // Permitir validar con Enter + auto-aplicar cupón/crédito desde URL document.addEventListener('DOMContentLoaded', function() { var cuponInput = document.getElementById('cupon_codigo'); if (cuponInput) { cuponInput.addEventListener('keypress', function(e) { if (e.key === 'Enter') { e.preventDefault(); validarCupon(); } }); } var params = new URLSearchParams(window.location.search); // Auto-aplicar cupón desde URL (?cupon=CODIGO) var cuponUrl = params.get('cupon'); if (cuponUrl && cuponInput) { cuponInput.value = cuponUrl.toUpperCase(); cuponInput.closest('.cupon-container').classList.add('cupon-open'); setTimeout(validarCupon, 1800); } // Auto-aplicar crédito desde URL (?credito=TOKEN) var creditoUrl = params.get('credito'); if (creditoUrl) { var creditoToken = creditoUrl.replace(/[^A-Za-z0-9\-_]/g, ''); if (creditoToken) { setTimeout(function() { aplicarCredito(creditoToken); }, 2200); } } }); </script> </div> <!-- Campos Ocultos --> <!-- Cupón aplicado --> <input type="hidden" id="cupon_codigo_aplicado" name="cupon_codigo_aplicado" value=""> <input type="hidden" id="cupon_descuento_aplicado" name="cupon_descuento_aplicado" value="0"> <!-- Crédito campus (módulo previo) --> <input type="hidden" id="credito_token" name="credito_token" value=""> <input type="hidden" id="credito_monto" name="credito_monto" value="0"> <input type="hidden" id="credito_moneda" name="credito_moneda" value=""> <input id="clientId" name="clientId" type="hidden" value="555"> <input id="codcurso" name="codcurso" type="hidden" value="ESEO"> <input id="curso" name="curso" type="hidden" value="Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado"> <input id="categoria" name="categoria" type="hidden" value="eseo"> <input id="tipocurso" name="tipocurso" type="hidden" value="experto"> <input id="customdimensions" name="customdimensions" type="hidden" value="cd2=ESEOxxwcd3=expertoxxwcd4=eseoxxwcd5=ITSS"> <input id="dominio" name="dominio" type="hidden" value="www.aprender21.mx"> <input id="idccuotas" name="idccuotas" type="hidden" value="0"> <input id="qcuota0" name="qcuota0" type="hidden" value="0"> <input id="qtotal" name="qtotal" type="hidden" value="0"> <input id="cuota1" name="cuota1" type="hidden" value="0"> <input id="cuota3" name="cuota3" type="hidden" value="0"> <input id="cuota6" name="cuota6" type="hidden" value="0"> <input id="cuota9" name="cuota9" type="hidden" value="0"> <input id="mpagoelegido" name="mpagoelegido" type="hidden" value="0"> <input id="utm_campaign" name="utm_campaign" type="hidden" value="not"> <input id="qminimoneda" name="qminimoneda" type="hidden" value="0"> <input id="qmoneda" name="qmoneda" type="hidden" value="0"> <input id="metodoenvio" name="metodoenvio" type="hidden" value="0"> <input id="certiflong" name="certiflong" type="hidden" value="0"> <input id="customdimensions2" name="customdimensions2" type="hidden" value="0"> <input id="gclid_adwords" name="gclid_adwords" type="hidden" value="0"> <input id="ref_afiliado" name="ref_afiliado" type="hidden" value=""> <input id="requesturl" name="requesturl" type="hidden" value="www.aprender21.mx/cursos-marketing/experto-seo-semantico.php"> <input type="hidden" name="gbraid_raw" value=""> <input type="hidden" name="wbraid_raw" value=""> <input type="hidden" name="utm_source_raw" value=""> <input type="hidden" name="utm_medium_raw" value=""> <input type="hidden" name="utm_campaign_raw" value=""> <input type="hidden" name="fbclid_raw" value=""> <input type="hidden" name="fbp_raw" value=""> <input type="hidden" name="landing_page_raw" value=""> <input type="hidden" name="referrer_raw" value=""> <!-- 🛡️ ANTI-SPAM PROTECTION (2025-11-10) --> <input type="text" name="website" id="website" value="" style="display:none!important" tabindex="-1" autocomplete="off" aria-hidden="true"> <input type="hidden" name="recaptcha_token" id="recaptcha_token"> <!-- Botón de Inscripción --> <div class="form-submit"> <button type="button" id="btninscrip" class="btn btn-primary btn-lg btn-block btn-shimmer" onclick="handleFormSubmit()"> Inscribirme ahora → </button> <script> document.addEventListener('DOMContentLoaded', function() { window.handleFormSubmit = function() { if ($('#form1').valid()) { var btn = $('#btninscrip'); btn.prop('disabled', true); btn.html('<span class="cro-spinner"></span> Procesando...'); // Ejecutar reCAPTCHA antes de enviar grecaptcha.ready(function() { grecaptcha.execute('6LdmGPMUAAAAAJgipJkJFNkkYXG1PP36t9g_S2Fb', {action: 'submit'}).then(function(token) { document.getElementById('recaptcha_token').value = token; $('#form1').submit(); }); }); } }; }); </script> <div class="form-disclaimer" id="form-disclaimer"> Solo toma 2 minutos </div> <!-- Cupón de Descuento --> <div class="form-group cupon-container"> <label class="cupon-toggle" onclick="this.parentElement.classList.toggle('cupon-open')" style="cursor:pointer;"> <span class="cupon-icon">🎟️</span> ¿Tienes un cupón de descuento? <span class="cupon-arrow">▼</span> </label> <div class="cupon-input-group" style="display:none;"> <input id="cupon_codigo" name="cupon_codigo" type="text" class="input cupon-input" placeholder="Ingresa tu código" maxlength="20" style="text-transform: uppercase;"> <button type="button" id="btn_validar_cupon" class="btn btn-cupon" onclick="validarCupon()"> Aplicar </button> </div> <div id="cupon_mensaje" class="cupon-mensaje"></div> <div id="cupon_descuento_info" class="cupon-descuento-info" style="display:none;"> <div class="cupon-badge"> <span class="cupon-check">✓</span> <span id="cupon_descuento_texto"></span> </div> <div id="cupon_precio_comparativa" class="cupon-precio-comparativa"></div> </div> </div> <!-- Badge de cupón aplicado (se muestra cuando hay cupón) --> <div id="cupon-aplicado-badge" class="cupon-aplicado-badge" style="display:none;"> <span class="badge-icon">🎟️</span> <span class="badge-text">Cupón <strong id="cupon-badge-codigo"></strong> aplicado</span> </div> </div> </form> <!-- Trust Strip --> <div class="form-trust-strip"> <div class="trust-item"> <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="#4ade80" stroke-width="2"><path d="M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"/></svg> <span>Pago 100% seguro</span> </div> <div class="trust-item"> <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="#4ade80" stroke-width="2"><rect x="3" y="11" width="18" height="11" rx="2"/><path d="M7 11V7a5 5 0 0110 0v4"/></svg> <span>Datos protegidos</span> </div> <div class="trust-item"> <svg viewBox="0 0 24 24" width="16" height="16" fill="none" stroke="#4ade80" stroke-width="2"><path d="M22 11.08V12a10 10 0 11-5.93-9.14"/><polyline points="22 4 12 14.01 9 11.01"/></svg> <span>Certificado incluido</span> </div> </div> </div> <style> /* ============================================ */ /* CRO: Social proof, trust strip, spinner */ /* ============================================ */ .form-social-proof { text-align: center; font-size: 13px; color: #fff; margin-bottom: 18px; display: flex; justify-content: center; flex-wrap: wrap; gap: 8px; } .fsp-item { color: rgba(255,255,255,0.85) !important; } .fsp-dot { color: rgba(255,255,255,0.6); } .fsp-item strong { color: #fff; font-weight: inherit; } .form-trust-strip { display: flex; justify-content: center; flex-wrap: wrap; gap: 16px; margin-top: 16px; padding: 14px 0 4px; border-top: 1px solid rgba(255,255,255,0.08); } .trust-item { display: flex; align-items: center; gap: 6px; font-size: 13px; color: rgba(255,255,255,0.85); } .trust-item span { color: rgba(255,255,255,0.85); } .trust-item svg { flex-shrink: 0; } .cro-spinner { display: inline-block; width: 18px; height: 18px; border: 3px solid rgba(255,255,255,0.3); border-top-color: #fff; border-radius: 50%; animation: cro-spin 0.8s linear infinite; vertical-align: middle; margin-right: 8px; } @keyframes cro-spin { to { transform: rotate(360deg); } } /* Badge flotante de cupón aplicado */ .cupon-aplicado-badge { margin-top: 12px; padding: 10px 16px; background: linear-gradient(135deg, #ffd700 0%, #ffb347 100%); border-radius: 25px; display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: #333; box-shadow: 0 4px 15px rgba(255, 215, 0, 0.4); animation: badge-pulse 2s infinite; } @keyframes badge-pulse { 0%, 100% { box-shadow: 0 4px 15px rgba(255, 215, 0, 0.4); } 50% { box-shadow: 0 4px 25px rgba(255, 215, 0, 0.6); } } .cupon-aplicado-badge .badge-icon { font-size: 18px; } .cupon-aplicado-badge strong { color: #1a1a1a; text-transform: uppercase; letter-spacing: 0.5px; } </style> <script> // Función para mostrar badge de cupón en el botón function mostrarBadgeCupon(codigo) { var badge = document.getElementById('cupon-aplicado-badge'); var codigoEl = document.getElementById('cupon-badge-codigo'); var disclaimer = document.getElementById('form-disclaimer'); if (badge && codigoEl) { codigoEl.textContent = codigo; badge.style.display = 'inline-flex'; } // Actualizar el disclaimer if (disclaimer && cuponDescuento > 0) { var descuentoTotal = 25 + Math.round((75 * cuponDescuento) / 100); disclaimer.innerHTML = '<span style="color:#51cf66;">¡Cupón aplicado!</span> Descuento total: <strong>' + descuentoTotal + '% OFF</strong><br>' + '<strong>Los cupos son limitados.</strong>'; } } // Extender la función validarCupon original para mostrar el badge var _validarCuponOriginal = validarCupon; validarCupon = function() { _validarCuponOriginal(); }; // Observer para detectar cuando el cupón se aplica exitosamente document.addEventListener('DOMContentLoaded', function() { var observer = new MutationObserver(function(mutations) { mutations.forEach(function(mutation) { if (mutation.target.id === 'cupon_descuento_info' && mutation.target.style.display !== 'none') { if (cuponAplicado) { mostrarBadgeCupon(cuponAplicado); } } }); }); var descuentoInfo = document.getElementById('cupon_descuento_info'); if (descuentoInfo) { observer.observe(descuentoInfo, { attributes: true, attributeFilter: ['style'] }); } }); </script> <!-- ========== TRACKING DEBUG (Development Only) ========== --> <script> // Debug: Verify utm-tracker.js populated fields document.addEventListener('DOMContentLoaded', function() { setTimeout(function() { if (typeof window.getA21UtmData === 'function') { var trackingData = window.getA21UtmData(); console.log('=== 📊 TRACKING FIELDS DEBUG ==='); console.log('Campaign String:', trackingData.utm_campaign_string); console.log('UTM Source:', trackingData.utm_source); console.log('UTM Medium:', trackingData.utm_medium); console.log('UTM Campaign:', trackingData.utm_campaign); console.log('GCLID:', trackingData.gclid || 'Not present'); console.log('FBCLID:', trackingData.fbclid || 'Not present'); console.log('Landing Page:', trackingData.landing_page); console.log('Referrer:', trackingData.referrer); // Check form fields var form = document.getElementById('form1'); if (form) { console.log('\n=== 📝 FORM FIELDS ==='); console.log('utm_campaign:', document.getElementById('utm_campaign')?.value || 'Not found'); console.log('gclid_adwords:', document.getElementById('gclid_adwords')?.value || 'Not found'); console.log('utm_source_raw:', document.getElementById('utm_source_raw')?.value || 'Not found'); console.log('gclid_raw:', document.getElementById('gclid_raw')?.value || 'Not found'); console.log('landing_page_raw:', document.getElementById('landing_page_raw')?.value || 'Not found'); // Verify all tracking fields exist var requiredFields = ['utm_source_raw', 'utm_medium_raw', 'utm_campaign_raw', 'gclid_raw', 'landing_page_raw', 'referrer_raw']; var missingFields = []; requiredFields.forEach(function(fieldId) { if (!document.getElementById(fieldId)) { missingFields.push(fieldId); } }); if (missingFields.length > 0) { console.warn('⚠️ Missing tracking fields:', missingFields); console.warn('💡 utm-tracker.js should auto-add these fields. Check if script loaded correctly.'); } else { console.log('✅ All tracking fields present'); } } console.log('=====================================\n'); } else { console.warn('⚠️ utm-tracker.js not loaded or getA21UtmData() not available'); console.warn('💡 Check if /scripts/utm-tracker.js is accessible'); } }, 2000); // Wait 2 seconds for utm-tracker.js to populate fields }); </script> <!-- 🛡️ reCAPTCHA v3 Script (Anti-Spam Protection) --> <script src="https://www.google.com/recaptcha/api.js?render=6LdmGPMUAAAAAJgipJkJFNkkYXG1PP36t9g_S2Fb"></script> <!-- ========== CSS MODERNO DEL FORMULARIO ========== --> <style> /* Enrollment Form Container */ .enrollment-form { background: linear-gradient(135deg, #4a5565 0%, #3a4555 100%); padding: var(--space-6) var(--space-5); margin-top: var(--space-4); border-radius: var(--radius-xl); max-width: 480px; box-shadow: var(--shadow-xl); } @media (max-width: 725px) { .enrollment-form { margin: var(--space-4) auto; } } /* Form Header */ .form-header { margin-bottom: var(--space-5); } .form-tagline { color: var(--color-white); font-size: var(--font-size-lg); font-weight: var(--font-weight-medium); text-align: center; margin: 0; line-height: var(--line-height-relaxed); } .form-tagline strong { color: #ffd700; font-weight: var(--font-weight-bold); } /* Form Fields */ .form-fields { margin-bottom: var(--space-6); } .enrollment-form .form-group { margin-bottom: var(--space-4); } .enrollment-form label { display: block; color: var(--color-white); font-weight: var(--font-weight-medium); font-size: var(--font-size-base); margin-bottom: var(--space-2); } /* Input Styling */ .enrollment-form .input, .enrollment-form input[type="text"], .enrollment-form input[type="email"], .enrollment-form input[type="tel"], .enrollment-form select { width: 100%; max-width: 100%; background-color: #353f4d; color: #e5e7eb; border: 1px solid #4a5565; border-radius: var(--radius-md); padding: var(--space-3) var(--space-4); font-size: var(--font-size-base); line-height: var(--line-height-normal); box-shadow: inset 0px 2px 4px rgba(0, 0, 0, 0.2); transition: all var(--transition-base); box-sizing: border-box; /* Incluir padding y border en el width */ } .enrollment-form .input:focus, .enrollment-form input:focus, .enrollment-form select:focus { outline: none; border-color: var(--color-primary-500); background-color: #3a4555; box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.2), inset 0px 2px 4px rgba(0, 0, 0, 0.2); } .enrollment-form .input::placeholder, .enrollment-form input::placeholder { color: #9ca3af; font-size: var(--font-size-base); } /* Payment Select (multiple) */ .payment-select { padding: var(--space-2); } .payment-select option { padding: var(--space-2); border-radius: var(--radius-sm); margin-bottom: var(--space-1); } /* Payment Info */ .payment-info { margin-top: var(--space-4); padding: var(--space-4); background: rgba(255, 255, 255, 0.1); border-radius: var(--radius-md); color: var(--color-white); text-align: center; } .payment-info.hidden { display: none; } .payment-info-text { margin-bottom: var(--space-3); font-size: var(--font-size-sm); line-height: var(--line-height-relaxed); } .payment-info-images { display: flex; flex-direction: column; gap: var(--space-3); align-items: center; } .payment-info-images img { max-width: 280px; width: 80%; height: auto; border-radius: var(--radius-sm); } /* Form Submit */ .form-submit { margin-top: var(--space-6); } .enrollment-form #btninscrip { width: 100%; max-width: 100%; padding: var(--space-4) var(--space-6); font-size: var(--font-size-lg); font-weight: var(--font-weight-bold); text-transform: none; background: linear-gradient(180deg, #ff9b3f 0%, #fd8c27 30%, #ff7800 65%, #d9534f 100%); border: none; border-radius: var(--radius-lg); box-shadow: 0 5px 0 #a54e00, var(--shadow-lg); transition: all var(--transition-base); position: relative; overflow: hidden; } .enrollment-form #btninscrip:hover { transform: translateY(-2px); box-shadow: 0 7px 0 #a54e00, var(--shadow-xl); } .enrollment-form #btninscrip:active { transform: translateY(2px); box-shadow: 0 3px 0 #a54e00, var(--shadow-md); } /* Shimmer effect */ .enrollment-form #btninscrip::before { content: ''; position: absolute; top: 0; left: -100%; width: 100%; height: 100%; background: linear-gradient(90deg, transparent, rgba(255, 255, 255, 0.3), transparent); transition: left var(--transition-slow); } .enrollment-form #btninscrip:hover::before { left: 100%; } /* Form Disclaimer */ .form-disclaimer { margin-top: var(--space-4); text-align: center; color: var(--color-white); font-size: 13.5px; line-height: var(--line-height-relaxed); } .form-disclaimer strong { color: #ffd700; font-weight: var(--font-weight-bold); } /* Responsive */ @media (max-width: 450px) { .enrollment-form { padding: var(--space-5) var(--space-4); } .enrollment-form #btninscrip { font-size: var(--font-size-base); } .payment-info-images img { width: 90%; } } /* Loading state */ .enrollment-form #btninscrip.loading { opacity: 0.7; cursor: not-allowed; pointer-events: none; } .enrollment-form #btninscrip.loading::after { content: ""; position: absolute; width: 20px; height: 20px; top: 50%; left: 50%; margin-left: -10px; margin-top: -10px; border: 3px solid transparent; border-top-color: currentColor; border-radius: var(--radius-full); animation: btn-spin 0.6s linear infinite; } @keyframes btn-spin { to { transform: rotate(360deg); } } .nivel-selector-container select:hover { transform: translateY(-2px); box-shadow: 0 4px 15px rgba(102, 126, 234, 0.4); } .nivel-selector-container select:focus { outline: none; box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.3); } .nivel-selector-container select option { background: white; color: #333; padding: 10px; } </style> <!-- ========== JAVASCRIPT (SIN CAMBIOS) ========== --> <script> // Country selector will be properly initialized in $(document).ready() // Function to update payment options based on country (using xpreciosunbounce.js logic) function cargarcbfpago() { var selectedCountry = $("select#cbpais").val(); originalConsoleLog("💳 Updating payment options for country: " + selectedCountry); // Update global country variable if it exists if (typeof spais !== 'undefined') { spais = selectedCountry; } // Clear current payment options $('#fpago').find('option').remove().end(); // Get country-specific payment methods from xpreciosunbounce.js arrays if (typeof smpagosArr !== 'undefined' && smpagosArr.length > 0 && smpagosArr[0] && smpagosArr[0].length > 0) { // Use existing payment arrays from xpreciosunbounce.js for (var ii = 0; ii < smpagosArr[0].length; ii++) { var smpa = smpagosArr[0][ii]; var mpplargo = getdatampago(smpa, "mpplargo"); $("#fpago").append("<option value='" + smpa + "'>" + mpplargo + "</option>"); } $('#fpago').val(smpagosArr[0][0]); originalConsoleLog("✓ Loaded " + smpagosArr[0].length + " payment methods from xpreciosunbounce.js"); } else { // Fallback: Add default payment options based on country addDefaultPaymentOptions(selectedCountry); originalConsoleLog("⚠️ xpreciosunbounce.js arrays not ready, using fallback payment options for " + selectedCountry); } // Payment select stays as standard dropdown (size=1) // Recalculate installments if function exists if (typeof recalcularCuotas === 'function') { recalcularCuotas(); } // Update course variables if function exists if (typeof setvariables_curso === 'function') { setvariables_curso(); } } // Function to add default payment options when xpreciosunbounce.js arrays are not available function addDefaultPaymentOptions(country) { switch(country) { case 'BR': $("#fpago").append("<option value='dlg'>DLocalGo (Cartão, Boleto, Pix)</option>"); break; case 'AR': $("#fpago").append("<option value='mlar'>Mercado Pago: 6 cuotas sin inter\u00e9s con tarjeta</option>"); $("#fpago").append("<option value='depar'>Transferencia Bancaria: 25% de descuento (CBU/CVU/Alias)</option>"); break; case 'MX': $("#fpago").append("<option value='payumx'>PayU Mexico</option>"); $("#fpago").append("<option value='depmx'>Deposito HSBC</option>"); break; case 'CO': $("#fpago").append("<option value='dlg'>Tarjetas, PSE y Bancolombia (DLocalGo en COP)</option>"); $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); break; case 'CL': $("#fpago").append("<option value='dlg'>Webpay, Transbank y Tarjetas (DLocalGo en CLP)</option>"); $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); break; case 'UY': $("#fpago").append("<option value='dlg'>Abitab, Redpagos y Tarjetas (DLocalGo en UYU)</option>"); $("#fpago").append("<option value='depuy'>Depósito / Transferencia BROU (Banco República)</option>"); $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); break; case 'PY': $("#fpago").append("<option value='dlg'>Tarjetas y Bancard (DLocalGo en Guaran\u00edes)</option>"); $("#fpago").append("<option value='deppy'>Transferencia Bancaria SIPAP (Bancop / Ita\u00fa en Gs.)</option>"); $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); break; case 'BO': $("#fpago").append("<option value='dlg'>Tarjetas de Cr\u00e9dito / D\u00e9bito (DLocalGo en Bs.)</option>"); $("#fpago").append("<option value='depbo'>Transferencia Bancaria / QR Simple (Bco. Ganadero / Uni\u00f3n / BCP en Bs.)</option>"); $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); break; case 'PA': $("#fpago").append("<option value='dlg'>Tarjetas de Cr\u00e9dito y D\u00e9bito (DLocalGo en USD)</option>"); $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); break; case 'GT': $("#fpago").append("<option value='dlg'>Tarjetas de Cr\u00e9dito / D\u00e9bito (DLocalGo en Quetzales)</option>"); $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); $("#fpago").append("<option value='wu'>Western Union (Efectivo)</option>"); break; case 'CR': $("#fpago").append("<option value='dlg'>Tarjetas de Cr\u00e9dito / D\u00e9bito (DLocalGo en Colones)</option>"); $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); $("#fpago").append("<option value='wu'>Western Union (Efectivo)</option>"); break; case 'SV': case 'HN': case 'NI': case 'DO': $("#fpago").append("<option value='dlg'>Tarjetas de Cr\u00e9dito y D\u00e9bito (DLocalGo en USD)</option>"); $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); $("#fpago").append("<option value='wu'>Western Union (Efectivo)</option>"); break; case 'PE': $("#fpago").append("<option value='payupe'>PayU Peru</option>"); $("#fpago").append("<option value='deppe'>Deposito Interbank</option>"); break; case 'VE': $("#fpago").append("<option value='depve'>Depósito BDV / Mercantil / BBVA</option>"); break; case 'ES': $("#fpago").append("<option value='depes'>Deposito La Caixa</option>"); $("#fpago").append("<option value='paypal'>PayPal</option>"); break; case 'US': case 'XT': case 'not': default: $("#fpago").append("<option value='paypal'>PayPal / Tarjetas Internacionales (USD)</option>"); $("#fpago").append("<option value='dlg'>Tarjetas de Crédito y Débito (DLocalGo en USD)</option>"); $("#fpago").append("<option value='wu'>Western Union (Efectivo)</option>"); } } // Function to sync cbpais with pais2 (if it exists) function syncCountrySelectors() { var cbpaisValue = $("select#cbpais").val(); var pais2Element = $("#pais2"); if (pais2Element.length > 0) { pais2Element.val(cbpaisValue); pais2Element.prop('value', cbpaisValue); originalConsoleLog("🔄 Synced pais2 with select#cbpais: " + cbpaisValue); // Trigger change event on pais2 to ensure any other listeners are notified pais2Element.trigger('change'); } } // Function to sync pais2 with cbpais (if it exists) function syncFromPais2() { var pais2Value = $("#pais2").val(); var cbpaisElement = $("select#cbpais"); if (cbpaisElement.length > 0) { cbpaisElement.val(pais2Value); cbpaisElement.prop('value', pais2Value); originalConsoleLog("🔄 Synced select#cbpais with pais2: " + pais2Value); // Trigger change event on cbpais to ensure any other listeners are notified cbpaisElement.trigger('change'); } } // Event handler for cbpais change function handleCbpaisChange() { var cbpaisValue = $("select#cbpais").val(); originalConsoleLog("🌍 select#cbpais CHANGED → " + cbpaisValue); // Temporarily remove pais2 event listener to prevent infinite loop $("#pais2").off('change', handlePais2Change); // Sync pais2 with cbpais value var pais2Select = $("#pais2"); if (pais2Select.length > 0) { pais2Select.val(cbpaisValue); // Also set via DOM property for select elements pais2Select.prop('value', cbpaisValue); // Verify the value was set var actualValue = pais2Select.val(); originalConsoleLog("🔄 Synced pais2 → " + cbpaisValue + " (actual: " + actualValue + ")"); // Check if option exists in pais2 var optionExists = pais2Select.find('option[value="' + cbpaisValue + '"]').length > 0; if (!optionExists) { originalConsoleLog("⚠️ Option '" + cbpaisValue + "' not found in pais2"); } } // Re-attach pais2 event listener $("#pais2").on('change', handlePais2Change); // Update global paisbase variable if it exists if (typeof paisbase !== 'undefined') { paisbase = cbpaisValue; } // Update payment options (fpago) cargarcbfpago(); // Update installments (fcuotas) - trigger fpago change to recalculate if ($("#fpago").length > 0) { originalConsoleLog("💳 Triggering fpago change to update cuotas"); $("#fpago").trigger('change'); } // Also call recalcularCuotas directly if available if (typeof recalcularCuotas === 'function') { originalConsoleLog("🔢 Recalculating cuotas"); recalcularCuotas(); } } // Event handler for pais2 change function handlePais2Change() { var pais2Value = $("#pais2").val(); originalConsoleLog("🌍 pais2 CHANGED → " + pais2Value); // Temporarily remove cbpais event listener to prevent infinite loop $("select#cbpais").off('change', handleCbpaisChange); // Sync cbpais select with pais2 value var cbpaisSelect = $("select#cbpais"); if (cbpaisSelect.length > 0) { cbpaisSelect.val(pais2Value); // Also set via DOM property for select elements cbpaisSelect.prop('value', pais2Value); // Verify the value was set var actualValue = cbpaisSelect.val(); originalConsoleLog("🔄 Synced select#cbpais → " + pais2Value + " (actual: " + actualValue + ")"); // Check if option exists var optionExists = cbpaisSelect.find('option[value="' + pais2Value + '"]').length > 0; if (!optionExists) { originalConsoleLog("⚠️ Option '" + pais2Value + "' not found in select#cbpais"); } } else { originalConsoleLog("❌ select#cbpais not found!"); } // Re-attach cbpais event listener $("select#cbpais").on('change', handleCbpaisChange); // Update global paisbase variable if it exists if (typeof paisbase !== 'undefined') { paisbase = pais2Value; } // Update payment options (fpago) cargarcbfpago(); // Update installments (fcuotas) - trigger fpago change to recalculate if ($("#fpago").length > 0) { originalConsoleLog("💳 Triggering fpago change to update cuotas"); $("#fpago").trigger('change'); } // Also call recalcularCuotas directly if available if (typeof recalcularCuotas === 'function') { originalConsoleLog("🔢 Recalculating cuotas"); recalcularCuotas(); } } // Silence excessive debug logs from xpreciosunbounce.js var originalConsoleLog = console.log; console.log = function() { var message = Array.prototype.slice.call(arguments).join(' '); // Comprehensive filter for xpreciosunbounce.js verbose output var suppressPatterns = [ 'preciousd:', 'preciomxn:', 'setvc_spais:', 'aqui', 'fcuotas(rc):', 'fcuotas(rc2):', 'mpagoelegido::', 'pais2 change event:', 'pais change event:', 'pais_default:', 'param=', 'jquery ready.', // Filter price formatting patterns (currency symbols + numbers) /^(Kz|Bs\.?|\$|u\$d|€|€|Q|L|C\$|S\/\.|RD\$|₲|₡|R\$) [\d.,]+$/, // Filter repeated price calculations /^\$ \d{1,3}(\.\d{3})*$/, /^Bs [\d.,]+$/, /^Kz [\d.,]+$/, /^u\$d [\d.,]+$/, /^R\$ [\d.,]+$/ ]; // Check if message should be suppressed var shouldSuppress = suppressPatterns.some(function(pattern) { if (typeof pattern === 'string') { return message.includes(pattern); } else if (pattern instanceof RegExp) { return pattern.test(message.trim()); } return false; }); if (shouldSuppress) { return; // Suppress verbose logs } // Allow important logs and our custom logs originalConsoleLog.apply(console, arguments); }; // Initialize event listeners when DOM is ready // jQuery loads with defer — it IS available when DOMContentLoaded fires document.addEventListener('DOMContentLoaded', function() { if (typeof $ !== 'undefined') { // Add change event listener to cbpais (will be called after xpreciosunbounce.js bind2pais) // Using setTimeout to ensure we attach after other libraries setTimeout(function() { $("select#cbpais").on('change', handleCbpaisChange); originalConsoleLog("✓ select#cbpais event listener attached"); }, 100); // Add change event listener to pais2 if it exists if ($("#pais2").length > 0) { setTimeout(function() { $("#pais2").on('change', handlePais2Change); originalConsoleLog("✓ pais2 element found and event listener attached"); }, 100); } else { originalConsoleLog("ℹ pais2 element not found on this page"); } // Test cbpais detection and synchronize on startup var cbpaisSelect = $("select#cbpais"); var cbpaisValue = cbpaisSelect.val(); var pais2Value = $("#pais2").length > 0 ? $("#pais2").val() : null; originalConsoleLog("🔍 select#cbpais current value: '" + cbpaisValue + "' (element found: " + (cbpaisSelect.length > 0) + ")"); if ($("#pais2").length > 0) { originalConsoleLog("🔍 pais2 current value: '" + pais2Value + "'"); // Synchronize on startup - always keep them in sync if (pais2Value && pais2Value !== '' && pais2Value !== cbpaisValue) { cbpaisSelect.val(pais2Value); cbpaisSelect.prop('value', pais2Value); originalConsoleLog("🔄 Initial sync: select#cbpais ← pais2 (" + pais2Value + ")"); } else if (cbpaisValue && cbpaisValue !== '' && cbpaisValue !== pais2Value) { $("#pais2").val(cbpaisValue); $("#pais2").prop('value', cbpaisValue); originalConsoleLog("🔄 Initial sync: pais2 ← select#cbpais (" + cbpaisValue + ")"); } // Periodic sync check every 500ms to ensure they stay synchronized setInterval(function() { var currentCbpais = $("select#cbpais").val(); var currentPais2 = $("#pais2").val(); if (currentCbpais !== currentPais2) { // pais2 is typically set by xpreciosunbounce.js first, so prioritize it if (currentPais2 && currentPais2 !== '') { $("select#cbpais").val(currentPais2); originalConsoleLog("🔄 Auto-sync: cbpais ← pais2 (" + currentPais2 + ")"); } else if (currentCbpais && currentCbpais !== '') { $("#pais2").val(currentCbpais); originalConsoleLog("🔄 Auto-sync: pais2 ← cbpais (" + currentCbpais + ")"); } } }, 500); } // Initialize payment options for current country if (typeof setvariables_curso === 'function') { // If xpreciosunbounce.js is loaded, ensure country is set from domain first originalConsoleLog("ℹ Initializing with xpreciosunbounce.js..."); // Call setpais_urlparam() to check URL params and set default from domain if (typeof setpais_urlparam === 'function') { setpais_urlparam(); } else if (typeof setpais_selecteddefault === 'function') { setpais_selecteddefault(); } // Now call setvariables_curso with the correct paisbase setvariables_curso(); } else { // Otherwise use fallback originalConsoleLog("ℹ xpreciosunbounce.js not available, using fallback"); cargarcbfpago(); } originalConsoleLog("✓ Country selector synchronization initialized"); } // End of jQuery check }); // End of DOMContentLoaded // Wait for xpreciosunbounce.js to load if not already loaded if (typeof waitForJQuery !== 'undefined') { originalConsoleLog("✓ xpreciosunbounce.js integration detected"); } else { originalConsoleLog("ℹ Using fallback payment options"); } // ========== FIX: Show inscription button when page loads (for back button) ========== document.addEventListener('DOMContentLoaded', function() { // jQuery is available here (deferred scripts run before DOMContentLoaded) $('#btninscrip').show(); }); // Also handle pageshow event (better for back button in some browsers) window.addEventListener('pageshow', function(event) { // If page was loaded from cache (back button) if (event.persisted || (window.performance && window.performance.navigation.type === 2)) { if (typeof $ !== 'undefined') { $('#btninscrip').show(); } else { var btn = document.getElementById('btninscrip'); if (btn) btn.style.display = ''; } } }); </script> <!-- ============================================ --> <!-- CRO: Progress steps, validation, email typo --> <!-- ============================================ --> <style> /* Progress Steps */ .checkout-steps { display: flex; align-items: center; justify-content: center; margin-bottom: 20px; padding: 8px 0 16px; border-bottom: 1px solid rgba(255,255,255,0.08); } .cro-step { display: flex; flex-direction: column; align-items: center; gap: 4px; } .cro-step-num { width: 30px; height: 30px; border-radius: 50%; background: rgba(255,255,255,0.12); color: rgba(255,255,255,0.4); display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 13px; transition: all 0.3s ease; } .cro-step.active .cro-step-num { background: #e3803e; color: #fff; box-shadow: 0 2px 8px rgba(227,128,62,0.4); } .cro-step.completed .cro-step-num { background: #4ade80; color: #fff; } .cro-step-label { font-size: 11px; color: rgba(255,255,255,0.4); text-transform: uppercase; letter-spacing: 0.5px; } .cro-step.active .cro-step-label { color: rgba(255,255,255,0.9); font-weight: 600; } .cro-step.completed .cro-step-label { color: rgba(255,255,255,0.6); } .cro-step-line { width: 36px; height: 2px; background: rgba(255,255,255,0.12); margin: 0 8px; margin-bottom: 18px; } /* Inline validation errors */ .field-error { display: block; color: #fca5a5; font-size: 12px; margin-top: 4px; padding-left: 2px; } .input.error { border-color: #ef4444 !important; } .input.valid { border-color: #4ade80 !important; } /* Email typo hint */ #email-typo-hint { font-size: 12px; color: #fbbf24; margin-top: 4px; cursor: pointer; } #email-typo-hint:hover { text-decoration: underline; } </style> <script> // ============================================ // CRO 2.1: jQuery Validate inline config // ============================================ document.addEventListener('DOMContentLoaded', function() { if (typeof $.fn.validate === 'function') { $('#form1').validate({ rules: { realname: { required: true, minlength: 3 }, email: { required: true, email: true } }, messages: { realname: { required: 'Ingresa tu nombre completo', minlength: 'El nombre debe tener al menos 3 caracteres' }, email: { required: 'Ingresa tu email', email: 'El formato del email no es v\u00e1lido (ej: nombre@gmail.com)' } }, errorElement: 'span', errorClass: 'field-error', validClass: 'valid', errorPlacement: function(error, element) { error.insertAfter(element); }, highlight: function(element) { $(element).addClass('error').removeClass('valid'); }, unhighlight: function(element) { $(element).removeClass('error').addClass('valid'); } }); } // ============================================ // CRO 2.3: Email typo detection // ============================================ var emailField = document.getElementById('email'); if (emailField) { emailField.addEventListener('blur', function() { var val = this.value.trim(); var parts = val.split('@'); if (parts.length !== 2 || !parts[1]) return; var domain = parts[1].toLowerCase(); var fixes = { 'gmial.com':'gmail.com','gmal.com':'gmail.com','gmai.com':'gmail.com', 'gamil.com':'gmail.com','gnail.com':'gmail.com','gmail.co':'gmail.com', 'hotmal.com':'hotmail.com','hotmial.com':'hotmail.com','hotmil.com':'hotmail.com', 'hotmail.co':'hotmail.com','hotamil.com':'hotmail.com', 'yahooo.com':'yahoo.com','yaho.com':'yahoo.com','yaoo.com':'yahoo.com', 'outlok.com':'outlook.com','outloo.com':'outlook.com','outloock.com':'outlook.com', 'outlook.co':'outlook.com' }; var suggestion = fixes[domain]; var existing = document.getElementById('email-typo-hint'); if (existing) existing.remove(); if (suggestion) { var corrected = parts[0] + '@' + suggestion; var hint = document.createElement('div'); hint.id = 'email-typo-hint'; // Safe DOM construction - corrected email is derived from user input + known-safe domain var questionMark = document.createTextNode('\u00bfQuisiste decir '); var strong = document.createElement('strong'); strong.textContent = corrected; var questionEnd = document.createTextNode('?'); hint.appendChild(questionMark); hint.appendChild(strong); hint.appendChild(questionEnd); hint.onclick = function() { emailField.value = corrected; hint.remove(); $(emailField).removeClass('error').addClass('valid'); }; emailField.parentNode.appendChild(hint); } }); } // ============================================ // CRO 3.3: GA4 field-level analytics // ============================================ if (typeof gtag !== 'undefined') { var formFields = document.querySelectorAll('#form1 input:not([type=hidden]), #form1 select'); var trackedFocus = {}; formFields.forEach(function(el) { var fieldName = el.name || el.id || 'unknown'; el.addEventListener('focus', function() { if (!trackedFocus[fieldName]) { trackedFocus[fieldName] = true; gtag('event', 'form_field_focus', { field_name: fieldName, form_id: 'inscription_form' }); } }); el.addEventListener('blur', function() { if (this.value && this.value.trim() !== '') { gtag('event', 'form_field_complete', { field_name: fieldName, form_id: 'inscription_form' }); } }); }); // Form abandonment tracking var formStarted = false; document.querySelectorAll('#form1 input:not([type=hidden])').forEach(function(el) { el.addEventListener('input', function() { formStarted = true; }, { once: true }); }); window.addEventListener('beforeunload', function() { if (formStarted) { gtag('event', 'form_abandonment', { form_id: 'inscription_form', last_field: document.activeElement ? (document.activeElement.name || document.activeElement.id || '') : '' }); } }); } }); </script> </div> </div> <!-- xfi --> </div> <!-- row --> </div> <!-- container --> <div class="pb-40"></div> <div class="pb-20"></div> <div class="container-fluid"><div class="row"><div class="extra-content-localized" data-codcurso="ESEO"> <h3>Por qué el Experto en SEO Semántico de Aprender21 es Relevante en 2026</h3> <p>El panorama digital evoluciona a una velocidad vertiginosa, y con él, la disciplina del SEO. En 2026, la optimización para motores de búsqueda ya no se trata solo de palabras clave, sino de <strong>entender la intención del usuario</strong>, el contexto y la semántica detrás de cada consulta. Nuestro programa Experto en SEO Semántico Online no es solo un curso; es una inmersión profunda en las estrategias más avanzadas que garantizan la visibilidad y el éxito en el entorno digital actual y futuro.</p> <p>La inteligencia artificial y el aprendizaje automático están redefiniendo cómo los motores de búsqueda interpretan y clasifican el contenido. Los profesionales necesitan ir más allá de las tácticas básicas y dominar la optimización para la búsqueda conversacional, la comprensión del lenguaje natural (NPL) y la construcción de autoridad y confiabilidad (E-E-A-T). Este experto está diseñado para equiparte con el conocimiento y las herramientas necesarias para navegar estos cambios, asegurando que tus estrategias SEO sean no solo efectivas hoy, sino también <em>resilientes</em> y <em>adaptativas</em> para los desafíos de mañana. La demanda de especialistas capaces de integrar la semántica en sus estrategias es cada vez mayor en el mercado laboral global, posicionándote como un activo invaluable para cualquier organización con presencia online.</p> <h3>Habilidades Clave que se Desarrollan en el Experto en SEO Semántico</h3> <p>El programa de Experto en SEO Semántico Online de Aprender21 ha sido meticulosamente diseñado para cultivar un conjunto de habilidades avanzadas y altamente demandadas en la industria. Al finalizar este curso, dominarás:</p> <ul> <li><strong>Investigación de Palabras Clave y Temas con Enfoque Semántico:</strong> Más allá de las palabras clave individuales, aprenderás a identificar clústeres de temas, entender la intención subyacente del usuario y mapear el contenido para cubrir el espectro semántico completo.</li> <li><strong>Optimización On-Page Avanzada:</strong> Dominarás la arquitectura de la información, el marcado de datos estructurados (Schema.org), la optimización de la experiencia de usuario (UX) para SEO y la creación de contenido que satisface tanto a los motores de búsqueda como a los usuarios.</li> <li><strong>SEO Técnico para Grandes Sitios y Proyectos Complejos:</strong> Profundizarás en la rastreabilidad, indexación, Core Web Vitals, optimización para dispositivos móviles y resolución de problemas técnicos que afectan el rendimiento en búsqueda.</li> <li><strong>Estrategias de Link Building y Construcción de Autoridad:</strong> Desarrollarás tácticas éticas y efectivas para construir un perfil de enlaces fuerte y mejorar la autoridad de dominio, un factor crítico para el ranking.</li> <li><strong>SEO para Búsqueda por Voz e Inteligencia Artificial:</strong> Entenderás cómo optimizar el contenido para las nuevas formas de interacción con los motores de búsqueda, incluyendo asistentes de voz y resultados generados por IA.</li> <li><strong>Análisis de Datos y Reporting SEO:</strong> Aprenderás a interpretar métricas, identificar oportunidades, realizar auditorías SEO exhaustivas y presentar resultados claros y accionables a stakeholders.</li> <li><strong>Creación de Contenido de Alta Calidad y E-E-A-T:</strong> Implementarás metodologías para producir contenido que demuestre Experiencia, Expertise, Autoridad y Confiabilidad, factores esenciales para el éxito en el algoritmo actual.</li> <li><strong>SEO Internacional y Local:</strong> Adquirirás las habilidades para optimizar sitios web para diferentes mercados geográficos y audiencias, respetando las particularidades culturales y lingüísticas.</li> </ul> <p>Estas competencias te prepararán para enfrentar los retos del SEO moderno con una visión estratégica y un enfoque técnico robusto.</p> <h3>Salida Laboral en el Mercado Hispanohablante para Especialistas en SEO Semántico</h3> <p>La demanda de profesionales con una comprensión profunda del SEO semántico está en constante crecimiento en todo el mercado hispanohablante, abarcando desde España hasta cada rincón de América Latina. Las empresas, independientemente de su tamaño o sector, reconocen la necesidad imperante de tener una presencia online sólida y visible para captar y retener a su audiencia.</p> <p>Los egresados de nuestro programa de Experto en SEO Semántico Online están altamente calificados para desempeñar roles clave en diversas organizaciones. Podrás trabajar como <strong>Especialista SEO</strong>, <strong>Analista SEO</strong>, <strong>Consultor SEO Senior</strong>, <strong>Estratega de Contenidos SEO</strong>, o incluso asumir la dirección de departamentos como <strong>SEO Manager</strong> o <strong>Responsable de Marketing Digital</strong>. La versatilidad de las habilidades adquiridas también te permitirá emprender tu propio camino como <strong>consultor independiente</strong>, ofreciendo tus servicios a múltiples clientes o fundando tu propia agencia digital.</p> <p>Los sectores que más requieren estos perfiles son variados e incluyen: agencias de marketing digital, empresas de comercio electrónico, medios de comunicación online, startups tecnológicas, grandes corporaciones con equipos de marketing internos, y cualquier organización que dependa de la visibilidad orgánica para su negocio. Los profesionales con estas habilidades avanzadas suelen acceder a <em>remuneraciones competitivas</em>, reflejando el valor estratégico que aportan a las empresas. Este experto te abrirá las puertas a un mercado laboral dinámico y en expansión, ofreciéndote múltiples oportunidades de crecimiento profesional y desarrollo.</p> <h3>Herramientas y Software Clave para el Experto en SEO Semántico</h3> <p>El éxito en el SEO semántico moderno no solo reside en la estrategia, sino también en el dominio de las herramientas adecuadas. Nuestro programa de Experto en SEO Semántico te familiarizará con las plataformas más potentes y ampliamente utilizadas en la industria, muchas de ellas desarrolladas por líderes tecnológicos globales. Dominarás el uso de:</p> <ul> <li><strong>Herramientas Esenciales de Google:</strong> <ul> <li><strong>Google Search Console:</strong> Imprescindible para monitorizar el rendimiento de tu sitio en la búsqueda, identificar problemas de indexación y entender cómo Google rastrea tu contenido.</li> <li><strong>Google Analytics:</strong> Fundamental para analizar el comportamiento de los usuarios, medir el tráfico orgánico y evaluar el impacto de tus estrategias SEO en los objetivos de negocio.</li> <li><strong>Google Keyword Planner y Google Trends:</strong> Para la investigación de palabras clave, el descubrimiento de tendencias y la identificación de la estacionalidad en las búsquedas.</li> <li><strong>Google My Business:</strong> Clave para la optimización del SEO local y la gestión de la presencia online de negocios físicos.</li> </ul> </li> <li><strong>Plataformas de Análisis Competitivo y Auditoría SEO:</strong> <ul> <li>Conocerás el funcionamiento de herramientas líderes como Ahrefs, Semrush o Moz, que permiten realizar auditorías completas, análisis de backlinks, investigación de palabras clave avanzadas y monitoreo de competidores. Aunque el curso se enfoca en la metodología, se enseñará cómo aprovechar al máximo los datos que estas herramientas proporcionan para la toma de decisiones estratégicas.</li> </ul> </li> <li><strong>Herramientas para Contenido y Desarrollo:</strong> <ul> <li>Se abordará el uso de sistemas de gestión de contenido (CMS) como <strong>WordPress</strong> y sus plugins esenciales para SEO.</li> <li>Introducción a herramientas para la optimización de contenido y la detección de oportunidades semánticas.</li> <li>Conocimientos básicos sobre cómo utilizar hojas de cálculo (como <strong>Microsoft Excel</strong> o Google Sheets) para la organización de datos, reporting y análisis SEO.</li> </ul> </li> </ul> <p>El enfoque del curso es que no solo sepas "usar" una herramienta, sino que entiendas la lógica detrás de cada función y cómo integrar los datos obtenidos en una estrategia SEO semántica coherente y efectiva. Este dominio te convertirá en un profesional autosuficiente y altamente adaptable a cualquier entorno de trabajo.</p> <h3>Comparativa con Otros Expertos del Sector: La Ventaja de la Semántica</h3> <p>En un mercado saturado de formaciones en SEO, el Experto en SEO Semántico Online de Aprender21 se distingue por su enfoque innovador y su alineación con las tendencias más avanzadas de los motores de búsqueda. A diferencia de muchos otros programas que se centran en tácticas más tradicionales o en la optimización por palabras clave aisladas, nuestro experto profundiza en la <strong>comprensión y aplicación de la semántica</strong> como pilar fundamental de cualquier estrategia SEO exitosa.</p> <p>Mientras que otros cursos pueden ofrecer una visión general del SEO, este programa te lleva a un nivel de especialización que pocos alcanzan. Nos centramos en cómo los algoritmos de IA de Google y otros motores de búsqueda interpretan el significado, la intención y el contexto detrás de las consultas, preparando a nuestros estudiantes para construir arquitecturas de contenido que son no solo relevantes, sino también <em>autoritarias</em> y <em>confiables</em> (E-E-A-T).</p> <p>Nuestra metodología, respaldada por la <strong>Certificación UTN</strong>, asegura una base académica sólida junto con una orientación eminentemente práctica. El currículo se actualiza constantemente para reflejar los últimos cambios en los algoritmos y las mejores prácticas del sector, superando a programas con contenidos obsoletos. Además, la modalidad online ofrece una flexibilidad inigualable, permitiendo a profesionales de todo el mundo hispanohablante acceder a una formación de alta calidad sin barreras geográficas, algo que no todos los expertos del sector pueden ofrecer con el mismo nivel de prestigio y rigor académico. Elegir este experto significa invertir en una visión de futuro para tu carrera en SEO.</p> <h3>Certificación y Reconocimiento Profesional del Experto en SEO Semántico</h3> <p>La obtención de un título profesional es un factor determinante para el avance y reconocimiento en el mercado laboral. Al completar exitosamente el programa, los estudiantes reciben la <strong>Certificación de Experto en SEO Semántico Online</strong>, un título otorgado por la <em>Universidad Tecnológica Nacional (UTN)</em>, a través de su Secretaría de Cultura y Extensión Universitaria, y gestionado por Aprender21.</p> <p>Esta certificación posee un valor inmenso por varias razones:</p> <ul> <li><strong>Prestigio Académico:</strong> La UTN es una institución educativa de renombre internacional, especialmente reconocida por su excelencia en formación técnica y tecnológica. Su aval confiere a tu título una credibilidad y un reconocimiento que te diferenciarán significativamente en cualquier proceso de selección o emprendimiento.</li> <li><strong>Reconocimiento Internacional:</strong> Dada la reputación de la UTN, la certificación tiene un peso considerable en todo el mercado hispanohablante y más allá. Esto facilita la movilidad profesional y abre puertas a oportunidades laborales tanto a nivel local como internacional.</li> <li><strong>Validación de Competencias:</strong> El título no es solo un papel; es la validación formal de que posees las habilidades y conocimientos avanzados necesarios para desempeñarte como un especialista en SEO semántico de alto nivel, capaz de diseñar y ejecutar estrategias complejas y efectivas.</li> <li><strong>Impacto en tu Carrera:</strong> Tener una certificación de este calibre en tu currículum vitae y perfil de LinkedIn no solo mejora tu atractivo para los empleadores, sino que también puede traducirse en mejores oportunidades laborales, roles de mayor responsabilidad y <em>salarios competitivos</em>. Demuestra tu compromiso con la excelencia y tu capacidad para mantenerte al día en un campo en constante evolución.</li> </ul> <p>Esta certificación es una inversión en tu futuro profesional, garantizando que tu expertise en SEO semántico sea reconocido y valorado globalmente.</p> <h3>Próximos Pasos Después de Completar el Experto en SEO Semántico</h3> <p>Felicidades, has completado tu formación como Experto en SEO Semántico Online. Ahora, ¿qué sigue? El camino que se abre ante ti está lleno de oportunidades y nuestro objetivo es que sepas cómo capitalizarlas al máximo. Aquí te presentamos los próximos pasos clave:</p> <ul> <li><strong>Aplicación Inmediata al Mercado Laboral:</strong> <ul> <li><strong>Optimiza tu CV y Perfil de LinkedIn:</strong> Actualiza tus plataformas profesionales destacando la Certificación UTN en SEO Semántico, las habilidades clave adquiridas y los proyectos en los que trabajaste durante el curso.</li> <li><strong>Búsqueda Activa de Empleo:</strong> Postúlate a roles de especialista, analista o consultor SEO en agencias de marketing digital, empresas de tecnología, e-commerce o departamentos de marketing de grandes corporaciones en el mercado hispanohablante.</li> <li><strong>Prepara un Portafolio Sólido:</strong> Recopila tus mejores trabajos, estudios de caso y resultados obtenidos durante la formación para demostrar tu capacidad práctica a potenciales empleadores o clientes.</li> </ul> </li> <li><strong>Desarrollo como Freelancer o Emprendedor:</strong> <ul> <li><strong>Ofrece Servicios de Consultoría SEO:</strong> Utiliza tu conocimiento para ayudar a pequeñas y medianas empresas a mejorar su visibilidad online, construyendo tu propia cartera de clientes.</li> <li><strong>Funda tu Propia Agencia Digital:</strong> Si tienes ambición empresarial, este experto te proporciona la base para lanzar tu propia agencia especializada en SEO semántico y marketing digital.</li> </ul> </li> <li><strong>Especialización y Formación Continua:</strong> <ul> <li>El SEO es un campo en constante cambio. Mantente actualizado con las últimas noticias de la industria, sigue a expertos y considera futuras especializaciones en áreas como CRO (Optimización de Tasa de Conversión), SEO para video, SEO Internacional avanzado o análisis de datos complejos.</li> <li>Participa en comunidades online y eventos del sector para expandir tu red de contactos profesionales.</li> </ul> </li> <li><strong>Contribución al Conocimiento:</strong> <ul> <li>Considera la posibilidad de compartir tu expertise a través de blogs, webinars o conferencias, estableciéndote como una autoridad en el campo del SEO semántico.</li> </ul> </li> </ul> <p>Tu certificación UTN te posiciona como un profesional altamente calificado y listo para hacer un impacto significativo en el mundo digital. ¡Es el momento de aplicar todo lo aprendido y construir una carrera exitosa!</p> </div> </div></div> <script type="application/ld+json">{"@context":"https://schema.org","@type":"FAQPage","mainEntity":[{"@type":"Question","name":"¿Cuánto cuesta en total el experto?","acceptedAnswer":{"@type":"Answer","text":"El precio total se muestra en el formulario al final de esta página. No hay costos ocultos: incluye acceso completo al campus virtual, material didáctico, evaluaciones y soporte de tutores. El certificado del Instituto CBTech está incluido. Para certificaciones adicionales (ITSS o UTN), hay un costo de emisión que se abona solo al finalizar si deseas obtenerlo."}},{"@type":"Question","name":"¿Cómo obtengo el certificado?","acceptedAnswer":{"@type":"Answer","text":"Al completar el experto y aprobar las evaluaciones, recibes automáticamente tu certificado digital del Instituto CBTech sin costo adicional. Opcionalmente puedes solicitar el del Instituto Tecnológico Superior Serra (ITSS) o de la Universidad Tecnológica Nacional (UTN) con validez internacional. Todos incluyen código QR verificable."}},{"@type":"Question","name":"¿Cuánto tiempo tengo para completar el experto?","acceptedAnswer":{"@type":"Answer","text":"El plazo máximo es de 12 Meses, pero puedes terminar antes si avanzas más rápido. Estudias a tu propio ritmo con acceso 24/7 al campus virtual, sin horarios fijos."}},{"@type":"Question","name":"¿Puedo trabajar mientras estudio?","acceptedAnswer":{"@type":"Answer","text":"¡Por supuesto! El experto es 100% online y asincónico: no hay clases en vivo obligatorias. Más del 80% de nuestros estudiantes trabajan mientras cursan. Avanzas de noche, los fines de semana o cuando tengas tiempo libre."}},{"@type":"Question","name":"¿El certificado tiene validez internacional?","acceptedAnswer":{"@type":"Answer","text":"Sí. El Instituto Tecnológico Superior Serra tiene sedes en Madrid (España) y México DF. Los certificados incluyen código QR para verificación online, aceptados por empleadores en toda Latinoamérica y España."}},{"@type":"Question","name":"¿Qué salida laboral tiene este experto?","acceptedAnswer":{"@type":"Answer","text":"Nuestros egresados trabajan en empresas, organismos públicos, emprendimientos propios o de forma freelance. Con 64 estudiantes inscriptos y valoración de 4.8/5, somos una referencia en formación profesional online en la región."}}]}</script> <script> // Initialize gtag for Google Ads verification window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); // Google Ads tag configurations (required for Google Ads to verify tags) // AW-1009528171: MOT - Marketing (cuenta principal Argentina) gtag('config', 'AW-1009528171'); // AW-1078220344: EPE account gtag('config', 'AW-1078220344'); // Define default values first var dimension2 = null; var dimension3 = null; var dimension4 = null; // Assign PHP values to JS vars safely dimension2 = "ESEO"; dimension3 = "experto"; dimension4 = "eseo"; dataLayer = [{ 'ualandingv5': 'false', 'UAx': null, 'dimension9': "MX", 'dimension1': "Cursos", 'dimension2': dimension2, 'dimension3': dimension3, 'dimension4': dimension4, 'dimension10': "www.aprender21.mx", 'atf_experiment_variant': "A_classic"}]; </script> <!-- Google Tag Manager --> <script>!function(){"use strict";function l(e){for(var t=e,r=0,n=document.cookie.split(";");r<n.length;r++){var o=n[r].split("=");if(o[0].trim()===t)return o[1]}}function s(e){return localStorage.getItem(e)}function u(e){return window[e]}function A(e,t){e=document.querySelector(e);return t?null==e?void 0:e.getAttribute(t):null==e?void 0:e.textContent}var e=window,t=document,r="script",n="dataLayer",o="https://ss.aprender21.com",a="",i="5qeiwlmdri",c="ejenl2sd=ABZZKjg6RDI%2BOTMuJFEfWFtcVUsIGVQEGQABAwgSG1dYXAcCAQ%3D%3D",g="cookie",v="_ga",E="",d=!1;try{var d=!!g&&(m=navigator.userAgent,!!(m=new RegExp("Version/([0-9._]+)(.*Mobile)?.*Safari.*").exec(m)))&&16.4<=parseFloat(m[1]),f="stapeUserId"===g,I=d&&!f?function(e,t,r){void 0===t&&(t="");var n={cookie:l,localStorage:s,jsVariable:u,cssSelector:A},t=Array.isArray(t)?t:[t];if(e&&n[e])for(var o=n[e],a=0,i=t;a<i.length;a++){var c=i[a],c=r?o(c,r):o(c);if(c)return c}else console.warn("invalid uid source",e)}(g,v,E):void 0;d=d&&(!!I||f)}catch(e){console.error(e)}var m=e,g=(m[n]=m[n]||[],m[n].push({"gtm.start":(new Date).getTime(),event:"gtm.js"}),t.getElementsByTagName(r)[0]),v=I?"&bi="+encodeURIComponent(I):"",E=t.createElement(r),f=(d&&(i=8<i.length?i.replace(/([a-z]{8}$)/,"kp$1"):"kp"+i),!d&&a?a:o);E.async=!0,E.src=f+"/"+i+".js?"+c+v,null!=(e=g.parentNode)&&e.insertBefore(E,g)}();</script> <!-- End Google Tag Manager --> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://ss.aprender21.com/ns.html?id=GTM-WWKWCH" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <script> function gacookie() { var match = document.cookie.match('(?:^|;)\\s*_ga=([^;]*)'); var raw = (match) ? decodeURIComponent(match[1]) : null; if (raw) { match = raw.match(/(\d+\.\d+)$/); } var gacid = (match) ? match[1] : null; if (gacid) { return gacid; } } var inputx = document.getElementById('clientId'); if (gacookie()!==null) { try {inputx.value = gacookie();} catch {} } window.onappinstalled = function(ev) { window.dataLayer.push({ 'event': 'PWAInstalled' }); };</script> <!-- Meta Pixel Code --> <script> !function(f,b,e,v,n,t,s) {if(f.fbq)return;n=f.fbq=function(){n.callMethod? n.callMethod.apply(n,arguments):n.queue.push(arguments)}; if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0'; n.queue=[];t=b.createElement(e);t.async=!0; t.src=v;s=b.getElementsByTagName(e)[0]; s.parentNode.insertBefore(t,s)}(window, document,'script', 'https://connect.facebook.net/en_US/fbevents.js'); fbq('init', '481377705320086'); fbq('track', 'PageView'); </script> <noscript><img height="1" width="1" class="d-none" src="https://www.facebook.com/tr?id=481377705320086&ev=PageView&noscript=1" /></noscript> <!-- End Meta Pixel Code --><style> .header { display: block !important; } </style> <script defer async> document.addEventListener('DOMContentLoaded', function() { window.onscroll = function() { var stop = document.documentElement.scrollTop || document.body.scrollTop; var smax = window.innerHeight; if (stop > smax) { $( "#logobar").css("visibility", "hidden"); $( "#logoicono").css("visibility", "visible"); $( "#menubar").css("margin-top", "0px"); $( "#gplus").addClass("hidden"); $( "#facebookbadge").addClass("hidden"); $( "#menucursos").css("margin-top", "50px"); } else { $( "#logobar").css("visibility", "visible"); $( "#logoicono").css("visibility", "hidden"); $( "#menubar").css("margin-top", "100px"); $( "#gplus").removeClass("hidden"); $( "#facebookbadge").removeClass("hidden"); $( "#menucursos").css("margin-top", "150px"); } }; //window.onscroll }); </script> <noscript id="deferred-styles"> </noscript> <script async> var loadDeferredStyles = function() { var addStylesNode = document.getElementById("deferred-styles"); var replacement = document.createElement("div"); replacement.innerHTML = addStylesNode.textContent; document.body.appendChild(replacement) addStylesNode.parentElement.removeChild(addStylesNode); }; var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; if (raf) raf(function() { window.setTimeout(loadDeferredStyles, 0); }); else window.addEventListener('load', loadDeferredStyles); </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "Organization", "name": "Aprender21", "alternateName": "Aprender21 Educación Certificada", "url": "https://www.aprender21.com", "logo": { "@type": "ImageObject", "url": "https://res.cloudinary.com/aprender21/image/upload/q_auto:low/v1549407102/aprender21/cropped-aprender21_logo.png", "width": 332, "height": 66 }, "sameAs": [ "https://www.facebook.com/aprender21/", "https://www.instagram.com/aprender21ok/", "https://www.youtube.com/c/aprender21", "https://www.linkedin.com/company/aprender21-com/" ] } </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "WebSite", "name": "Aprender21", "url": "https://www.aprender21.com", "publisher": { "@type": "Organization", "name": "Aprender21" } } </script> <!-- ===== SCROLL REVEAL — Aprender21 ===== --> <style> @media (prefers-reduced-motion: no-preference) { .sr { opacity: 0; will-change: opacity, transform; transition: opacity 0.58s cubic-bezier(.25,.46,.45,.94), transform 0.58s cubic-bezier(.25,.46,.45,.94); } .sr.sr-up { transform: translateY(30px); } .sr.sr-left { transform: translateX(-28px); } .sr.sr-right { transform: translateX(28px); } .sr.sr-scale { transform: scale(0.93); } .sr.is-visible { opacity: 1 !important; transform: none !important; will-change: auto; } } </style> <script> (function () { if (!window.IntersectionObserver) return; if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return; var observer = new IntersectionObserver(function (entries) { entries.forEach(function (e) { if (e.isIntersecting) { e.target.classList.add('is-visible'); observer.unobserve(e.target); } }); }, { rootMargin: '-40px 0px -30px 0px', threshold: 0.08 }); function isAboveFold(el) { var r = el.getBoundingClientRect(); return r.top < window.innerHeight * 0.92 && r.bottom > 0; } function reg(el, cls, delay) { if (!el || isAboveFold(el)) return; el.classList.add('sr', cls); if (delay) el.style.transitionDelay = delay + 's'; observer.observe(el); } // Slide pairs: text ↔ image facing each other document.querySelectorAll('.bloquetexto.izquierda').forEach(function (el) { reg(el, 'sr-left'); }); document.querySelectorAll('.bloquetexto.derecha').forEach(function (el) { reg(el, 'sr-right'); }); document.querySelectorAll('.bloqueimagen.derecha').forEach(function (el) { reg(el, 'sr-right', 0.13); }); document.querySelectorAll('.bloqueimagen.izquierda').forEach(function (el){ reg(el, 'sr-left', 0.13); }); // Section headings document.querySelectorAll( '.section-teal-tint h2, .sectiongris h2, .section-warm-white h2, .section-blue-tint h2' ).forEach(function (el) { reg(el, 'sr-up'); }); // CTA punch-in document.querySelectorAll('.fondoceleste .cta').forEach(function (el) { reg(el, 'sr-scale'); }); // Video block document.querySelectorAll('.fondoblanco > .row').forEach(function (el) { reg(el, 'sr-up', 0.05); }); // Staggered lists — grouped by direct parent so delay resets per section function stagger(parentSel, childSel, step) { document.querySelectorAll(parentSel).forEach(function (parent) { parent.querySelectorAll(childSel).forEach(function (child, i) { reg(child, 'sr-up', i * step); }); }); } stagger('.bloquetexto', ':scope > ul > li', 0.07); stagger('.list-group', '.list-group-item', 0.065); stagger('.cta:not(.cta2)', '.btn', 0.09); })(); </script> <!-- ========== STICKY CTA BAR ========== --> <style> .sticky-cta { position: fixed; bottom: 0; left: 0; width: 100%; background: #fffcf0; /* Fondo urgencia muy suave */ box-shadow: 0 -4px 15px rgba(0,0,0,0.12); display: flex; justify-content: space-between; align-items: center; padding: 15px 30px; z-index: 1000; transition: transform 0.3s ease-in-out; transform: translateY(100%); border-top: 2px solid #dfc27d; } .sticky-cta.is-visible { transform: translateY(0); } .sticky-cta.is-hidden { transform: translateY(100%); } .sticky-cta__label { display: block; font-size: 1.2rem; /* +50% de 0.8rem */ color: #c0392b; /* Color urgencia */ text-transform: uppercase; font-weight: 700; margin-bottom: 4px; } .sticky-cta__course { display: block; font-size: 1.5rem; /* +50% de 1.0rem */ font-weight: 700; color: #1a3c6e; line-height: 1.3; } @media (max-width: 767px) { .sticky-cta__price { display: none; } .sticky-cta { justify-content: center; padding: 10px 12px; gap: 10px; max-width: 100vw; box-sizing: border-box; } .sticky-cta img { height: 32px !important; } .sticky-cta .btn-cta { flex: 1; min-width: 0; text-align: center; font-size: 1.6rem !important; padding: 10px 16px !important; white-space: nowrap; } } </style> <div class="sticky-cta is-visible" id="sticky-cta" role="complementary" aria-label="Inscripción rápida"> <img src="https://res.cloudinary.com/aprender21/image/upload/c_scale,q_auto:low,h_50/v1562124139/aprender21/icono_itss.png" alt="Certificado ITSS" style="height:42px;width:auto;flex-shrink:0;opacity:0.92;" loading="lazy"> <img src="https://res.cloudinary.com/aprender21/image/upload/c_scale,q_auto:low,h_50/v1562124139/aprender21/logo-utn.png" alt="Certificado UTN" style="height:42px;width:auto;flex-shrink:0;opacity:0.92;margin-left:6px;" loading="lazy"> <div class="sticky-cta__price"> <span class="sticky-cta__label">Inscríbete hoy</span> <span class="sticky-cta__course">Experto en SEO Semántico - Especialización en Posicionamiento Web Avanzado</span> </div> <a href="#inscripcion" class="btn-cta inscrahora" style="background:#e3803e;color:#fff;padding:12px 30px;border-radius:8px;font-weight:700;font-size:2.1rem;text-decoration:none;white-space:nowrap;box-shadow: 0 4px 10px rgba(227, 128, 62, 0.3);">Inscribirme ahora</a> </div> <script> (function () { var bar = document.getElementById('sticky-cta'); if (!bar || !window.IntersectionObserver) return; document.body.classList.add('has-sticky-cta'); var form = document.getElementById('inscripcion') || document.getElementById('formulario-inscripcion'); if (!form) return; var obs = new IntersectionObserver(function (entries) { entries.forEach(function (e) { if (e.isIntersecting) { bar.classList.remove('is-visible'); bar.classList.add('is-hidden'); } else { bar.classList.remove('is-hidden'); bar.classList.add('is-visible'); } }); }, { threshold: 0.1 }); obs.observe(form); })(); </script> <script> (function () { var btn = document.querySelector('.temario-expand-btn'); if (!btn) return; var wrapper = btn.closest('.temario-wrapper'); var label = btn.querySelector('.temario-expand-label'); var totalTxt = btn.querySelector('.temario-expand-count').textContent; btn.addEventListener('click', function () { var collapsed = wrapper.classList.toggle('temario-collapsed'); btn.setAttribute('aria-expanded', String(!collapsed)); if (collapsed) { label.textContent = 'Ver programa completo'; btn.querySelector('.temario-expand-count').textContent = totalTxt; var top = wrapper.getBoundingClientRect().top + window.pageYOffset - 90; window.scrollTo({ top: top, behavior: 'smooth' }); } else { label.textContent = 'Cerrar programa'; btn.querySelector('.temario-expand-count').textContent = ''; } }); })(); </script> </body> </html> <noscript id="deferred-styles"> <!-- You might want to include critical deferred CSS links here --> <!-- Example: <link rel="stylesheet" type="text/css" href="/css/deferred.css"/> --> </noscript> <script async> var loadDeferredStyles = function() { var addStylesNode = document.getElementById("deferred-styles"); var replacement = document.createElement("div"); replacement.innerHTML = addStylesNode.textContent; document.body.appendChild(replacement) addStylesNode.parentElement.removeChild(addStylesNode); }; var raf = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame; if (raf) raf(function() { window.setTimeout(loadDeferredStyles, 0); }); else window.addEventListener('load', loadDeferredStyles); </script>