Análisis completo de la página web jimfer-security.html: errores detectados, correcciones aplicadas y oportunidades de mejora identificadas.
action="mailto:" no funcionaba
El formulario usaba action="mailto:" que abre el cliente de correo local del usuario. En móvil (donde navega la mayoría) muchos no tienen cliente configurado y el formulario no hacía absolutamente nada. Ahora usa Formspree, un servicio que recibe el formulario y lo envía al correo sin necesitar servidor propio.
<form action="mailto:comercial@jimfersecurity.co" method="POST" enctype="text/plain" >
<form id="cotizacion-form" action="https://formspree.io/f/FORM_ID" method="POST" > <!-- Reemplaza FORM_ID con tu ID de formspree.io -->
name (datos no se enviaban)
Los campos del formulario no tenían atributo name. Sin él, ningún servicio (Formspree, backend propio, etc.) puede identificar qué dato es el nombre, el teléfono o el correo. Los datos llegaban vacíos o no llegaban.
<input type="text" placeholder="Juan Pérez" /> <input type="tel" placeholder="300 000 0000" /> <input type="email" placeholder="correo@empresa.com" /> <select>...</select> <textarea></textarea>
<input type="text" name="nombre" placeholder="Juan Pérez" required /> <input type="tel" name="telefono" placeholder="300 000 0000" required /> <input type="email" name="email" placeholder="correo@empresa.com" required /> <select name="servicio">...</select> <textarea name="mensaje"></textarea>
El botón mostraba "✅ Mensaje enviado" al hacer clic sin verificar si realmente se envió algo. Un usuario podía ver ese mensaje, creer que su solicitud llegó, y nunca recibir respuesta. Ahora el mensaje de éxito solo aparece si el servidor confirma la recepción.
<button class="btn-form" onclick="this.textContent= '✅ Mensaje enviado'"> Enviar solicitud → </button>
// JavaScript escucha la respuesta real:
form.addEventListener('submit', function(e) {
e.preventDefault();
fetch(form.action, { method:'POST', ... })
.then(function(response) {
if (response.ok) {
// Solo aquí se muestra éxito
status.textContent = '✅ Enviado';
} else {
// Si falla, muestra el teléfono de contacto
status.textContent = '❌ Error — llame al 313 846 0666';
}
});
});
</form> incorrecta
El formulario cerraba con </div> en lugar de </form>. Esto crea HTML inválido: el formulario nunca se cierra correctamente y puede provocar que el botón de envío quede fuera del formulario en algunos navegadores.
<button class="btn-form" ...>
Enviar solicitud →
</button>
</div> ← ¡cierra un div, no el form!
</div>
</section>
<button class="btn-form" type="submit">
Enviar solicitud →
</button>
<p id="form-status"></p>
</form> ← cierre correcto
</div>
</section>
El badge "Vigilancia Privada · Bogotá, Colombia" tenía un color rosa (#ff8c94) que no existe en la paleta azul marino + dorado de JIMFER SECURITY. Parecía un color de prueba que se quedó por descuido.
.hero-badge {
color: #ff8c94; /* color rosa, sin relación
con la paleta del negocio */
}
.hero-badge {
color: var(--dorado-claro); /* #e4b84d
coherente con el resto del diseño */
}
| # | Hallazgo | Categoría | Prioridad | Estado |
|---|---|---|---|---|
| 1 | Formulario con action="mailto:" no funciona en móvil |
Funcional | Urgente | Corregido |
| 2 | Inputs sin atributo name — datos no se envían |
Funcional | Urgente | Corregido |
| 3 | Feedback de envío falso — engaña al usuario | UX / Conversión | Urgente | Corregido |
| 4 | Cierre de formulario con </div> en lugar de </form> |
HTML inválido | Urgente | Corregido |
| 5 | Color rosa #ff8c94 en badge del hero fuera de paleta |
Diseño | Importante | Corregido |
| 6 | Sin sección de testimonios / reseñas de clientes | Conversión | Importante | Pendiente |
| 7 | Sin licencias o certificaciones visibles (SuperVigilancia) | Credibilidad | Importante | Pendiente |
| 8 | Número de seguidores de Facebook hardcodeado y desactualizable | Contenido | Mejora | Pendiente |
| 9 | Sin mapa embebido en la sección de sedes | UX | Mejora | Pendiente |
| 10 | Noticias con contenido estático — requiere actualización manual | Contenido | Mejora | Pendiente |
Meta description, Open Graph, Twitter Cards y Schema JSON-LD de LocalBusiness correctamente implementados.
Paleta azul marino + dorado consistente, tipografía Montserrat y animaciones suaves de scroll bien ejecutadas.
Botón con mensaje pre-cargado ("Hola, me interesa cotizar...") que reduce la fricción de contacto.
"Solicitar cotización" aparece en el hero, en la franja intermedia y en la sección de contacto.
19 años, 259 guardas, 6 sedes, 500+ clientes con contadores que se activan al hacer scroll.
Sección dedicada a FLIR, drones, comunicación satelital y AVN — posicionamiento competitivo fuerte.
El flujo hero → stats → servicios → nosotros → diferenciadores → contacto sigue un embudo natural.
Media queries para móvil en el escudo del hero y el menú hamburguesa están correctamente definidos.
FORM_ID en el HTML. El plan gratuito permite 50 envíos/mes.