# Envía un formulario web a Gmail (y por qué falla mailto:)

> Recibe los envíos de formularios en Gmail sin enlaces mailto:, contraseñas de aplicación ni Apps Script; luego etiquétalos, mantenlos fuera del spam y responde desde Gmail.

Publicado el 2026-10-25 · https://ikiform.com/es/guides/send-form-to-email/gmail

Envía el formulario a un backend de formularios y añade tu dirección de Gmail como destinataria; no uses un action `mailto:`, que solo abre la app de correo del visitante. Después añade un filtro de Gmail para el remitente, para que los envíos se salten el spam y tengan su propia etiqueta. Al pulsar **Reply** en Gmail respondes al visitante, desde tu propia dirección.

## Qué cambia aquí

Gmail es un buzón, no un servicio de envío para tu sitio. No tiene una URL a la que un formulario pueda enviar, así que cualquier camino hacia Gmail pasa por otra cosa. Lo primero que prueba casi todo el mundo es `mailto:`:

`El formulario que parece funcionar`:

```html
<form action="mailto:you@gmail.com" method="post" enctype="text/plain">
  <input name="name" />
  <input name="email" type="email" />
  <textarea name="message"></textarea>
  <button>Send</button>
</form>
```

Funciona, en tu equipo. Pulsas **Send**, se abre tu app de correo con los campos en el cuerpo y te lo envías a ti mismo. La experiencia de un visitante es distinta:

Diagrama: Qué hace un formulario mailto: en el dispositivo de un visitante

1. El visitante pulsa Enviar. El navegador no envía el formulario a ningún sitio; le pasa un enlace mailto: al sistema operativo.
2. Si no hay una app de correo ni un gestor web configurado, algo habitual en portátiles de empresa y entre quienes usan Gmail en el navegador, no pasa nada visible o el sistema pregunta qué app usar.
3. Si hay una configurada, se abre un borrador en la app de correo del visitante con los campos pegados en el cuerpo.
4. El visitante tiene que pulsar Enviar una segunda vez, desde su propia cuenta. Muchos cierran el borrador, y tú nunca te enteras de que lo intentaron.

Todo lo que viene después del primer paso ocurre en el dispositivo del visitante, así que no puedes ver dónde abandona la gente.

Cuando un mensaje sí llega, el cuerpo son líneas `name=value` en bruto, porque eso es lo que produce la codificación `text/plain`:

`Lo que llega`:

```text
name=Ada Lovelace
email=ada@example.com
message=Hi, do you take on small bathroom jobs in March?
```

Los otros caminos hacia Gmail funcionan, pero cada uno necesita un servidor que gestiones tú:

| Camino | Qué necesita | Pega |
| --- | --- | --- |
| SMTP de Gmail con una contraseña de aplicación | Un servidor que ejecute código, y la verificación en dos pasos en la cuenta de Google | La contraseña puede enviar en tu nombre desde cualquier lugar, así que nunca debe llegar al navegador. Google además limita cuánto envía al día una cuenta personal |
| Google Apps Script con `MailApp` | Un script desplegado como app web | Las cuentas personales pueden enviar emails a 100 destinatarios al día desde scripts. La URL es pública y sin protección antispam, así que un solo bot puede agotarla |
| Un backend de formularios | La URL del backend en `action` | El email llega desde la dirección del servicio, no desde la tuya. El reply-to resuelve lo que importa |

Apps Script merece un análisis más detallado, porque es el camino que sugieren la mayoría de los tutoriales. Escribes una función `doPost`, la despliegas como app web que cualquiera puede llamar y apuntas el formulario a su URL. Funciona, pero un envío de formulario normal deja al visitante en una página servida desde el dominio de Google en lugar del tuyo, cualquier bot que encuentre la URL puede agotar la cuota del día y el script se ejecuta como tú, así que un fallo en él puede enviar emails a cualquiera desde tu cuenta. Además, a partir de ahí cada cambio en los campos del formulario es cosa tuya.

## Envía el formulario a Gmail

Este es un formulario para un pequeño negocio de oficios. El campo `job` hace que la bandeja sea fácil de revisar, y `email` tiene ese nombre para que las respuestas vayan al visitante:

`contact.html`:

