Saltar enlaces

Técnicas de automatización de formularios que hacen que los usuarios y clientes estén más satisfechos

Implementé un formulario de contacto el mes pasado que pensé que se ejecutó bien. Tiene toda la semántica adecuada, una validación perfecta y una excelente compatibilidad con el teclado. Ya sabes, tienes todas las funciones que deseas en tu cartera.

Pero… apenas dos semanas después del despliegue, mi cliente llamó. Perdimos la recomendación porque estuvo en su bandeja de entrada durante el fin de semana.

El formulario funciona bien. El flujo de trabajo no.

Temas de los que nadie habla

La brecha entre “efectividad en la forma” y “efectividad en el negocio” es un tema que nosotros, como personal de atención al cliente, somos reacios a discutir. Nos centramos mucho en la experiencia del usuario, los métodos de autenticación y la accesibilidad, pero perdemos de vista lo que hacen los datos una vez que dejan nuestro control. Aquí es donde las cosas empiezan a fallar en el mundo real.

Esto es lo que aprendí de esta experiencia para crear mejores componentes de formulario.

¿Por qué falla “Enviar correo electrónico al enviar”?

El patrón que todos usamos se ve así:

fetch('/api/contact', {
  method: 'POST',
  body: JSON.stringify(formData)
})

// Email gets sent and we call it done

Considero que los envíos duplicados generan confusión, especialmente cuando se utiliza un sistema CRM como Salesforce. Por ejemplo, me encontré con una situación en la que la inconsistencia del formato impedía la importación automática. También tuve consultas del fin de semana que fueron ignoradas hasta el lunes por la mañana. He depurado consultas que copian y pegan comillas a las que les faltan decimales. También hay algunos campos “obligatorios”, donde “obligatorio” es simplemente una etiqueta engañosa.

Tuve una epifanía: la realidad es que tener una forma funcional es solo el punto de partida, no el final. De hecho, el correo electrónico no era una notificación; Más bien, es un traspaso. Si se tratara simplemente como una notificación, nuestro propio código tendría un cuello de botella. De hecho, Litmus, como su Informe sobre el estado del marketing por correo electrónico 2025 (Se requiere registro), descubrió que los flujos de trabajo basados ​​en la bandeja de entrada generaban retrasos en el seguimiento, especialmente para los equipos de ventas que dependen de la generación de leads.

Descripción detallada del flujo de trabajo interrumpido para los formularios enviados. Los usuarios envían formularios, llegan correos electrónicos a las bandejas de entrada, entrada manual en hojas de cálculo, errores de formato y retrasos.

Diseñar formularios automatizados

Lo más importante es que las decisiones de front-end impactan directamente en la automatización de back-end. En una investigación reciente de HubSpot, los datos de la etapa front-end (es decir, la interacción del usuario) determinan lo que sucede a continuación.

Estas son las decisiones de diseño reales que cambiaron la forma en que construyo formularios:

Campos obligatorios y opcionales

Pregúntate: ¿Para qué dependen las empresas de los datos? ¿Son las llamadas telefónicas el método principal para dar seguimiento a nuevos clientes potenciales? Entonces hagamos que este campo sea obligatorio. ¿Es el puesto de trabajo de un líder un contexto importante para el seguimiento? Si no, hazlo opcional. Antes de comenzar a marcar el código, esto requiere cierta colaboración humana.

Por ejemplo, asumí incorrectamente que el campo del número de teléfono era opcional, pero CRM lo requiere. ¿El resultado? Mis envíos fueron invalidados y CRM los rechazó rotundamente.

Ahora sé tomar mis decisiones de codificación desde una perspectiva de proceso de negocio, no solo desde mis suposiciones sobre cuál debería ser la experiencia del usuario.

Estandarice los datos temprano

¿Es necesario formatearlo de alguna manera específica después del envío? Es una buena idea asegurarse de que ciertos datos, como los números de teléfono, tengan un formato coherente para que los destinatarios puedan escanear la información más fácilmente. Lo mismo ocurre con el recorte de espacios en blanco y mayúsculas y minúsculas.

¿Por qué? Las herramientas posteriores son estúpidas. Son completamente incapaces de relacionar “John Wick” con “john wick”. Una vez vi a un cliente limpiar manualmente 200 entradas de CRM debido a mayúsculas inconsistentes que resultaron en registros duplicados. Cinco minutos de codificación frontal pueden evitar este dolor.

Evite entradas duplicadas en la interfaz

Algo tan simple como desactivar el botón “Enviar” cuando se hace clic puede evitar la molestia de filtrar envíos duplicados. Muestre un “estado de confirmación” claro, como un indicador de carga para operaciones en curso. Almacena el indicador de confirmación en curso.

