Un formulario de contacto en WordPress es la vía de entrada de presupuestos, consultas y clientes, y aun así es una de las piezas que más webs descuidan: formularios que no llegan, campos interminables que espantan al visitante o casillas sin aviso legal que incumplen el RGPD. Crear un formulario de contacto en WordPress es sencillo —hay plugins excelentes y gratuitos que lo resuelven en diez minutos—, pero hacerlo bien exige tomar tres o cuatro decisiones correctas: qué plugin usar, qué campos pedir, cómo frenar el spam sin castigar al usuario y, sobre todo, cómo garantizar que los mensajes llegan de verdad a tu bandeja de entrada. En esta guía recorremos todo el proceso paso a paso, desde la instalación del plugin hasta la prueba final de envío, con recomendaciones concretas según el tipo de web que tengas.
Por qué usar un formulario y no publicar tu email
La alternativa perezosa al formulario es escribir tu dirección de correo en la página de contacto. Mala idea por varios motivos:
- Spam masivo: los rastreadores recolectan direcciones publicadas en webs y las meten en listas de envío. En semanas notarás el aumento de correo basura.
- Fricción: el visitante tiene que abrir su cliente de correo, que en el ordenador de mucha gente ni siquiera está configurado. El formulario se rellena ahí mismo.
- Datos estructurados: un formulario te permite pedir exactamente la información que necesitas (asunto, teléfono, tipo de consulta) y recibirla ordenada.
- Medición: puedes registrar cada envío como conversión en Google Analytics y saber qué páginas generan contactos.
Los mejores plugins de formulario de contacto para WordPress
Hay decenas de opciones, pero en la práctica cuatro plugins cubren casi todos los casos. Si quieres una visión más amplia del ecosistema, tenemos una selección de essential WordPress plugins for beginners donde el formulario de contacto ocupa un puesto fijo.
WPForms Lite
El más recomendable para la mayoría. Constructor visual de arrastrar y soltar, plantilla de formulario de contacto lista en dos clics, protección antispam integrada y una interfaz que no necesita manual. La versión gratuita cubre de sobra un formulario de contacto clásico; la de pago añade pagos, encuestas y lógica condicional.
Contact Form 7
El veterano: gratuito, ligerísimo y presente en millones de webs. Se configura con etiquetas de texto en lugar de constructor visual, lo que lo hace menos amigable para principiantes, pero es flexible y está soportado por casi cualquier plugin de terceros. Ideal si prefieres el control fino y no te asusta un poco de sintaxis.
Fluent Forms
El equilibrio moderno: la versión gratuita es muy generosa (múltiples columnas, lógica condicional básica, protección antispam) y su rendimiento es excelente porque solo carga sus scripts en las páginas donde hay un formulario.
Forminator
La opción de WPMU DEV, gratuita y sorprendentemente completa: formularios, encuestas, cuestionarios y pagos con Stripe sin pasar por caja.
| Plugin | Facilidad | Versión gratuita | Ideal para |
|---|---|---|---|
| WPForms Lite | Muy alta | Suficiente para contacto | Principiantes y webs corporativas |
| Contact Form 7 | Medium | Completa | Usuarios técnicos, webs ligeras |
| Fluent Forms | High | Muy generosa | Quien quiera crecer sin pagar pronto |
| Forminator | High | Muy completa | Encuestas y formularios con pago |
Cómo crear el formulario de contacto paso a paso
Vamos a montarlo con WPForms Lite, aunque el proceso es casi idéntico en cualquier plugin moderno:
- Install the plugin: en tu escritorio de WordPress, ve a Plugins → Añadir nuevo, busca “WPForms”, instala y activa.
- Crea el formulario: en el menú WPForms → Añadir nuevo, elige la plantilla “Formulario de contacto simple”. Ya incluye nombre, email y mensaje.
- Adjust the fields: drag the fields you need from the left column (phone, subject dropdown) and remove any unnecessary ones. Mark only the essential ones as mandatory.
- Configure notifications: en Ajustes → Notificaciones, comprueba el email de destino. Usa el campo “Responder a” con el email del remitente para poder contestar con un clic.
- Configure the confirmation message: lo que verá el usuario tras enviar. Un texto claro (“Gracias, te respondemos en menos de 24 horas”) o una redirección a una página de gracias, útil para medir conversiones.
- Publish the form: edit your contact page and insert the WPForms block (or the shortcode provided by the plugin), select the form, and update the page.
- Do a real test: send a message from the published form and verify that it arrives. Everyone skips this step, and it's the most important one.
What fields to ask for (and which not) and GDPR
Every extra field reduces the submission rate. The rule is to ask for the minimum necessary to respond:
- Name: first name is enough; nobody needs two surnames to reply to an email.
- Email: mandatory, it's your response channel.
- Message: a large text area.
- Phone: only if you actually call; and preferably optional.
- Subject or type of query: useful as a dropdown if you receive queries of very different natures (support, quote, press).
En cuanto al RGPD, si tu web opera en España o la Unión Europea el formulario debe incluir una casilla de aceptación de la política de privacidad, no marcada por defecto, con un enlace a dicha política. Debajo del formulario conviene añadir la capa informativa básica: responsable del tratamiento, finalidad (responder a tu consulta), y dónde ejercer los derechos de acceso y supresión. Todos los plugins mencionados incluyen un campo de tipo “casilla RGPD” listo para usar.
How to stop spam without punishing the user
A public form will receive automated spam, it's a matter of days. Defenses, from least to most friction:
- Honeypot: an invisible field that humans don't see but bots fill in. Without any friction; WPForms and Fluent Forms have it activated by default.
- Word and country filter: block submissions with certain links or typical spam patterns.
- Cloudflare Turnstile: the modern alternative to captcha; verifies the user without puzzles and without visible friction. Compatible with major plugins.
- Google reCAPTCHA v3: scores each submission from 0 to 1 without showing anything to the user. Effective, although it adds third-party JavaScript and some dependence on Google.
Start with honeypot only; if spam gets through, add Turnstile. The traffic light captcha should be the last resort: each puzzle means lost legitimate submissions. And remember that the form is a gateway to your website: keeping the plugin updated is part of the basic security we reviewed in 7 tricks to strengthen your WordPress security.
The silent problem: emails that don't arrive
The most common fault of a contact form in WordPress is not visible: the visitor submits, sees the success message, and the email never reaches your inbox. The reason is that WordPress sends emails with the function wp_mail() of PHP, without real authentication, and modern mail servers distrust these sends: they end up in spam or are directly rejected.
The solution is to send via authenticated SMTP or through a transactional email API:
- Install an SMTP plugin: WP Mail SMTP or FluentSMTP (free and without artificial limits) are the benchmarks.
- Connect it to a sending service: your own hosting's SMTP, Brevo, Mailgun, Amazon SES, or even a Google Workspace account.
- Verify the domain: configure the SPF and DKIM records indicated by the service. This is the step that truly gets your emails out of the spam folder.
- Use the plugin's test tool to confirm delivery.
An additional tip: enable database submission storage (Fluent Forms and Forminator do this by default; in others, there are add-ons). This way, even if an email is lost, no customer message is lost with it.
Where to place the form and how to adapt it to the design
The natural place is the contact page, but it doesn't have to be the only one. A short form at the end of blog articles, in the sidebar, or on service pages usually multiplies contacts, because it captures the visitor at the moment of interest without forcing them to navigate to another page. If you repeat the same form in several places, always use the same one (the block or shortcode points to the same identifier): this way, changes are applied everywhere, and submission statistics are unified.
En cuanto al aspecto, los plugins actuales heredan bastante bien los estilos del tema, así que lo primero es no tocar nada y mirar cómo queda. Si necesitas ajustar detalles, casi todos ofrecen opciones visuales básicas (ancho de campos, color del botón) y, para lo demás, un poco de CSS sobre las clases del formulario es suficiente. Dos consejos de usabilidad que valen más que cualquier retoque estético: el botón de envío debe decir algo concreto (“Pedir presupuesto” convierte mejor que “Enviar”), y los mensajes de error deben verse junto al campo que falla, no como un aviso genérico arriba del todo. En móvil, comprueba que los campos ocupan el ancho completo y que el teclado que aparece es el adecuado (numérico para el teléfono, con arroba para el email): los campos de tipo correcto lo resuelven solos.
Measure submissions as conversions
A form that is not measured is a lost opportunity. The simplest way is to redirect after submission to a thank you page and register that URL as a conversion. If you already have Google Analytics 4 connected to your WordPress, create an event with the thank you page as a condition and mark it as a conversion. With that, you will know which content and campaigns bring you real contacts, not just visits.
Frequently Asked Questions
What is the best free plugin for a contact form?
For most, WPForms Lite for its ease of use, or Fluent Forms if you want more free features (columns, conditional logic, submission logging). Contact Form 7 is still a great option if you don't mind configuring with text tags.
Why am I not receiving emails from my form?
Almost always because WordPress sends without authentication and your mail server marks it as spam. Set up an SMTP plugin with verified SPF and DKIM, and the problem disappears. Also, check that the destination email in the form notifications is correct.
Is the privacy checkbox mandatory in the form?
If you process data of people from the EU, yes: you need an un-pre-checked consent box with a link to your privacy policy, in addition to basic information about data processing. This is the standard required by GDPR for contact forms.
Does the form slow down my website?
It depends on the plugin. Well-made ones only load their scripts on pages with a form. If you add reCAPTCHA, keep in mind that its JavaScript is heavy; Turnstile or honeypot are lighter alternatives for the same purpose.
Conclusion
Creating a well-made contact form in WordPress boils down to five decisions: a solid plugin (WPForms, Fluent Forms, Contact Form 7, or Forminator), the minimum essential fields, a compliant GDPR checkbox, frictionless antispam (honeypot and, if necessary, Turnstile), and —the piece almost everyone forgets— authenticated SMTP sending so messages always arrive. Finish the job with a thank you page measured as a conversion and a real submission test every time you change something. With that complete checklist, your contact page stops being a decorative form and becomes what it should be: the channel through which customers enter.