```html
<form action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post">
  <label for="name">Your name</label>
  <input id="name" name="name" autocomplete="name" required />

  <label for="email">Email for our reply</label>
  <input id="email" name="email" type="email" autocomplete="email" required />

  <label for="job">What do you need?</label>
  <select id="job" name="job" required>
    <option value="">Choose one</option>
    <option value="repair">A repair</option>
    <option value="quote">A quote for a new job</option>
    <option value="other">Something else</option>
  </select>

  <label for="message">Details</label>
  <textarea id="message" name="message" rows="5" required></textarea>

  <input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden />
  <button>Send to our inbox</button>
</form>
```

1. Crea un formulario en Ikiform y sustituye `frm_xxxxxxxxxxxxxxxx` por su id.
2. Si te registraste con tu dirección de Gmail, ya recibes los emails como propietario del espacio de trabajo. Si no, abre los ajustes de **Notifications** del formulario, escribe la dirección de Gmail en **Add someone outside the workspace** y pulsa **Send link**.
3. Abre el email de confirmación en Gmail y confirma. Hasta entonces, la dirección muestra **Waiting for confirmation** y no recibe nada.
4. Añade tu dominio en **Allowed domains** del formulario, publica la página y envía una prueba.

## Mantenlo fuera del spam con un filtro de Gmail

El primer email de un remitente nuevo puede acabar en **Spam** o en **Promotions**. Un filtro sobre el remitente lo soluciona para siempre. En Gmail, abre las opciones de búsqueda, pon `notifications@ikiform.com` en **From**, pulsa **Create filter** y marca **Never send it to Spam**, **Apply the label**, **Always mark it as important** y **Categorize as: Primary**, lo que lo mantiene fuera de **Promotions**.

O importa el filtro. Este es el formato que genera la propia función **Export** de filtros de Gmail; Google no lo documenta aparte, así que si una importación falla, crea el filtro a mano como arriba. Guárdalo como `mailFilters.xml` y ve a **Settings**, **See all settings**, **Filters and Blocked Addresses**, **Import filters**:

`mailFilters.xml`:

```text
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xmlns:apps="http://schemas.google.com/apps/2006">
  <title>Mail Filters</title>
  <entry>
    <category term="filter"></category>
    <title>Mail Filter</title>
    <content></content>
    <apps:property name="from" value="notifications@ikiform.com"/>
    <apps:property name="label" value="Website"/>
    <apps:property name="shouldNeverSpam" value="true"/>
    <apps:property name="shouldAlwaysMarkAsImportant" value="true"/>
    <apps:property name="smartLabelToApply" value="^smartlabel_personal"/>
  </entry>
</feed>
```

Crea primero la etiqueta **Website**, o cámbiale el nombre en el archivo. Un solo filtro cubre todos los formularios, porque todas las notificaciones llegan desde la misma dirección. Para separar formularios en etiquetas distintas, filtra por el asunto, como `subject:("New submission: Quote request")`.

> Gmail ignora los puntos y todo lo que va después de un signo más en la parte anterior a la @. Si añades `you+site@gmail.com` como destinatario, llega a tu bandeja normal, y un filtro sobre **To** puede distinguir el correo del sitio de todo lo demás. Cuenta como dirección externa, así que se confirma mediante un enlace como cualquier otra.

## Responder desde Gmail

Gmail respeta la cabecera reply-to, así que **Reply** se dirige al visitante. Tu respuesta sale desde tu dirección de Gmail, sin rastro de Ikiform en el hilo.

- Para responder desde la dirección de tu negocio, añádela en **Settings**, **Accounts and Import**, **Send mail as**, y elígela en la línea **From** cuando respondas.
- Gmail puede agrupar en una sola conversación las notificaciones con el mismo asunto, porque el asunto es siempre `New submission:` y el nombre del formulario. Desactiva **Conversation view** en los ajustes de Gmail si prefieres ver una fila por mensaje.
- Los resúmenes por hora no tienen reply-to, porque cubren a muchos visitantes. Responde a esos desde los enlaces del panel.

## Comprueba que funciona