¿Por qué? Limpiar las entradas duplicadas de CRM cuesta mucho dinero. Los usuarios impacientes en redes lentas definitivamente harán clic en este botón varias veces si lo permite.

El estado de éxito y error es importante

¿Qué debe saber el usuario después de enviar el formulario? Creo que es muy común tener algún tipo de mensaje predeterminado “¡Gracias!” Después de una presentación exitosa, pero ¿cuánto contexto proporciona esto realmente? ¿A dónde va el contenido enviado? ¿Cuándo hará el seguimiento el equipo? ¿Hay recursos disponibles para revisar durante este tiempo? Estos son contextos valiosos que no solo establecen expectativas para los líderes, sino que también ayudan a los equipos a realizar el seguimiento.

Los mensajes de error también deberían ayudar a la empresa. Por ejemplo, si estuviéramos tratando con confirmaciones duplicadas, sería más útil decir: “Este correo electrónico ya está en nuestro sistema” que algún general “Algo salió mal” información.

Compare las dos materias primas enviadas. Los problemas de formato se muestran a la izquierda y la información formateada correctamente se muestra a la derecha.

Mejor flujo de trabajo

Entonces, ¿cómo puedo automatizar mi formulario la próxima vez? Estas son las cosas importantes que me perdí la última vez pero que definitivamente haré en el futuro.

Mejor validación antes del envío

En lugar de simplemente comprobar si el campo existe:

const isValid = email && name && message;

Comprueba si realmente están disponibles:

function validateForAutomation(data) {
  return {
    email: /^(^\s@)+@(^\s@)+\.(^\s@)+$/.test(data.email),
    name: data.name.trim().length >= 2,
    phone: !data.phone || /^\d{10,}$/.test(data.phone.replace(/\D/g, ''))
  };
}

Por qué esto es importante: CRM rechazará los correos electrónicos con formato incorrecto. Su manejo de errores debería detectar esto antes de que el usuario haga clic en Enviar, no después de que el usuario espere dos segundos para que el servidor responda.

Además, vale la pena señalar que la verificación telefónica aquí cubre escenarios comunes, pero no es infalible para cosas como formatos internacionales. Para uso en producción, considere una biblioteca como esta Número de teléfono de la biblioteca Realizar verificación completa.

formato consistente

Formatee el contenido antes de enviarlo en lugar de asumir que se procesará en el backend:

function normalizeFormData(data) {
  return {
    name: data.name.trim()
      .split(' ')
      .map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
      .join(' '),
    email: data.email.trim().toLowerCase(),
    phone: data.phone.replace(/\D/g, ''), // Strip to digits
    message: data.message.trim()
  };
}

Por qué hago esto: Una vez más vi a un cliente arreglando manualmente más de 200 entradas de CRM porque “JOHN SMITH” y “john smith” crearon registros duplicados. Resolver este problema tarda cinco minutos en escribirse y ahorra tiempo en el futuro.

Hay una advertencia con este enfoque particular. Esta lógica de división de nombres generará errores en nombres únicos, apellidos con guiones y casos extremos como “McDonald” o nombres con múltiples espacios. Si necesita un manejo confiable de nombres, considere solicitar campos de nombre y apellido separados.

Evitar envíos duplicados

Podemos hacer esto desactivando el botón “Enviar” al hacer clic:

let submitting = false;
  async function handleSubmit(e) {
    e.preventDefault();
    if (submitting) return;
    submitting = true;

const button = e.target.querySelector('button(type="submit")');
button.disabled = true;
button.textContent="Sending...";

try {
  await sendFormData();
    // Success handling
  } catch (error) {
    submitting = false; // Allow retry on error
    button.disabled = false;
    button.textContent="Send Message";
  }
}

Por qué funciona este patrón: El usuario impaciente hace doble clic. La lentitud de Internet les hace volver a hacer clic. Sin esta protección, se crean clientes potenciales duplicados cuya limpieza cuesta mucho dinero.

Crear datos automatizados

en lugar de esto:

const formData = new FormData(form);

Asegúrese de construir los datos:

const structuredData = {
  contact: {
    firstName: formData.get('name').split(' ')(0),
    lastName: formData.get('name').split(' ').slice(1).join(' '),
    email: formData.get('email'),
    phone: formData.get('phone')
  },
  inquiry: {
    message: formData.get('message'),
    source: 'website_contact_form',
    timestamp: new Date().toISOString(),
    urgency: formData.get('urgent') ? 'high' : 'normal'
  }
};

