Más allá de los formularios del creador

Más allá de los formularios del creador8 min de lectura

Límite de Netlify Forms: qué pasa a los 100 envíos y cómo salir

Los planes antiguos de Netlify miden los envíos de formularios por sitio y te suben de nivel automáticamente, y los planes por créditos pueden pausar el sitio, así que lleva el formulario a un backend.

Preet SutharFundador, Ikiform

En los planes antiguos de Netlify, cada sitio incluye 100 envíos de formulario al mes, y superarlos sube automáticamente el sitio a un nivel de Forms de pago. En los planes por créditos de las cuentas creadas desde septiembre de 2025, los formularios son gratis, pero un equipo gratuito que se queda sin créditos tiene todos sus sitios pausados, formularios incluidos. Llevar el formulario a Ikiform significa quitar los atributos de Netlify y poner el action, en HTML puro o en cualquier framework.

Qué cambia en Netlify

Netlify no es un creador de sitios; es un hosting con formularios integrados. Eso determina tanto el límite como la salida. El límite que se aplica depende de cuándo se creó tu cuenta:

CuentaQué dice la documentación de NetlifyQué significa para un formulario con mucho tráfico
Planes antiguos, creados antes del 4 de septiembre de 2025Forms Level 0 incluye 100 envíos y 10 MB de subidas por sitio y mes. Superarlo sube el sitio a Forms Level 1, con 1.000 envíos, cobrado al final del ciclo de facturación. Por encima, los paquetes de uso extra añaden 500 cada vezUna ola de spam puede pasar un sitio a un nivel de pago sin que nadie lo decida. En el nivel antiguo gratuito, alcanzar un límite pausa todos los sitios de la cuenta
Planes por créditos, creados desde entoncesLos envíos de formularios son gratis e ilimitados, sin nivelesEl formulario en sí no cuesta nada. Pero cuando un equipo gratuito gasta sus créditos mensuales, Netlify pausa todos sus proyectos, y los proyectos pausados no reciben envíos de formularios

La propia documentación de Netlify deja claro que la subida de nivel antigua es automática y que no puedes volver a bajar mientras el uso esté por encima del nivel inferior. Comprueba el tipo de plan de tu equipo y el uso de formularios del sitio en el panel de Netlify antes de decidir nada.

El segundo motivo por el que la gente se va no tiene nada que ver con las cifras. Netlify Forms funciona leyendo tu HTML desplegado:

  • Los formularios se detectan al desplegar. Un formulario renderizado por React, Vue o Svelte no existe en ese HTML, así que mantienes una copia estática oculta para que la encuentre el build, y envías a ella con un campo form-name.
  • Con Next.js, el adaptador OpenNext necesita esa copia como archivo estático en public/, y el envío debe ir a ese archivo estático, no a una página de Next.js. El build falla si data-netlify aparece en código React sin esa copia.
  • Los envíos deben ser urlencoded o multipart. No se acepta JSON.
  • El formulario solo funciona mientras el sitio esté desplegado en Netlify. Cambiar de hosting significa mover los formularios.
Cómo sube en un mes el uso de formularios de un sitio de Netlify con plan antiguo, y qué cambia enviar a IkiformPlan antiguo, un sitio, un mesFormulario enviando a IkiformLevel0100envíosincluidosenvío101el spamtambiéncuentaLevel11.000 almes,facturadopaquetesextra500 máscada unomismapáginaenNetlifyendpointdeIkiformURL delactionnormalNetlifyFormsnada quecontarsubida automáticaenvíoCómo sube en un mes el uso de formularios de un sitio de Netlify con plan antiguo, y qué cambia enviar a IkiformPlan antiguo, un sitio, un mesFormulario enviando a IkiformLevel 0100 envíos incluidosenvío 101el spam también cuentaLevel 11.000 al mes, facturadopaquetes extra500 más cada unomisma página en Netlifyendpoint de IkiformURL del action normalNetlify Formsnada que contarsubida automáticaenvío
  1. En un plan antiguo, un sitio empieza el mes en Forms Level 0 con 100 envíos incluidos.
  2. Llega el envío 101. La documentación de uso de Netlify describe el uso del sitio, así que una racha de spam puede ser lo que lo haga superar el límite.
  3. Netlify sube el sitio a Forms Level 1, con 1.000 envíos, y lo cobra al final del ciclo.
  4. Por encima del Level 1, los paquetes de uso extra añaden 500 envíos cada vez.
  5. Con el formulario enviando a Ikiform, la página sigue en Netlify pero el envío va al endpoint de Ikiform.
  6. Netlify Forms nunca recibe el envío, así que no hay nada que contar ni que subir de nivel.
El hosting se queda en Netlify. Solo se mueve el destino del formulario, y con él la medición.

Mueve el formulario, stack por stack

Antes de cambiar código, crea un formulario de Ikiform por cada nombre de formulario de Netlify y pon su Honeypot field en bot-field. Así tu input oculto actual sigue funcionando como honeypot, sin renombrarlo. Elige tu stack:

El HTML puro en Netlify es lo que menos cambios necesita. Borra los atributos de Netlify y el input form-name, apunta action al endpoint y pasa la ruta de agradecimiento a _redirect como URL completa. El input bot-field se queda como honeypot.

<form name="contact" method="POST" action="/thanks" data-netlify="true" netlify-honeypot="bot-field">
  <input type="hidden" name="form-name" value="contact" />
  <p hidden><input name="bot-field" /></p>
  <label>Email <input type="email" name="email" required /></label>
  <label>Topic
    <select name="topic">
      <option value="question">A question</option>
      <option value="bug">Something is broken</option>
      <option value="work">Working together</option>
    </select>
  </label>
  <label>Message <textarea name="message" required></textarea></label>
  <button type="submit">Send</button>
</form>
Las versiones de TanStack Start y React Router envían desde tu servidor. Las versiones de servidor envían con una clave secreta, así que Ikiform se salta Allowed domains y su verificación humana. Entonces todos los envíos vienen de la IP de tu servidor, y el límite Standard de 5 por minuto por visitante cuenta a todos tus visitantes juntos. Elige el límite de frecuencia Relaxed o Custom para un formulario que envías a través de un servidor, y guarda IKIFORM_SECRET_KEY en variables de entorno solo de servidor.

Todas las versiones mantienen los mismos nombres de campo que tenía Netlify, así que los emails de notificación y las columnas del CSV te resultarán familiares. La comparativa con Netlify Forms tiene la correspondencia completa de atributos, incluidos data-netlify-recaptcha y los inputs de archivo.

Previews de despliegue y dominios permitidos

Netlify da a cada pull request su propia dirección, como deploy-preview-42--your-site.netlify.app. No es un subdominio de your-site.netlify.app, así que listar la dirección de tu sitio en Allowed domains no cubre las previews, y los envíos desde una preview acaban en spam con origin_mismatch.

  • Añade your-site.netlify.app y tu dominio propio para producción.
  • Añade un host de preview concreto mientras lo pruebas, y luego quítalo.
  • No añadas netlify.app solo. Todos los sitios de Netlify podrían enviar a tu formulario.
  • O apunta las previews a un segundo formulario de Ikiform sin dominios permitidos, mediante una variable de entorno, y mantén estricta la producción.

Haz el cambio sin perder envíos

  1. Descarga como CSV los envíos pasados de cada formulario desde la sección Forms del sitio. Ikiform no tiene importación.
  2. Despliega el nuevo formulario en una preview y envía una prueba. Revisa los nombres de campo en el panel de Ikiform.
  3. Fusiona a producción y envía otra prueba desde el dominio real.
  4. Sustituye cualquier webhook saliente de Netlify por un webhook de Ikiform. Netlify firma con un token JWS; Ikiform usa las cabeceras de Standard Webhooks, así que tu verificador también cambia.
  5. Cuando no haya llegado ningún envío a Netlify durante unos días, desactiva la detección de formularios en los ajustes de Forms del sitio.
Netlify acepta subida de archivos y pasa Akismet por cada envío. La subida de archivos todavía no está disponible. Un envío con un archivo recibe 422 files_not_supported. Si un formulario necesita archivos, deja ese formulario en Netlify Forms y mueve el resto.

Comprueba que funciona en Netlify

  1. En Allowed domains del formulario, añade el dominio de tu sitio, y localhost mientras desarrollas. Déjalo vacío para aceptar envíos desde cualquier lugar.
  2. Despliega una preview, añade su host y envía el formulario desde ella.
  3. Abre Submissions en el panel. El nuevo envío está ahí con todos los campos que enviaste.
  4. Confirma que los campos son email, topic y message, sin form-name y sin bot-field.
  5. Abre la pestaña Forms del sitio en Netlify y confirma que la prueba no está ahí.
  6. Envía una vez con bot-field relleno. Se guarda como spam y no envía nada.
  7. Revisa la bandeja de entrada de cada destinatario de las notificaciones. Cada uno recibe un email con los campos, y Reply va a quien envió el formulario cuando este tiene un campo email.

Errores comunes

ProblemaQué hacer
Aparece un campo form-name en IkiformEl input oculto form-name sigue en el formulario, o tu código aún lo pone. Quítalo; Ikiform identifica el formulario por la URL.
El build de Next.js falla mencionando formulariosAún hay un atributo netlify o data-netlify en tu código React. Quítalo junto con public/__forms.html.
Las previews envían a spamEl host de la preview no está en Allowed domains. Añádelo mientras pruebas, o usa un segundo formulario para las previews.
Todos los envíos se marcan como spam, incluso los realesHoneypot field sigue siendo _gotcha mientras tu input es bot-field, o al revés. Haz que coincidan.
422 files_not_supportedEl formulario tiene un <input type="file"> con un archivo elegido. La subida de archivos aún no está disponible; quita el input o pide un enlace.
429 rate_limitedUn visitante envió más de lo que permite el límite de frecuencia del formulario. Standard permite 5 por minuto por visitante. Espera lo que indique Retry-After, o elige Relaxed o Custom para formularios que envían desde una IP compartida.

Preguntas

¿Te atascaste en un paso o quieres una guía para tu caso? Escribe a hello@ikiform.com.