1. Rellena el formulario en tu página y envíalo. Llegas a tu página de agradecimiento, o a la alojada de Ikiform.
2. Busca el email en Gmail. Tiene tu etiqueta y no está en **Spam** ni en **Promotions**.
3. Pulsa **Reply**. La línea **To** es la dirección escrita en el formulario.
4. Envía con el honeypot relleno, `_gotcha=bot`. Sigue recibiendo una respuesta de éxito, pero el envío se guarda como spam y no manda ningún email ni webhook.
5. ¿No llegó nada? Cambia el filtro de estado del panel a **Spam**. El spam recibe la misma respuesta de éxito que un envío real.

## Detalles a tener en cuenta

- **Alias de Google Workspace.** Si el destinatario es un alias o un Grupo de Google, los ajustes del propio grupo deciden si se permiten remitentes externos. Envía una prueba antes de confiar en ello.
- **La confirmación va a spam.** El email con el enlace de confirmación también viene de Ikiform. Si no aparece, mira en **Spam** y márcalo como no spam.
- **Varias direcciones de Gmail.** Cada formulario envía emails a un máximo de 10 direcciones en total, y cada dirección externa se confirma por separado.
- **Enlaces mailto: antiguos en otras partes.** Un enlace `mailto:` en tu pie de página está bien como enlace. El problema es solo `mailto:` como `action` de un formulario.

## Preguntas

### ¿Puedo enviar los envíos de un formulario a una dirección de Google Workspace?

Sí. Una dirección de Workspace funciona como cualquier otro destinatario. Si es un Grupo de Google o un alias, comprueba que el grupo acepta correo de remitentes externos y envía una prueba.

### ¿Por qué mi formulario mailto: no envía nada?

Un action mailto: nunca envía. Le pide al dispositivo del visitante que abra una app de correo con un borrador. Si no hay ninguna configurada, no pasa nada visible, y si la hay, el visitante aún tiene que pulsar Enviar en ella.

### ¿Puedo usar el SMTP de Gmail para enviar los emails del formulario?

Solo desde un servidor que gestiones tú, con una contraseña de aplicación en una cuenta con verificación en dos pasos. Nunca pongas esa contraseña en código del navegador; puede enviar correo en tu nombre.

### ¿Cómo evito que los emails del formulario vayan al spam de Gmail?

Crea un filtro de Gmail para el correo de notifications@ikiform.com y marca Never send it to Spam. Aplica a la vez una etiqueta, para que los mensajes del formulario sean fáciles de encontrar.

### ¿Puedo responder desde Gmail a la persona que rellenó el formulario?

Sí, cuando el campo del email del formulario se llama email, email_address, your_email, reply_to o contact_email, o el formulario envía un campo _replyto. Gmail pone entonces al visitante en la línea To cuando pulsas Reply.

## Más guías

- [Envía un formulario a tu email](https://ikiform.com/es/guides/send-form-to-email.md): Recibe cada envío de formulario en tu bandeja sin servidor de correo: por qué fallan mailto: y mail() de PHP, y una configuración que filtra spam y te deja responder.
- [Responde desde tu bandeja](https://ikiform.com/es/guides/send-form-to-email/reply-to.md): Haz que Reply en una notificación de formulario responda a quien lo rellenó: qué nombres de campo funcionan, cuándo usar _replyto y por qué se pierden las respuestas.
- [Sin PHP](https://ikiform.com/es/guides/send-form-to-email/without-php.md): Sustituye un script contact.php que llama a mail() por un formulario que envía a un endpoint alojado, conservando tus nombres de campo, tu página de agradecimiento y las respuestas.
- [Varios destinatarios](https://ikiform.com/es/guides/send-form-to-email/multiple-recipients.md): Envía un formulario por email a todo tu equipo, o dirige cada mensaje a la persona adecuada según el tema, sin dejar que el propio formulario elija quién recibe el correo.
- [Alternativa a EmailJS](https://ikiform.com/es/guides/send-form-to-email/emailjs-alternative.md): Saca un formulario de contacto de EmailJS: por qué las claves de email en el navegador son un riesgo, qué cambia en tu código y qué pierdes, como la respuesta automática.
- [Next.js](https://ikiform.com/es/guides/send-form-to-email/nextjs.md): Dos formas de enviar por email un formulario de Next.js con una Server Action: enviarlo tú con Resend o Nodemailer, o reenviarlo a un backend de formularios, comparadas con honestidad.
