Migra de hCaptcha a CaptchaLa
Reemplazo directo en menos de 10 minutos. Misma forma de formulario — widget más rápido, sin rondas de clasificación de imágenes, y tu tráfico sigue siendo tuyo.
Cómo es el cambio de código
<div class="h-captcha" data-sitekey="YOUR_SITE_KEY"></div>
<script src="https://js.hcaptcha.com/1/api.js" async defer></script><button id="login-btn">Sign in</button>
<script src="https://cdn.captcha-cdn.net/captchala-loader.js"></script>
<script>
loadCaptchala(() => Captchala.init({ appKey: 'YOUR_APP_KEY', action: 'login' })
.onSuccess(res => onToken(res.token))
.bindTo('#login-btn'));
</script>const res = await fetch('https://api.hcaptcha.com/siteverify', {
method: 'POST',
headers: { 'Content-Type': 'application/x-www-form-urlencoded' },
body: new URLSearchParams({
secret: process.env.HCAPTCHA_SECRET,
response: req.body['h-captcha-response'],
}),
})
const data = await res.json()
if (!data.success) return res.status(400).json({ error: 'bot' })const res = await fetch('https://apiv1.captcha.la/v1/validate', {
method: 'POST',
headers: {
'X-App-Key': process.env.CAPTCHALA_APP_KEY,
'X-App-Secret': process.env.CAPTCHALA_APP_SECRET,
'Content-Type': 'application/json',
},
body: JSON.stringify({ pass_token: req.body['captchala-token'] }),
})
const { data } = await res.json()
if (!data || !data.valid) return res.status(400).json({ error: 'bot' })Pasos de migración
- 1
Regístrate y obtén tu App Key + Secret
Crea una cuenta gratuita en CaptchaLa, añade un sitio y copia la App Key (pública) y el App Secret (lado servidor). Sin tarjeta requerida.
- 2
Cambia la etiqueta del widget
Reemplaza la clase h-captcha por captchala, data-sitekey por data-app-key, y el script src por la URL de nuestro CDN. La estructura permanece idéntica.
- 3
Actualiza el nombre del campo oculto
hCaptcha inyecta h-captcha-response; CaptchaLa inyecta captchala-token. Busca y reemplaza el nombre del campo en tu manejador de formularios si lo referencias por su nombre.
- 4
Actualiza la verificación del servidor
Cambia el endpoint a apiv1.captcha.la/v1/validate. Usamos JSON (hCaptcha usa form-urlencoded), así que actualiza el Content-Type y el cuerpo. El flag valid (data.valid) sigue en la respuesta — tu lógica de ramificación se mantiene.
- 5
Despliega de forma gradual
Pon CaptchaLa primero en un formulario, mide la conversión y la tasa de desafíos durante unas horas. La mayoría de los equipos ven una finalización igual o mejor de inmediato porque desaparecen las rondas de clasificación de imágenes.
Más rápido: usa un plugin
WordPress + WooCommerce
Reemplaza tu plugin de hCaptcha para WordPress por el plugin oficial de CaptchaLa. Cubre inicio de sesión, registro, comentarios, WooCommerce, CF7, Gravity y WPForms en una sola instalación.
View integration →Flarum
Reemplaza tu extensión de hCaptcha para Flarum por la extensión oficial de CaptchaLa vía Composer.
View integration →Preguntas frecuentes
¿Qué pasa con mi cuenta de hCaptcha?
Nada — déjala tal cual y deja de enviar peticiones. No hay contrato ni paso de notificación. La cuenta queda inactiva. Si quieres cerrarla formalmente, hCaptcha tiene una opción de eliminación de cuenta autogestionada.
¿Mejorarán los Core Web Vitals?
Normalmente sí. El widget de hCaptcha suele añadir entre 400 y 600 ms al LCP en páginas con formularios. El widget de CaptchaLa apunta a <100ms. La diferencia exacta depende del resto del presupuesto de tu página, pero en páginas con muchos formularios la diferencia se nota.
¿Y las funciones de hCaptcha Enterprise que estoy usando?
La mayoría de las funciones enterprise (temas personalizados, puntuación de riesgo avanzada, paneles de analítica) tienen equivalentes directos en el plan estándar de CaptchaLa. La página de migración en la documentación lista cada función y su contraparte en CaptchaLa.