Guías18 min de lectura
Cuando los formularios de tu creador de sitios se quedan cortos
Cuando los formularios de Webflow, Netlify, Carrd o Framer chocan con un tope o les falta algo, conserva el formulario que diseñaste y apúntalo a un backend de formularios.
Conserva el formulario que dibuja tu creador de sitios y cambia solo adónde envía: un action personalizado en Webflow, Send to URL en Carrd, un destino webhook en Framer o un action normal en una página alojada en Netlify. El envío va entonces a un backend de formularios que valida, filtra, guarda y reenvía cada envío, así que los topes de envíos y las restricciones de plan del creador dejan de aplicarse. Comprueba primero a qué renuncias, como la subida de archivos y la bandeja de entrada propia del creador.
Los creadores de sitios incluyen formularios porque todo sitio necesita uno. Están pensados para el primer formulario de contacto, no para el décimo formulario ni para el envío número mil. En algún momento chocas con un muro: un tope de envíos, una función que exige un plan que no necesitas para nada más, un formulario que solo funciona mientras el sitio siga en un hosting concreto, o una bandeja de entrada que es tu único registro de quién te escribió.
No tienes que reconstruir el formulario para superarlo. Todos los creadores importantes pueden enviar un formulario a otro sitio. Esta guía explica qué cambia cuando lo haces, cómo hacerlo en cada creador sin perder ningún envío, y cuándo es mejor quedarse con los formularios del creador.
Qué cambia cuando el formulario sale del creador
Un formulario de un creador tiene dos mitades: la parte que ves, que dibuja el creador, y la parte que recibe el envío. Pasar a un backend de formularios sustituye solo la segunda mitad. Tu diseño, tus fuentes y tus estilos se quedan donde están.
- Antes: un visitante envía el formulario, y el gestor de formularios propio del creador recibe el envío.
- El creador lo suma al tope de envíos del plan y lo guarda en su bandeja o lo envía por email.
- Después: el mismo formulario, con el mismo diseño, envía al endpoint de Ikiform.
- Ikiform valida los campos, puntúa el envío por spam y lo guarda.
- Ikiform avisa por email a tu equipo, envía webhooks firmados y mantiene cada envío consultable y exportable como CSV.
Los límites con los que choca la gente
Cada creador pone el límite en un sitio distinto. La tabla resume lo que dice cada uno en sus propias páginas de precios y de ayuda a octubre de 2026. Los planes cambian, así que consulta la página de cada variante para el detalle y el sitio del creador antes de decidir.
| Creador | Qué hacen sus formularios | Dónde choca la gente con el muro | La salida |
|---|---|---|---|
| Webflow | Guarda los envíos, avisa por email y exporta CSV | El plan gratuito Starter permite 50 envíos de formulario por sitio en total, y el contador no se reinicia. Los sitios exportados no tienen ninguna gestión de formularios | Un action personalizado en los ajustes del Form Block. También funciona en Starter |
| Netlify | Detecta los formularios data-netlify al desplegar y guarda los envíos | Los planes antiguos miden los envíos por sitio y mes, y suben el sitio a un nivel de Forms de pago cuando supera el límite. Los formularios solo funcionan en sitios que genera Netlify | Quita los atributos de Netlify y pon el action del formulario |
| Carrd | Los formularios de contacto te envían un email; los de suscripción añaden gente a una herramienta de email | Cualquier formulario necesita Pro Standard. Los formularios personalizados, incluido Send to URL, necesitan Pro Plus | Send to URL en Pro Plus, o un Embed en Pro Standard |
| Framer | Envía cada envío a email, Google Sheets o un webhook | Prácticamente sin tope. Los equipos quieren un registro guardado con estado de spam, validación, notificaciones y más de un destino | Añade el endpoint como destino webhook, o usa un code component |
Fíjate en la fila de Framer. Framer ya tiene webhooks, así que dejar sus formularios es una decisión sobre lo que pasa después del envío, no un rodeo para evitar un tope. La página de Framer dice con franqueza cuándo no necesitas Ikiform en absoluto.
Cuatro formas de superar el límite
Un backend de formularios no es la única respuesta, y a veces no es la mejor.
| Enfoque | Punto fuerte | Inconvenientes |
|---|---|---|
| Mejorar el plan del creador | Ninguna migración. Los planes de sitio de pago de Webflow incluyen envíos ilimitados; los planes por créditos de Netlify hacen gratis los formularios | Pagas todo el plan para quitar un límite. El formulario sigue atado a ese creador y a ese hosting |
| Incrustar un creador de formularios, como Tally o Typeform | Tipos de pregunta avanzados, lógica y subida de archivos sin código | Un iframe con su propio aspecto y sus scripts. El diseño que hiciste en el creador desaparece, y los límites pasan a los planes de ese producto |
| Escribir tu propio gestor, como una función serverless | Control total, la lógica que quieras | Ahora te encargas tú del filtrado de spam, los límites de frecuencia, el almacenamiento, las notificaciones y los reintentos, en un sitio para el que elegiste un creador precisamente para no mantener código |
| Apuntar el formulario a un backend de formularios, como Ikiform | Conserva tu diseño. Filtrado de spam, almacenamiento, email al equipo, webhooks firmados y exportación CSV, igual en todos los creadores | Todavía sin subida de archivos, sin bandeja del creador y sin integraciones montadas con clics dentro del creador. Algunos creadores necesitan un plan de pago para enviar a otro sitio |
Mejora el plan cuando los formularios del creador ya hacen todo lo que necesitas y el plan te compensa también por otros motivos. Pasa a un backend de formularios cuando el límite tiene que ver con el propio formulario: quieres un único sitio para los envíos de varios sitios, puede que cambies de creador, o los envíos tienen que llegar de forma fiable a otras herramientas. La comparativa con Netlify Forms analiza ese equilibrio en detalle para un hosting.
A qué renuncias
Cuando un formulario envía a otro sitio, el creador lo trata como un formulario HTML normal. Sus funciones de formulario dejan de aplicarse a ese formulario. Conoce la lista antes de cambiar:
- La bandeja del creador. Los envíos nuevos aparecen en el panel de Ikiform, no en el del creador. Los antiguos se quedan donde estaban.
- El mensaje de éxito del creador, a veces. Los bloques de éxito y de error de Webflow solo funcionan cuando Webflow gestiona el envío. El modo AJAX de Carrd y el destino webhook de Framer conservan los suyos.
- Subida de archivos. La subida de archivos todavía no está disponible. Un envío con un archivo recibe
422 files_not_supported. Los formularios personalizados de Webflow, Netlify y Carrd aceptan archivos, así que comprueba esto primero. - Integraciones montadas con clics. No hay integraciones de un clic. Cada herramienta se conecta mediante un webhook firmado, directamente o a través de una herramienta de automatización como Zapier o n8n.
- El filtro de spam del creador. El honeypot, la puntuación de spam, los límites de frecuencia y la verificación humana opcional de Ikiform toman el relevo. Un elemento reCAPTCHA añadido en el creador no hace nada con un destino personalizado; quítalo.
Apunta cada creador a Ikiform
Crea un formulario en el panel de Ikiform y copia su endpoint. Luego usa el ajuste propio del creador para un destino externo. Las guías de la documentación para Webflow, Carrd y Framer tienen el recorrido completo de clics; aquí tienes qué cambiar y lo único que casi todo el mundo pasa por alto.
Webflow
- Selecciona el formulario dentro del Form Block y abre Settings.
- En Send to, elige un action personalizado, pega el endpoint en Action y pon Method en POST.
- Cambia el Name de cada input por un id en minúsculas, como
email. Webflow rellena los nombres a partir de las etiquetas, así que si no tendríasEmailyField 2. - Publica y envía desde el dominio
webflow.io. Los actions personalizados no se ejecutan en el Designer.
Fácil de pasar por alto: el bloque de éxito de Webflow deja de mostrarse, porque Webflow ya no ve el resultado. Configura Redirect after submit en Ikiform, o añade el script de la documentación de Webflow. El detalle y el tope de Starter están en la página del límite de Webflow.
Netlify
- Quita
data-netlifyonetlify,netlify-honeypoty cualquier input ocultoform-name. - Pon el endpoint en el
actiondel formulario ypostenmethod. - Pasa la antigua ruta de agradecimiento a Redirect after submit, como URL
https:completa. - En los formularios con JavaScript, borra la copia estática oculta que mantenías para el build de Netlify y envía al endpoint en lugar de a tu propio sitio.
Fácil de pasar por alto: las previews de despliegue viven en sus propios subdominios netlify.app, así que tu dominio de producción en Allowed domains no las cubre. La página de Netlify tiene el código para cada framework.
Carrd
- En Pro Plus, añade un Form, pon Type en Custom, luego Send to URL, y pega el endpoint.
- Pon Method en AJAX y Format en Default, para que Carrd mantenga su comportamiento On Success y On Failure.
- Dale a cada campo un ID o Submitted ID:
name,email,message. - En Pro Standard, pega en su lugar un formulario HTML en un elemento Embed.
Fácil de pasar por alto: el formato XML falla con 415, y un campo File falla con 422 files_not_supported. Consulta la página de Carrd.
Framer
- Dale a cada input un nombre en minúsculas. Framer envía los nombres como claves JSON.
- Selecciona el formulario y, junto a Send To, elige Add… > Webhook, y pega el endpoint.
- En Ikiform, deja Allowed domains vacío y el Spam check desactivado, y elige el límite de frecuencia Relaxed.
Fácil de pasar por alto: Framer envía desde sus servidores, no desde el navegador del visitante, así que las comprobaciones de origen y los límites de frecuencia por visitante no funcionan como siempre. La página de Framer explica el equilibrio y un relay firmado que lo soluciona.
Squarespace, Wix, WordPress y el resto
Los creadores sin ajuste para un destino externo suelen aceptar un embed HTML. Pega un formulario como el de abajo en un bloque de código o embed. Envía con fetch para que los visitantes se queden en la página, muestra el primer error de campo de Ikiform y recurre a un envío normal si el script no se ejecuta.
<form id="enquiry" action="https://ikiform.com/f/frm_xxxxxxxxxxxxxxxx" method="post" target="_top">
<label>Name <input name="name" autocomplete="name" required maxlength="120"></label>
<label>Email <input name="email" type="email" autocomplete="email" required></label>
<label>Budget
<select name="budget">
<option value="">Not sure yet</option>
<option value="under_5k">Under $5k</option>
<option value="5k_20k">$5k to $20k</option>
<option value="over_20k">Over $20k</option>
</select>
</label>
<label>What are you planning? <textarea name="message" rows="5" required minlength="20"></textarea></label>
<input type="hidden" name="source" value="builder-embed">
<input name="_gotcha" type="text" tabindex="-1" autocomplete="off" hidden>
<p id="enquiry-status" role="status" hidden></p>
<button type="submit">Send enquiry</button>
</form>
<script>
document.getElementById("enquiry").addEventListener("submit", async (event) => {
event.preventDefault();
const form = event.currentTarget;
const status = document.getElementById("enquiry-status");
const button = form.querySelector("button");
button.disabled = true;
try {
const response = await fetch(form.action, {
method: "POST",
headers: { Accept: "application/json" },
body: new FormData(form),
});
const result = await response.json();
if (result.ok) {
form.replaceChildren(Object.assign(document.createElement("p"), {
textContent: "Thanks. We reply within two working days.",
}));
return;
}
const fields = result.error.fields ?? {};
const first = Object.keys(fields)[0];
status.textContent = first ? `${first}: ${fields[first][0]}` : result.error.message;
} catch {
status.textContent = "Couldn't send. Check your connection and try again.";
}
status.hidden = false;
button.disabled = false;
});
</script>target="_top"importa cuando el creador envuelve los embeds en un iframe. Sin él, un envío normal cargaría la página de agradecimiento dentro del marco.- El input oculto
_gotchaes el honeypot. Las personas no lo ven; los bots que rellenan todos los inputs se marcan solos como spam. - El input oculto
sourceregistra de qué creador o página vino la consulta, lo que ayuda cuando varios sitios envían a un mismo formulario. - El script envía con
fetch, así que deja el Spam check desactivado para este formulario, o quita el script y deja que el navegador envíe de forma normal, lo que ejecuta la comprobación sin código extra.
Las guías de Squarespace, Wix y WordPress explican dónde te deja pegar código cada creador, y el embed para creadores de sitios tiene una versión con estilos.
- El action personalizado de Webflow hace que el navegador del visitante envíe a Ikiform, así que lista tus dominios en Allowed domains.
- Send to URL y Embed de Carrd también envían desde el navegador, así que los dominios permitidos funcionan como siempre.
- Un formulario alojado en Netlify con un action normal envía desde el navegador. Lista el dominio de producción y los dominios de preview en los que pruebes.
- El destino webhook de Framer envía desde los servidores de Framer sin cabecera Origin, así que deja Allowed domains vacío, o cada envío se tratará como si viniera del sitio equivocado.
Los nombres de campo son la verdadera migración
La mayor parte del trabajo al mover un formulario de un creador es poner nombres. Ikiform guarda los nombres que envíe el formulario, y cada creador genera los nombres a su manera:
| Creador | De dónde sale el nombre | Qué obtienes si no lo defines |
|---|---|---|
| Webflow | El ajuste Name de cada input | La etiqueta, como Name, Email o Field 2 |
| Carrd | Submitted ID, luego ID | Un ID generado a partir de la etiqueta |
| Framer | El nombre de cada input | Como se llamara el input cuando lo añadiste |
| Netlify | El atributo name de tu HTML | Tus propios nombres, normalmente ya están bien |
Cámbialos por ids cortos en minúsculas antes de salir a producción: name, email, budget, message. Los emails de notificación y las columnas del CSV se leen mejor, y un campo email se convierte en la dirección de respuesta de cada notificación. Cuando haya llegado un envío real, añade campos al formulario de Ikiform para que el servidor imponga tipos y longitudes. Prueba el formulario de consulta de arriba con su definición:
Vista previa
Ejecuta el validador de Ikiform en tu navegador. No se envía nada.
422 con un error Unknown field.Dominios de staging y dominios permitidos
Los creadores publican en una dirección de staging antes que en tu propio dominio. Los envíos desde un dominio que no está en los Allowed domains del formulario se guardan como spam, o se rechazan con Reject. Lista todas las direcciones desde las que vayas a probar:
| Creador | Dirección de staging | Añade |
|---|---|---|
| Webflow | your-site.webflow.io | Ese host, más tu dominio |
| Carrd | your-site.carrd.co, o crd.co en Pro | Ese host, más tu dominio |
| Netlify | your-site.netlify.app, y previews como deploy-preview-42--your-site.netlify.app | Cada host en el que pruebes. Una preview no es un subdominio de your-site.netlify.app |
| Framer, webhook | No aplica | Nada. Deja la lista vacía |
No añadas un host compartido entero como webflow.io o netlify.app. Eso permitiría que cualquier sitio de ese host enviara a tu formulario. Los subdominios de un dominio que listes ya están permitidos, así que example.com cubre www.example.com.
Llévate tus envíos antiguos
Ikiform no tiene importación, así que los envíos pasados se quedan donde estaban. Expórtalos antes de cambiar, y antes de que un cambio de plan pueda eliminarlos:
- Webflow: descarga los envíos de cada formulario como CSV desde los ajustes de Forms del sitio.
- Netlify: descarga los envíos de cada formulario como CSV desde la sección Forms del sitio.
- Carrd: los formularios de contacto y los formularios personalizados por email entregan cada mensaje por email, así que tu bandeja de entrada es el registro.
- Framer: la bandeja de email o la hoja de Google Sheets a la que enviabas los envíos es el registro.
Para tener un único historial, pon la exportación antigua y una exportación CSV de Ikiform en dos pestañas de una hoja de Google Sheets y apílalas. Esta fórmula toma las columnas de fecha, nombre, email y mensaje de cada una, de la más reciente a la más antigua. Ajusta las letras de columna a tus archivos:
=SORT({
Webflow!A2:A, Webflow!C2:C, Webflow!D2:D, Webflow!E2:E;
Ikiform!B2:B, Ikiform!F2:F, Ikiform!G2:G, Ikiform!H2:H
}, 1, FALSE)Una exportación de Ikiform empieza con id, created_at, form y status, luego una columna por campo, y contiene hasta 100.000 filas por archivo.
Cambia sin perder ningún envío
- Crea el formulario en Ikiform, añade los destinatarios de las notificaciones y añade tus dominios de staging y de producción en Allowed domains.
- Cambia el destino en el sitio de staging y envía una prueba real desde un móvil y desde un portátil.
- Revisa en el panel los nombres de campo del envío. Renombra todo lo generado, vuelve a publicar staging y prueba otra vez.
- Publica en tu dominio real a una hora tranquila y envía una prueba más.
- Deja activada la notificación del creador durante una semana si aún recibe algo, como un segundo formulario que no moviste, y luego desactívala.
- Exporta los envíos antiguos del creador y guarda el archivo junto al nuevo historial.
Durante la primera semana, revisa el filtro Spam del panel de Ikiform cada uno o dos días. Una consulta real guardada como spam recibe la misma respuesta de éxito que una real, así que el visitante nunca lo sabe. Márcala como no spam y su email y sus webhooks saldrán en ese momento. Los emails de notificación van a hasta 10 destinatarios confirmados.
Elige tu caso
Cada creador tiene su propio límite, su propio ajuste para un destino externo y sus propias trampas. Estas páginas van creador por creador.
- Límite de envíos de WebflowEl plan gratuito Starter de Webflow deja de recoger envíos tras 50 por sitio y los sitios exportados no tienen ninguno, así que apunta el Form Block a Ikiform.
- Límite de Netlify FormsLos 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.
- Formularios de CarrdEl formulario de contacto de Carrd solo te avisa por email y los formularios personalizados necesitan Pro Plus, así que usa Send to URL en Plus o un embed HTML en Standard para guardar cada envío.
- Formularios de FramerLos formularios de Framer ya envían a email, Sheets o un webhook; añade Ikiform como webhook para tener envíos guardados y filtrados, avisos al equipo y más destinos.
Comprueba que funciona
Hazlo primero en staging y luego una vez en el sitio real. Ikiform no tiene plan gratuito. Probar es gratis: un espacio de trabajo sin plan acepta 50 envíos de prueba al mes desde localhost. Para salir a producción, elige Pro desde 6 $/mes para 500 envíos, o paga una vez: 10.000 envíos por 49 $ o 50.000 envíos por 149 $, con créditos que nunca caducan. Consulta los precios.
- En Allowed domains del formulario, añade el dominio de tu sitio, y
localhostmientras desarrollas. Déjalo vacío para aceptar envíos desde cualquier lugar. - Publica en el dominio de staging del creador. Los destinos personalizados no se ejecutan en el editor ni en el designer.
- Rellena el formulario en tu página y envíalo. Llegas a tu página de agradecimiento, o a la alojada de Ikiform.
- Abre Submissions en el panel. El nuevo envío está ahí con todos los campos que enviaste.
- Lee los nombres de campo de ese envío. Deberían ser tus ids en minúsculas, no etiquetas ni nombres generados.
- 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. - Envía con el honeypot relleno,
_gotcha=bot. Igualmente recibe una respuesta de éxito, pero el envío se guarda como spam y no envía email ni webhook. - ¿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.
- Envía una vez más desde tu dominio real después de publicar en él.
Solución de problemas
| Problema | Qué hacer |
|---|---|
Una respuesta 404 not_found tras enviar un formulario de Webflow | Method es GET, así que el navegador abrió el endpoint como un enlace. Ponlo en POST y vuelve a publicar. |
| Carrd muestra On Failure en cada envío | Format es XML (415), hay un campo File (422), o los IDs de los campos no coinciden con una definición de campos. Usa Default, quita el campo de archivo y haz coincidir los IDs. |
| Framer informa de entregas de webhook fallidas | Ikiform rechazó el envío. Vacía Allowed domains, desactiva el Spam check para ese formulario y haz coincidir los nombres de los inputs con tus campos. |
| Netlify sigue mostrando el formulario en su pestaña Forms | Un despliegue antiguo o una copia estática del formulario sigue teniendo data-netlify. Quítalo en todas partes y vuelve a desplegar. |
403 origin_not_allowed, o todos los envíos acaban en spam | El dominio de la página no está en Allowed domains del formulario. Añádelo, y localhost para las pruebas locales. Los subdominios de un dominio de la lista están permitidos. |
422 validation_failed | El envío no coincide con la definición de campos del formulario. error.fields indica cada campo y el motivo. Haz que el name del input coincida con el id del campo. |
422 files_not_supported | El 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. |
| El envío está en el panel pero no llegó ningún email ni webhook | Se guardó como spam. El spam no envía nada. Ábrelo en el filtro Spam para ver los motivos y márcalo como no spam para enviar su email y sus webhooks. |
Preguntas
Un formulario con un action personalizado envía directamente a la URL que pongas, así que Webflow nunca lo procesa y no aparece entre los envíos de formularios de Webflow. El tope de Starter se refiere a los formularios que gestiona Webflow.
Sí. Todos los creadores de esta guía siguen dibujando el formulario. Solo cambias el destino: un action personalizado en Webflow, Send to URL en Carrd, un webhook en Framer o el atributo action en una página alojada en Netlify.
Sí. Cada formulario tiene su propio destino. Una división habitual es dejar en el creador un formulario con subida de archivos y mover a Ikiform los de contacto, consulta y suscripción.
No, Ikiform no tiene importación. Exporta los envíos antiguos como CSV desde el creador y guárdalos junto a la exportación CSV de Ikiform, o apila ambos en una sola hoja de cálculo.
En Carrd con AJAX y con el webhook de Framer, sí. En Webflow, el bloque de éxito deja de mostrarse salvo que añadas un pequeño script; si no, configura Redirect after submit con tu propia página de agradecimiento. Un formulario HTML normal llega a la página de agradecimiento de Ikiform o a tu redirección.
Todavía no. Un envío que contiene un archivo se rechaza con 422 files_not_supported. Pide en su lugar un enlace al archivo, como la URL de una carpeta compartida.
No, no hay plan gratuito. Probar es gratis: puedes enviar 50 envíos de prueba al mes desde localhost antes de pagar. Para pasar a producción, Pro empieza en 6 $/mes por 500 envíos, o puedes pagar una sola vez 49 $ por 10.000 envíos o 149 $ por 50.000 envíos, con créditos que nunca caducan.
¿Te atascaste en un paso o quieres una guía para tu caso? Escribe a hello@ikiform.com.