# Guías de Ikiform

> Guías prácticas para recibir envíos de formularios en cualquier sitio: listas de espera, formularios de contacto, spam, correo y webhooks, con código para copiar.

## [Cómo crear una lista de espera para un nuevo SaaS](https://ikiform.com/es/guides/waitlist.md)

Crea una lista de espera previa al lanzamiento en tu propia landing page: el formulario, el antispam, los duplicados, los emails de confirmación y una exportación limpia el día del lanzamiento.

- [Cómo crear una lista de emails previa al lanzamiento en Product Hunt](https://ikiform.com/es/guides/waitlist/product-hunt.md): Reúne una lista semanas antes de Product Hunt, etiqueta cada registro por canal y envía el email del lanzamiento en dos tandas según el reinicio en hora del Pacífico.
- [Cómo crear un formulario de registro para una beta que filtre a los candidatos](https://ikiform.com/es/guides/waitlist/beta-signup.md): Un formulario de solicitud para una beta con preguntas de filtro que aplica el servidor, y un script que puntúa a los candidatos y elige cada grupo de la lista.
- [Cómo crear una página de lista de espera para una app móvil antes de lanzarla en la App Store](https://ikiform.com/es/guides/waitlist/mobile-app.md): Una lista de espera previa al lanzamiento para una app de iOS o Android que pregunta qué teléfono se usa, lleva a los testers de iPhone a TestFlight y llena una prueba cerrada de Play.
- [Cómo crear una lista de espera en Next.js con una server action](https://ikiform.com/es/guides/waitlist/nextjs.md): Una lista de espera con el App Router de Next.js: una server action que reenvía registros con una clave secreta, useActionState, un agradecimiento optimista y un límite por visitante.
- [Cómo añadir una lista de espera a un sitio de Framer](https://ikiform.com/es/guides/waitlist/framer.md): Dos formas de recoger registros de lista de espera en Framer: el formulario de Framer con un webhook a Ikiform, o un code component que conserva los límites por visitante y el antispam.
- [Cómo añadir un formulario de lista de espera a un sitio de Webflow](https://ikiform.com/es/guides/waitlist/webflow.md): Apunta un Form Block de Webflow a Ikiform, etiqueta los registros por origen con un campo oculto y conserva el estado de éxito de Webflow con un script breve para todos los formularios.
- [Cómo añadir una lista de espera a un sitio de Carrd](https://ikiform.com/es/guides/waitlist/carrd.md): Recoge registros de lista de espera en una página de Carrd: un formulario Send to URL en Pro Plus con seguimiento UTM, o un formulario HTML incrustado con honeypot en Pro Standard.
- [Cómo añadir un formulario de lista de espera en HTML puro a cualquier landing page](https://ikiform.com/es/guides/waitlist/html.md): Una página de lista de espera completa en HTML puro y sin build que funciona con JavaScript desactivado, muestra un agradecimiento en línea cuando carga y recurre a un plan B cuando hace falta.
- [Crea una lista de espera en Astro](https://ikiform.com/es/guides/waitlist/astro.md): Una lista de espera en Astro sobre una landing page estática: una Action reenvía cada registro, un script la llama y una página bajo demanda recoge los envíos sin JavaScript.
- [Crea una lista de espera en TanStack Start](https://ikiform.com/es/guides/waitlist/tanstack-start.md): Una lista de espera en TanStack Start: una ruta de servidor responde tanto a un envío de formulario normal como a fetch, y validateSearch lleva el origen y el resultado en la URL.
- [Crea una lista de espera en React Router](https://ikiform.com/es/guides/waitlist/react-router.md): Una lista de espera de React Router en el footer de cada página: un fetcher envía a una sola action de ruta, etiqueta cada registro con su página y funciona sin JavaScript.
- [Crea una lista de espera en SvelteKit](https://ikiform.com/es/guides/waitlist/sveltekit.md): Una lista de espera en SvelteKit 3: un hook guarda el primer ?ref= en una cookie, una form action con nombre reenvía el registro y quien vuelve ve que ya se unió.
- [Crea una lista de espera en Nuxt](https://ikiform.com/es/guides/waitlist/nuxt.md): Una lista de espera en Nuxt sobre una landing page prerenderizada: una ruta de Nitro acepta $fetch y envíos normales, los valida con Zod y redirige sin JavaScript.

## [Cómo añadir un formulario de contacto a un sitio estático sin backend](https://ikiform.com/es/guides/contact-form-static-site.md)

Añade un formulario de contacto que funcione a un sitio estático sin servidor: a dónde va el POST, el spam, las respuestas por email y código para cada host y framework.

- [Añade un formulario de contacto a un sitio de GitHub Pages](https://ikiform.com/es/guides/contact-form-static-site/github-pages.md): GitHub Pages no ejecuta código de servidor, así que un POST de formulario recibe 405 Not Allowed; envía a un backend de formularios y configura bien las redirecciones del project site.
- [Soluciona el error 405 en un formulario de contacto alojado en Vercel](https://ikiform.com/es/guides/contact-form-static-site/vercel.md): Una página estática en Vercel responde al POST de un formulario con 405 Method Not Allowed; aquí verás por qué y cómo enviar el formulario a un backend.
- [Añade un formulario de contacto en Netlify sin Netlify Forms](https://ikiform.com/es/guides/contact-form-static-site/netlify.md): Usa un formulario de contacto en un sitio de Netlify sin Netlify Forms: sin detección en el build, envíos JSON desde React y un formulario aparte para las deploy previews.
- [Añade un formulario de contacto a un sitio de Cloudflare Pages](https://ikiform.com/es/guides/contact-form-static-site/cloudflare-pages.md): Añade un formulario de contacto a Cloudflare Pages sin escribir una Function: envía a un backend de formularios, define cabeceras en _headers y usa tus propias claves de Turnstile.
- [Añade un formulario de contacto a un sitio web estático en Amazon S3](https://ikiform.com/es/guides/contact-form-static-site/aws-s3.md): Los website endpoints de S3 solo aceptan GET y HEAD por HTTP plano, así que envía el formulario de contacto a un backend y configura bien las redirecciones con CloudFront.
- [Añade un formulario de contacto a tu web de portfolio](https://ikiform.com/es/guides/contact-form-static-site/portfolio-website.md): Un formulario de contacto para portfolio que hace las preguntas de una primera llamada: proyecto, presupuesto, plazos y un enlace, sin servidor y respondiendo desde tu bandeja.

## [Envía los envíos de formularios HTML 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.

- [Envía un formulario HTML a tu email 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.
- [Envía un formulario web a Gmail (y por qué falla mailto:)](https://ikiform.com/es/guides/send-form-to-email/gmail.md): 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.
- [Envía un formulario a varias direcciones de email](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.
- [Responde a los envíos de formularios directamente 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.
- [Una alternativa a EmailJS que mantiene las claves fuera del cliente](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.
- [Un formulario de contacto en Next.js que envía emails](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.

## [Cómo frenar el spam en un formulario de contacto](https://ikiform.com/es/guides/spam-protection.md)

Frena el spam en tu formulario de contacto con capas que no cuestan nada a las personas reales: honeypot, tiempo, puntuación del contenido, límites de frecuencia y verificación humana solo donde haga falta.

- [Cómo añadir un campo honeypot que rellenan los bots y no las personas](https://ikiform.com/es/guides/spam-protection/honeypot.md): Añade a cualquier formulario un honeypot que atrape bots sin molestar a lectores de pantalla, teclado ni autocompletado, con la comprobación en el servidor para cada stack.
- [Cómo añadir Cloudflare Turnstile a un formulario HTML](https://ikiform.com/es/guides/spam-protection/cloudflare-turnstile.md): Añade Cloudflare Turnstile a un formulario HTML básico: el widget, siteverify en el servidor, claves de prueba y una forma de usarlo sin claves ni servidor propios.
- [Cómo frenar el spam en formularios sin captcha](https://ikiform.com/es/guides/spam-protection/without-captcha.md): Frena casi todo el spam de tus formularios sin ningún captcha: honeypot, hora de renderizado firmada, puntuación del contenido y límite de frecuencia, sumados en lugar de usarlos por separado.
- [Alternativas a reCAPTCHA para formularios web](https://ikiform.com/es/guides/spam-protection/recaptcha-alternatives.md): Compara alternativas a reCAPTCHA para formularios, de Turnstile y hCaptcha a proof-of-work o ningún captcha, y cambia con un ajuste pequeño y seguro.
- [Cómo limitar la frecuencia de envíos de un formulario](https://ikiform.com/es/guides/spam-protection/rate-limiting.md): Limita los envíos de un formulario por visitante con un almacén compartido, responde 429 con Retry-After y no bloquees oficinas que comparten una IP.
- [Cómo frenar el spam en el formulario de contacto de un sitio estático](https://ikiform.com/es/guides/spam-protection/static-site.md): Frena el spam en el formulario de un sitio estático aunque no pueda guardar secretos ni contar envíos, con un partial de honeypot, un script seguro y comprobaciones en el servidor.
- [Cómo frenar el spam en formularios de Webflow](https://ikiform.com/es/guides/spam-protection/webflow.md): Protege un formulario de Webflow que envía a un backend de formularios, donde los ajustes antispam de Webflow nunca se ejecutan, con un honeypot fuera de pantalla y una verificación humana.
- [Protección antispam para formularios de Next.js con Turnstile](https://ikiform.com/es/guides/spam-protection/nextjs.md): Protege un formulario de Next.js del spam: un honeypot, Turnstile verificado en una server action, un límite por IP en Vercel, Netlify o Cloudflare, y su CSP.
- [Protección antispam para formularios de Astro con Turnstile](https://ikiform.com/es/guides/spam-protection/astro.md): Protege un formulario de Astro del spam con una Action: un honeypot, Turnstile verificado con secretos de astro:env, un límite por IP y la CSP integrada de Astro.
- [Protección antispam para formularios de TanStack Start con Turnstile](https://ikiform.com/es/guides/spam-protection/tanstack-start.md): Protege un formulario de TanStack Start del spam: middleware de función para la IP del cliente, un token bucket, Turnstile verificado en una server function y una CSP.
- [Protección antispam para formularios de React Router con Turnstile](https://ikiform.com/es/guides/spam-protection/react-router.md): Protege un formulario de React Router del spam: una action de ruta con Turnstile, un límite en Workers basado en cf-connecting-ip, un módulo .server y una cabecera CSP.
- [Protección antispam para formularios de SvelteKit con Turnstile](https://ikiform.com/es/guides/spam-protection/sveltekit.md): Protege un formulario de SvelteKit del spam: una form action con getClientAddress, un límite por IP, Turnstile con use:enhance y una CSP que lo permite.
- [Protección antispam para formularios de Nuxt con Turnstile](https://ikiform.com/es/guides/spam-protection/nuxt.md): Protege un formulario de Nuxt del spam: una server route de Nitro con Turnstile, un límite por IP en Nitro storage, secretos en runtimeConfig y una CSP en routeRules.

## [Cuando los formularios de tu creador de sitios se quedan cortos](https://ikiform.com/es/guides/website-builder-forms.md)

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.

- [Límite de envíos de formularios de Webflow: qué es y cómo superarlo](https://ikiform.com/es/guides/website-builder-forms/webflow-submission-limit.md): El 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 Forms: qué pasa a los 100 envíos y cómo salir](https://ikiform.com/es/guides/website-builder-forms/netlify-forms-limit.md): 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.
- [Formularios de Carrd: envía los envíos a un backend de formularios](https://ikiform.com/es/guides/website-builder-forms/carrd-forms.md): El 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 Framer: cuándo añadir un backend de formularios y cómo](https://ikiform.com/es/guides/website-builder-forms/framer-forms.md): Los 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.

## [Añade un formulario de feedback a tu sitio web o app](https://ikiform.com/es/guides/feedback-form.md)

Pon un formulario de feedback en cualquier página o dentro de tu app: una valoración, un comentario, la página de origen, filtro antispam y avisos cuando la nota es baja.

- [Añade un formulario de reporte de bugs que capture la página, el navegador y los pasos](https://ikiform.com/es/guides/feedback-form/bug-report.md): Un formulario de reporte de bugs que pide a la gente los pasos y la gravedad, y deja que la página añada por su cuenta la URL, el navegador, el viewport y los errores recientes.
- [Recoge peticiones de funcionalidades que puedas contar, priorizar y responder](https://ikiform.com/es/guides/feedback-form/feature-request.md): Un formulario de peticiones de funcionalidades que pregunta por el problema en lugar de la solución, guarda las peticiones por tema, cuenta personas y no filas, y les avisa por email cuando sale.
- [Crea un widget flotante de feedback para tu app React](https://ikiform.com/es/guides/feedback-form/react-feedback-widget.md): Un botón flotante de feedback para una app React que abre un panel pequeño, envía la pantalla, la versión de la app y la cuenta con cada respuesta, y nunca pierde un borrador.
- [Recoge el feedback de los beta testers build a build](https://ikiform.com/es/guides/feedback-form/beta-tester-feedback.md): Un formulario de feedback para betas con un enlace personal por tester y build, dos escalas de valoración y un resumen semanal que muestra si cada build mejoró.
- [Haz una encuesta NPS en tu propio sitio, del enlace en el email a la puntuación](https://ikiform.com/es/guides/feedback-form/nps-survey.md): Haz una encuesta NPS con una puntuación de 0 a 10 en el email, una pregunta de seguimiento en tu propia página que cambia según la puntuación y un script que calcula el NPS.
- [Añade una encuesta de cancelación al flujo de baja de tu SaaS](https://ikiform.com/es/guides/feedback-form/cancellation-survey.md): Pregunta por qué cancelan tus clientes dentro del flujo de baja de tu SaaS, deja Omitir a un clic, guarda el motivo en Stripe e Ikiform y nunca retrases la baja.
- [Crea un formulario de feedback in-app en Next.js](https://ikiform.com/es/guides/feedback-form/nextjs.md): Un formulario de feedback in-app en Next.js: una server action que lee la sesión, toma la página de la petición y reenvía la nota con el usuario incluido.
- [Crea un formulario de feedback in-app en Astro](https://ikiform.com/es/guides/feedback-form/astro.md): Un formulario de feedback in-app en Astro: una action que toma el usuario de los locals del middleware, la página de la petición y la pantalla del patrón de ruta.
- [Crea un formulario de feedback in-app en TanStack Start](https://ikiform.com/es/guides/feedback-form/tanstack-start.md): Un formulario de feedback in-app en TanStack Start: una server function POST con middleware de sesión, el id de ruta como contexto y la página leída de las cabeceras.
- [Crea un formulario de feedback dentro de la app con React Router](https://ikiform.com/es/guides/feedback-form/react-router.md): Un formulario de feedback en React Router 8: la action de una resource route lee la sesión de la cookie, un fetcher envía desde el layout y un envío sin JS redirige de vuelta.
- [Crea un formulario de feedback dentro de la app en SvelteKit](https://ikiform.com/es/guides/feedback-form/sveltekit.md): Un formulario de feedback dentro de una app SvelteKit: un formulario en el layout envía a una única form action, que añade en el servidor el usuario desde locals y la página desde la petición.
- [Crea un formulario de feedback dentro de la app en Nuxt](https://ikiform.com/es/guides/feedback-form/nuxt.md): Un formulario de feedback dentro de una app Nuxt: una server route que lee la sesión del usuario, toma la página del Referer y sigue funcionando cuando JavaScript no ha cargado.

## [Crea un formulario de captación de leads que te llegue rápido](https://ikiform.com/es/guides/lead-capture.md)

Un formulario de captación de leads en tu propio sitio que te avisa por email con reply-to, avisa al chat del equipo y alimenta tu CRM, para responder mientras el lead sigue ahí.

- [Crea un formulario de solicitud de demo que reserve la llamada](https://ikiform.com/es/guides/lead-capture/demo-request.md): Un formulario para reservar una demo que guarda el lead y luego envía al visitante a Cal.com o Calendly con su nombre y email ya rellenados.
- [Crea un formulario de solicitud de presupuesto sin subida de archivos](https://ikiform.com/es/guides/lead-capture/quote-request.md): Un formulario de solicitud de presupuesto que recoge los briefs como enlaces compartidos en lugar de archivos, pone fecha límite a cada solicitud y evita que los leads con muchos enlaces acaben en spam.
- [Crea un formulario de solicitud de consulta para un negocio de servicios](https://ikiform.com/es/guides/lead-capture/consultation-request.md): Un formulario de solicitud de consulta para gestorías, abogados, coaches y clínicas que pregunta cómo y cuándo llamar, y deja los detalles sensibles para la llamada.
- [Crea un formulario de consulta de proyecto para una agencia o un freelance](https://ikiform.com/es/guides/lead-capture/project-inquiry.md): Un formulario de inicio de proyecto para estudios y freelances que clasifica las consultas en calientes, templadas y sin encaje por presupuesto y plazos antes de que nadie lea el briefing.
- [Envía los leads de un formulario a HubSpot o Pipedrive](https://ikiform.com/es/guides/lead-capture/leads-to-crm.md): Convierte cada webhook firmado de Ikiform en el upsert de contactos de HubSpot o en las llamadas de personas y leads de Pipedrive, sin contactos duplicados cuando se reintenta una entrega.
- [Crea un formulario de leads que cualifique en Next.js](https://ikiform.com/es/guides/lead-capture/nextjs.md): Un formulario de leads en el App Router de Next.js que valida con Zod en una server action, guarda los UTMs del primer contacto en una cookie y envía los leads cualificados a tu calendario.
- [Crea un formulario de leads que cualifique en Astro](https://ikiform.com/es/guides/lead-capture/astro.md): Un formulario de leads en Astro basado en Actions: validación con Zod, UTMs del primer contacto en un sitio estático, una página de contacto bajo demanda y una redirección a tu agenda.
- [Crea un formulario de leads con cualificación en TanStack Start](https://ikiform.com/es/guides/lead-capture/tanstack-start.md): Un formulario de leads en TanStack Start: middleware global de peticiones para las UTM del primer contacto, una server function con Zod y un redirect lanzado hacia tu agenda.
- [Crea un formulario de leads con cualificación en React Router](https://ikiform.com/es/guides/lead-capture/react-router.md): Un formulario de leads en React Router en modo framework: middleware raíz con una cookie firmada de primer contacto, una action de ruta que valida y una redirección a tu agenda.
- [Crea un formulario de leads con cualificación en SvelteKit](https://ikiform.com/es/guides/lead-capture/sveltekit.md): Un formulario de leads en SvelteKit: el hook handle registra las UTM del primer contacto, una form action valida con Valibot y redirect() manda a los leads cualificados a un calendario.
- [Crea un formulario de leads con cualificación en Nuxt](https://ikiform.com/es/guides/lead-capture/nuxt.md): Un formulario de leads en Nuxt: un middleware de servidor registra las UTM del primer contacto, una server route validada con Zod atiende fetch y envíos normales, y los buenos leads reservan una llamada.

## [Formulario de suscripción a newsletter sin el embed de Mailchimp](https://ikiform.com/es/guides/newsletter-signup.md)

Crea un formulario de suscripción a tu newsletter con tu propio markup, registra el consentimiento, bloquea los registros de bots y pasa cada suscriptor a Kit, MailerLite, beehiiv o cualquier herramienta.

- [Doble opt-in para un formulario de newsletter hecho por ti](https://ikiform.com/es/guides/newsletter-signup/double-opt-in.md): Ikiform no envía emails de confirmación, así que el doble opt-in se hace en tu herramienta de email: un relay añade cada suscripción como no confirmada y la herramienta envía el enlace.
- [Formulario de suscripción por email en un sitio estático, sin servidor](https://ikiform.com/es/guides/newsletter-signup/static-site.md): Añade un formulario de suscripción a tu newsletter en un sitio estático con Hugo, Jekyll, Eleventy o Astro, deja la API key fuera de la página y confirma en la herramienta.
- [Envía a Kit las suscripciones de tu propio formulario de newsletter](https://ikiform.com/es/guides/newsletter-signup/kit.md): Conecta tu propio formulario de newsletter con Kit mediante un relay que crea el suscriptor, lo añade a un formulario de Kit para el incentive email y etiqueta la ubicación.
- [Envía a MailerLite las suscripciones de tu propio formulario de newsletter](https://ikiform.com/es/guides/newsletter-signup/mailerlite.md): Conecta tu propio formulario de suscripción con MailerLite: un relay añade a los lectores nuevos como no confirmados para el doble opt-in y nunca pide a un suscriptor que confirme dos veces.
- [Envía a beehiiv las suscripciones de tu propio formulario de newsletter](https://ikiform.com/es/guides/newsletter-signup/beehiiv.md): Conecta tu propio formulario de suscripción con beehiiv: un relay crea cada suscripción con el doble opt-in activado, la ubicación como fuente UTM y la página como referrer.
- [Crea un formulario de suscripción a newsletter en Next.js](https://ikiform.com/es/guides/newsletter-signup/nextjs.md): Un formulario de newsletter en el footer de Next.js: una server action con comprobación de consentimiento y Turnstile que envía a Ikiform, más un route handler que añade a los lectores a Kit.
- [Crea un formulario de suscripción a newsletter en Astro](https://ikiform.com/es/guides/newsletter-signup/astro.md): Un formulario de newsletter en Astro que se queda en páginas prerenderizadas: una Astro Action comprueba el consentimiento y envía a Ikiform, y un endpoint añade a los lectores a MailerLite.
- [Crea un formulario de suscripción a newsletter en TanStack Start](https://ikiform.com/es/guides/newsletter-signup/tanstack-start.md): Un formulario de newsletter en TanStack Start: una server function para suscribirse sin salir de la página, una server route como alternativa sin JavaScript y las suscripciones reales enviadas a beehiiv.
- [Crea un formulario de suscripción a newsletter en React Router](https://ikiform.com/es/guides/newsletter-signup/react-router.md): Un formulario de newsletter en el footer con React Router: useFetcher envía a una ruta /newsletter que también funciona sin JavaScript, y una resource route alimenta MailerLite.
- [Crea un formulario de suscripción a newsletter en SvelteKit](https://ikiform.com/es/guides/newsletter-signup/sveltekit.md): Un formulario de newsletter en el layout de SvelteKit 3: una form action con consentimiento y un límite por IP, use:enhance que se queda en la página y una ruta de webhook para Kit.
- [Crea un formulario de suscripción a newsletter en Nuxt](https://ikiform.com/es/guides/newsletter-signup/nuxt.md): Un formulario de newsletter en Nuxt que funciona con o sin JavaScript: una server route con comprobación de Turnstile envía a Ikiform, y una ruta de Nitro alimenta beehiiv.

## [Cómo funciona el envío de un formulario HTML](https://ikiform.com/es/guides/html-form-submission.md)

Qué hace un navegador cuando se envía un formulario: qué campos envía, cómo los codifica, qué debería responder el servidor y cómo responde Ikiform.

- [Enviar un formulario HTML sin recargar la página](https://ikiform.com/es/guides/html-form-submission/without-page-reload.md): Envía un formulario con fetch y FormData para que el visitante se quede en la página, con errores de campo, estado de carga, reintentos y un plan B cuando los scripts fallan.
- [Redirigir a una página de agradecimiento tras enviar un formulario](https://ikiform.com/es/guides/html-form-submission/redirect-after-submit.md): Manda a los visitantes a tu propia página de agradecimiento cuando se envía un formulario: la redirección 303, el campo _redirect, qué dominios se permiten y qué pasa al recargar.
- [El atributo action de un formulario HTML, explicado](https://ikiform.com/es/guides/html-form-submission/action-attribute.md): Qué hace el atributo action de un formulario, cómo se resuelven los valores relativos y vacíos, cómo formaction envía un formulario a dos sitios y por qué los hostings estáticos responden 405.
- [Validación de formularios HTML en el navegador y en el servidor](https://ikiform.com/es/guides/html-form-submission/validation.md): Valida un formulario con required, type, pattern y min, da estilo a los errores con :user-invalid y aplica las mismas reglas en el servidor con definiciones de campos.

## [Formularios de inscripción y RSVP para eventos en tu propio sitio](https://ikiform.com/es/guides/event-registration.md)

Recibe RSVP en la página de tu evento: el formulario, límite de acompañantes, un recuento fiable, cierre al llenarse y lista de entrada, sin app de entradas.

- [Formulario de RSVP para bodas en tu propia web de boda](https://ikiform.com/es/guides/event-registration/wedding-rsvp.md): Un formulario de RSVP para la web de boda que hiciste tú: una respuesta por invitación, un menú por invitado, una fecha límite y la lista de quién no ha respondido.
- [Inscripción a eventos sin Eventbrite, para eventos comunitarios gratuitos](https://ikiform.com/es/guides/event-registration/without-eventbrite.md): Gestiona la inscripción a un evento comunitario gratuito en tu sitio: elección de sesiones, email de confirmación desde tu herramienta, aforos por sala y lista de entrada.
- [Formulario de inscripción de voluntarios con turnos, para eventos y festivales](https://ikiform.com/es/guides/event-registration/volunteer-signup.md): Un formulario de voluntarios donde se eligen turnos, con un teléfono para el día, y un script que muestra qué turnos faltan cubrir y arma el cuadrante.

## [Verifica las firmas de los webhooks de formularios](https://ikiform.com/es/guides/webhook-signature-verification.md)

Comprueba que un webhook de formulario viene de verdad de Ikiform: el esquema HMAC-SHA256 de Standard Webhooks, un vector de prueba, cuerpos sin procesar, marcas de tiempo y rotación de secretos.

- [Verifica firmas de webhook en Node.js](https://ikiform.com/es/guides/webhook-signature-verification/nodejs.md): Verifica las firmas de los webhooks de Ikiform en Node.js: cuerpos sin procesar en Express y Fastify, el SDK, el paquete standardwebhooks y una versión probada con node:crypto.
- [Verifica firmas de webhook en Python](https://ikiform.com/es/guides/webhook-signature-verification/python.md): Verifica las firmas de los webhooks de Ikiform en Flask, FastAPI y Django, con el paquete standardwebhooks o la librería estándar, más un test de pytest.
- [Verifica firmas de webhook en Go](https://ikiform.com/es/guides/webhook-signature-verification/go.md): Verifica las firmas de los webhooks de Ikiform en Go con net/http: lee el cuerpo una vez, compruébalo con crypto/hmac, pruébalo o usa la librería de Standard Webhooks.
- [Verifica firmas de webhook en PHP y Laravel](https://ikiform.com/es/guides/webhook-signature-verification/php.md): Verifica las firmas de los webhooks de Ikiform en PHP puro con hash_hmac y hash_equals, y en Laravel con la librería de Standard Webhooks y una excepción de CSRF.
- [Verifica firmas de webhook en Ruby y Rails](https://ikiform.com/es/guides/webhook-signature-verification/ruby.md): Verifica las firmas de los webhooks de Ikiform en Sinatra con OpenSSL y un test de Minitest, y en Rails con la gema standardwebhooks y request.raw_post.