Por qué los datos estructurados son importantes: Herramientas como Zapier, Make e incluso webhooks personalizados lo requieren. Cuando envías un objeto plano, alguien tiene que escribir la lógica para analizarlo. La automatización “simplemente funciona” cuando envía datos preestructurados. Esto refleja el propio consejo de Zapier de crear flujos de trabajo más confiables y fáciles de mantener en lugar de un frágil “simple zap” de un solo paso.

Mira cómo funciona Zapier (YouTube) Vea lo que sucede después de enviar un formulario.

Compare los datos JSON planos de la izquierda con los datos JSON estructurados correctamente.

Preocuparse por lo que sucede después del envío

El proceso ideal es:

  1. formulario de envío de usuario
  2. Los datos llegan a su punto final (o servicio de formulario)
  3. Crear contactos CRM automáticamente
  4. Las notificaciones de Slack/Discord se enviarán al equipo de ventas.
  5. Activar secuencia posterior
  6. Datos registrados en hoja de cálculo para informes.

Su elección de interfaz lo hace posible:

  • Coherencia del formato = importación exitosa a CRM
  • Datos estructurados = se pueden completar automáticamente utilizando herramientas automatizadas
  • Deduplicación = No se requieren tareas de limpieza complicadas
  • Validación = Reducir errores de “entrada no válida”

Mi experiencia real en el trabajo: Después de restablecer el formulario de cotización de clientes potenciales, la tasa de éxito de la cotización automática de mi cliente aumentó del 60% al 98%. ¿Cambiar? en lugar de enviar { "amount": "$1,500.00"}estoy enviando ahora { "amount": 1500}. Su integración con Zapier no puede analizar símbolos de moneda.

Muestra el cambio en la tasa de éxito después de implementar la automatización, del 60% al 98%, con ejemplos de errores de análisis y valores aceptables a continuación según la moneda formateada en USD frente a números sin formato.

Mi conjunto de mejores prácticas para el envío de formularios

Estos cursos me enseñaron lo siguiente sobre el diseño de formularios:

  1. Pregunte sobre el flujo de trabajo desde el principio. “¿Qué pasa cuando alguien lo llena?” debe ser la primera pregunta que se haga. Esto muestra exactamente qué se debe enviar, qué datos se deben ingresar en un formato específico y qué integraciones usar.
  2. Prueba con datos reales. También utilicé mis propios datos para completar formularios con espacios superfluos y cadenas extrañas, como números de teléfono móvil y cadenas incorrectas en mayúsculas y minúsculas. Si intenta escribir “JOHN SMITH” en lugar de “John Smith”, es posible que se sorprenda por la cantidad de casos extremos que pueden surgir.
  3. Se agregó marca de tiempo y fuente. Tiene sentido diseñar esto en el sistema, aunque no necesariamente parezca necesario. Seis meses después, será útil saber cuándo recibió esta información.
  4. Hazlo redundante. activar correo electrónico y Un webhook. Al enviar un correo electrónico, es común permanecer en silencio y no te darás cuenta hasta que alguien te pregunte. “¿Recibiste el mensaje que te enviamos?”
  5. La comunicación excesiva tiene éxito. Establecer expectativas como líder es fundamental para disfrutar de una experiencia más agradable. “Su mensaje ha sido enviado, Sales Sarah responderá dentro de las 24 horas”. Mucho mejor que el antiguo normal. “¡éxito!”

verdadera línea de meta

Esto es lo que aconsejo a otros desarrolladores ahora: “Su trabajo no se detiene cuando el formulario se publica sin errores. Su trabajo no se detiene hasta que esté seguro de que su empresa puede tomar medidas basándose en el envío de este formulario”.

Esto significa:

  • No se permite “copiar y pegar”
  • No “Revisaré mi correo electrónico más tarde”
  • No hay entradas duplicadas para limpiar
  • No es necesario arreglar el formato

La codificación en sí no es tan difícil. Un cambio de actitud proviene de la comprensión de que la forma es en realidad parte de un sistema más amplio, y no un objeto independiente. Una vez que piense en los formularios de esta manera, los considerará de manera diferente en términos de planificación, validación y materiales.

La próxima vez que organices una hoja de cálculo, pregúntate: ¿Qué pasa cuando estos datos están fuera de mi control? Responder a esta pregunta puede convertirlo en un mejor desarrollador front-end.

La siguiente demostración de CodePen es una comparación en paralelo de un formulario estándar y un formulario listo para automatización. Ambos parecen iguales para el usuario, pero la salida de la consola muestra una gran diferencia en la calidad de los datos.

Referencias y lecturas adicionales

Home
Account
Cart
Search
¡Hola! ¡Pregúntame lo que quieras!
Explore
Drag