← Todos los artículos

Leads8 min de lectura

Los leads de tu web que se pierden por el camino

Del formulario de contacto al CRM sin pasar por una bandeja compartida. Qué hace falta para abrir un buzón público sin llenarte la base de basura, y la pieza que más dolor evita.

El formulario de contacto de la web de tu agencia manda un correo. Ese correo llega a una bandeja compartida. Alguien lo ve, lo reenvía a la asesora que corresponde, y la asesora lo contesta — o no, porque ese día tenía tres salidas y el correo quedó dos pantallas abajo.

Cada paso de esa cadena pierde prospectos, y lo peor es que los pierde en silencio: no hay forma de saber cuántos entraron, cuántos se contestaron ni cuánto se tardó. Un lead perdido no deja rastro.

La alternativa es que el formulario escriba directamente en el CRM. Suena obvio y tiene más aristas de las que parece, porque acabas de abrir un endpoint público con permiso de escritura.

El problema de un buzón abierto

El formulario vive en el sitio de la agencia —otro dominio, a veces WordPress, a veces una landing de campaña— y lo rellena gente sin cuenta. Así que el endpoint que lo recibe:

  • no puede exigir sesión,
  • lo puede llamar cualquiera que descubra la URL,
  • y lo van a encontrar bots, porque los bots encuentran todos los formularios.

Si no lo piensas, acabas con una base de datos llena de basura y con tus asesoras revisando prospectos que no existen. El token de la URL es la credencial, y hace falta algo más que eso.

  1. 1

    Token de 144 bits

    Resuelve buzón y agencia. Desconocido, inactivo o mal formado → 404 genérico, que no confirma si existe.

  2. 2

    Tope de tamaño y de campos

    Un cuerpo gigante ni se parsea. Un formulario no pesa ni 2 KB.

  3. 3

    Campo trampa

    Se responde 200 para no enseñarle al bot qué falló, pero no se crea nada.

  4. 4

    Límite por minuto

    Contado sobre la bitácora del propio buzón.

  5. 5

    Deduplicación

    Mismo buzón y mismo contacto en una ventana corta: el doble clic en Enviar no crea dos prospectos.

Todo intento queda en la bitácora con su cuerpo crudo, se haya creado el lead o no. Sin eso, un formulario mal mapeado falla en silencio y la agencia nunca se entera de los prospectos que no llegaron.

Tres de esas cinco defensas merecen una nota, porque son las contraintuitivas.

El 404 genérico. Un token desconocido no debe responder "ese buzón no existe" distinto de como responde un token mal formado. Si las respuestas difieren, acabas de regalar un oráculo para adivinar tokens válidos.

La trampa responde 200. El campo oculto que un humano nunca rellena y un bot sí. Lo intuitivo sería rechazar con un error; lo correcto es responder como si todo hubiera ido bien y no crear nada. Un bot que recibe un error reintenta con otra forma; uno que recibe éxito se va satisfecho.

La deduplicación. El doble clic en "Enviar" es humano y universal. Sin una ventana corta de dedupe, tu CRM tiene dos prospectos idénticos y dos asesoras llamando a la misma persona.

CORS abierto a propósito

La reacción de seguridad por defecto sería restringir el endpoint al dominio de la agencia. Es la decisión equivocada aquí, y vale la pena explicar por qué.

La credencial es el token, no el origen. Una cabecera Origin la pone el navegador y no es una barrera para nadie que use curl: restringir por dominio no detiene a un atacante ni un segundo. Lo que sí hace es romperse a la primera que la agencia publique una landing de campaña en otro dominio, cambie de plantilla o pruebe desde un entorno de staging. Seguridad que no protege y sí estorba.

Lo que sí tiene que estar atado al origen es otra cosa: si el formulario pide redirigir a una página de gracias, ese destino solo se obedece si apunta al mismo sitio que envió el formulario. Sin esa atadura el endpoint sería un redirector abierto, y alguien repartiría enlaces a tu dominio que aterrizan en el suyo con tu credibilidad prestada.

Que funcione sin JavaScript

Un detalle de implementación con consecuencias comerciales: el buzón debe aceptar un <form> clásico, no solo fetch con JSON.

La web de muchas agencias es un WordPress con un plugin de formularios, y ese plugin manda application/x-www-form-urlencoded como se ha hecho siempre. Si tu endpoint solo entiende JSON, la integración exige un desarrollador — y lo que debería ser una tarde se convierte en un proyecto que no se hace nunca.

Lo que de verdad cambia las cosas: la bitácora

De todo esto, la pieza que más dolor evita no es una defensa: es guardar cada intento con su cuerpo crudo, se haya creado el lead o no.

El modo de fallo real no es el bot. Es que alguien cambia el formulario de la web, renombra el campo "correo" a "email", y desde entonces los prospectos entran sin dirección de contacto. Sin bitácora eso falla en silencio durante semanas y lo descubres cuando el mes cierra flojo. Con bitácora, abres el último intento, ves que el campo llegó con otro nombre y lo arreglas en cinco minutos.

Lo que ganas al cerrar el círculo

Cuando el formulario escribe en el CRM, aparecen cosas que con el correo no existían:

  • Asignación automática al asesor que toca, por buzón o por turno.
  • El reloj corre. Se puede medir cuánto tarda el primer contacto, que es la métrica que más correlaciona con cerrar.
  • Un aviso si nadie lo toca. El prospecto olvidado deja de depender de que alguien se acuerde.
  • Origen real. Un buzón por campaña y sabes qué landing trae clientes, no solo visitas.

En JetDesk cada buzón tiene su token, su asesor asignado y su bitácora completa, y el formulario de tu web conecta pegando una URL — sin desarrollador. Puedes verlo en una demo de 20 minutos o leer la guía de Leads.