Los formularios modernos usan JavaScript para validación, campos condicionales, CAPTCHA y AJAX. Una excepción puede detener el manejador antes de que llegue ninguna petición a WordPress, dejando sin evidencia PHP o SMTP.
Reproduce el fallo como visitante e identifica el primer error, no reinstales el formulario.
Confirma si sale una petición
Abre las herramientas antes de enviar datos sintéticos. Filtra fetch/XHR y observa el POST, AJAX o endpoint REST.
Si no aparece nada, permanece en el navegador. Si devuelve 403, 422 o 500, sigue la respuesta y los logs del servidor en vez de tratarlo como JavaScript puro.
Anota página, hora, navegador e ID sin capturar valores personales.
Lee el primer error relevante
Recarga con la consola abierta y reproduce una vez. Empieza por el primer error relacionado con formulario, tema, consentimiento u optimización; los posteriores pueden ser consecuencias.
Registra mensaje, archivo y línea, y si el script devuelve 404 o lo bloquea Content Security Policy. Oculta tokens y URL privadas.
Si apunta a un bundle minificado, utiliza el source map solo si corresponde a la versión desplegada. Un mapa antiguo puede señalar una línea falsa. Comprueba el hash o query del recurso y conserva la traza original antes de regenerar assets.
Los warnings no relacionados no son automáticamente la causa.
Prueba fuera de la sesión administrativa
Usa una ventana privada sin login. Los administradores suelen recibir assets sin minificar y evitar caché, consentimiento o seguridad.
Repite en el navegador reportado y en móvil real cuando proceda. Las extensiones pueden bloquear trackers o CAPTCHA; compara un perfil limpio sin exigir que el visitante desactive su protección.
Cambia una sola variable entre pruebas.
Comprueba el orden de dependencias
“Function undefined” suele significar que una dependencia llegó tarde, se aplazó mal o no cargó. Revisa el orden del plugin, jQuery si se necesita, CAPTCHA y código propio.
La optimización puede retrasar una librería más allá de la inicialización. Excluye únicamente el handle demostrado o restaura la dependencia documentada.
Regenera el asset y purga la página después de corregir el origen.
Busca ID y formularios duplicados
Un maquetador puede renderizar copias para móvil/escritorio o repetir un popup. ID duplicados pueden enlazar el handler al elemento equivocado o inicializar dos veces.
Inspecciona el DOM final, no solo el editor. Prefiere un formulario responsive e identificadores únicos.
Comprueba si el código propio selecciona un solo elemento cuando existen varios.
Revisa también cuántos listeners de submit existen y si alguno llama a preventDefault() sin continuar. Dos integraciones pueden capturar el mismo evento; elimina solo el listener demostrado, no la validación legítima.
Aísla conflictos con seguridad
En staging, reproduce la página y desactiva complementos sospechosos uno a uno, empezando por cambios recientes y scripts de la traza. Mantén tema, PHP y optimización equivalentes.
Desactivar en producción puede eliminar antispam, entradas o checkout; proporciona antes una vía alternativa.
No uses copias no oficiales para comparar.
Haz recuperable el fallo
El botón debe permanecer deshabilitado solo durante una petición activa. Tras un error, muestra un mensaje veraz, conserva campos seguros y ofrece una alternativa monitorizada.
Protege especialmente contraseñas, pagos y archivos: no los restaures automáticamente después de una excepción. Indica con claridad qué debe seleccionar o introducir de nuevo el visitante.
No muestres éxito por temporizador ni ocultes excepciones. Analytics debe convertir tras procesamiento confirmado, no al hacer clic.
El texto de error debe ser accesible y recibir el foco correctamente.
Verifica navegador y servidor
Tras la corrección, prueba una vez en navegadores compatibles de escritorio y móvil. Confirma ausencia del error relevante, una petición, una entrada, notificaciones y llegada final.
Prueba validación, condiciones, CAPTCHA y navegación repetida. Monitoriza errores front-end sin recopilar campos.
Solicita reparación urgente si los bundles ocultan la fuente o es una ruta crítica de ventas. Comparte URL, navegador, hora y stack redactado, nunca datos o tokens.