Guía práctica

El formulario dice «enviado», pero no llega el correo

Una prueba bien seguida ayuda más que varios envíos sin revisar sus respuestas.

Respuesta breve. Comprueba por separado la petición de la web, el registro en Formgong y el canal de correo con un destinatario verificado. success: true confirma aceptación, no entrega del email. El spam, las cuentas sin verificar y Turnstile requieren comprobaciones adicionales.

Formgong·

Tu formulario Nombre Email Mensaje Enviar Formgong Telegram Nueva consulta Nombre · Email Abrir consulta + aviso por correo
El diseño sigue en tu web. Formgong recibe las consultas y envía los avisos.

No mezcles aceptación con entrega

El agradecimiento de la página puede ser solo un estado visual. El registro guardado y el correo recibido son otros dos resultados. Usa un mensaje identificable en la web publicada y síguelo. Los códigos de esta guía son de Formgong; otros servicios tienen respuestas propias.

Abre la pestaña Network

Envía el formulario y busca el POST a https://formgong.com/submit. Revisa clave, campos y respuesta. Si no existe la petición, revisa el evento del formulario o el botón. En HTML importan action y method; en JavaScript, la URL de fetch.

Lee la respuesta antes de dar las gracias

Solicita JSON con Accept: application/json. Verifica el estado HTTP y success: fetch puede terminar con una respuesta de error. El HTML clásico recibe una redirección. Llama al ejemplo dentro de try/catch y conserva los datos si falla.

JavaScript
// Call from your form's submit handler inside try/catch.
// Keep the entered fields when the request fails.
async function sendContactForm(form) {
  const response = await fetch("https://formgong.com/submit", {
    method: "POST",
    headers: {
      "Content-Type": "application/json",
      Accept: "application/json",
    },
    body: JSON.stringify({
      ...Object.fromEntries(new FormData(form)),
      access_key: "fk_your_access_key",
    }),
  });
  const result = await response.json();
  if (!response.ok || result.success !== true) {
    throw new Error(result.message || "Submission failed");
  }
  // Accepted by Formgong; this is not email-delivery confirmation.
  return result.id;
}

Utiliza el código para elegir la revisión

unknown_access_key apunta a la clave; origin_not_allowed, al dominio. turnstile_missing y turnstile_failed indican problemas con el token. rate_limited y limit_exceeded son límites distintos: no se resuelven pulsando repetidamente.

Desactiva el botón mientras esperas y actívalo al terminar. No borres la consulta tras un error.

Busca también entre los registros de spam

Elige el formulario que corresponde a la clave de la web. Un botcheck rellenado puede producir una respuesta aparentemente correcta y guardar spam sin avisos. Si está activa la evaluación por IA con retención de spam, revisa también esa clasificación.

Si el registro existe, revisa los avisos

Confirma el correo del propietario, activa los avisos del formulario y verifica el destinatario. Después revisa spam, filtros y reenvíos de su buzón.

Un mensaje recibido en Telegram acota el problema al correo, pero no prueba su entrega. La respuesta automática al visitante es otra comunicación con sus propios ajustes.

Tras activar Turnstile

Actualiza la integración con el site key vigente y cf-turnstile-response. Los tokens caducan y solo se utilizan una vez; quizá debas reiniciar el widget para el siguiente intento. El secret key no va en el navegador.

Guarda una prueba útil para continuar

Anota URL, hora, estado HTTP, código y el ID del envío si aparece. No publiques datos de clientes ni secretos. Tras corregirlo, prueba todo el recorrido.

Puedes partir del ejemplo HTML o añadir avisos con la guía de Telegram.

Preguntas frecuentes

¿success: true confirma el correo?

No. Confirma que Formgong aceptó la petición. El aviso se entrega por separado.

¿Por qué llega Telegram pero no el correo?

Son canales independientes. Revisa avisos, destinatarios verificados y spam.

¿Por qué botcheck no muestra error?

Es una trampa para bots: la petición puede parecer exitosa y quedar como spam sin avisos.

¿Qué hago tras un error de Turnstile?

Obtén un token nuevo y comprueba que se envía en cf-turnstile-response. No reutilices uno ya consumido.

Fuentes y documentación

Referencias oficiales para esta guía: MDN: Fetch API, Cloudflare: Turnstile token validation. Documentación de Formgong, Dónde se guardan los datos.

Leer en Markdown
← Volver al blog