Formularios de contacto para Next.js
Crea un formulario de contacto funcional para tu app de Next.js sin ruta API ni código de servidor. Pruébalo en vivo y luego copia el código con el estilo que prefieras. Los envíos van directo a tu bandeja de entrada, con el spam filtrado automáticamente.
Cómo crear un formulario en Next.js
- 1
Crea un formulario en tu panel de Formpaste y copia su clave de acceso.
- 2
Elige tu estilo arriba y copia el código de React/Next.js en un componente cliente.
- 3
Reemplaza YOUR_ACCESS_KEY_HERE con tu clave de acceso y despliega.
Prompt para tu agente de programación con IA
Add a Formpaste contact form to my Next.js app. Use a client component that POSTs the form as application/x-www-form-urlencoded (URLSearchParams) to https://api.formpaste.com/submit with a hidden access_key input. Do not add an API route.O conecta el servidor MCP de Formpaste con Claude Code, Codex, Cursor, Claude Desktop, VS Code o cualquier cliente mcp-remote. Ver la guía de configuración.
¿App Router o Pages Router?
Ambos funcionan, porque el formulario envía el POST directamente a Formpaste:
nunca tocas una ruta API de Next.js ni un Route Handler. En el App Router,
coloca el formulario en un componente cliente ("use client") si quieres usar
el fetch en onSubmit que se muestra en la pestaña de React de arriba; si te
basta con un <form action> normal y una redirección, eso también funciona en
un componente de servidor. En el Pages Router es la misma historia.
Gestionar la respuesta
El ejemplo con fetch devuelve una respuesta en cuanto Formpaste acepta el
envío. Muestra un mensaje de éxito rastreando el estado después de
await fetch(...), o define una URL de redirección en la configuración de tu
panel para que Formpaste envíe al visitante directamente a una página de
agradecimiento, sin necesidad de código en el cliente. En cualquier caso, no
tienes que ejecutar ningún servidor propio.
¿Por qué no una ruta API?
Podrías hacer un proxy a través de /api/contact, pero entonces vuelves a
escribir un sistema de envío de correo, gestionar el spam y almacenar los
envíos, justo lo que Formpaste existe para eliminar. Enviar el POST
directamente a https://api.formpaste.com/submit mantiene tu app de Next.js
compatible con exportación estática y desplegable en cualquier lugar,
incluido el export estático.
Cómo funciona
Tres pasos simples para que los envíos de formularios lleguen a tu bandeja de entrada.
Crea tu formulario, apunta la URL de action al endpoint de Formpaste y añade tu clave de acceso.
Crea tu formulario
Regístrate, verifica tu correo y crea una clave de acceso en tu panel.
Copia el código
Pega el fragmento de arriba en tu proyecto. Elige CSS o Tailwind para que combine con tu sitio.
export function ContactForm() {
async function onSubmit(e) {
e.preventDefault();
const form = new FormData(e.currentTarget);
await fetch("https://api.formpaste.com/submit", { method: "POST", body: new URLSearchParams(form) });
}
return (
<form onSubmit={onSubmit} className="mx-auto flex w-full max-w-md flex-col gap-4 rounded-xl border border-gray-200 bg-white p-6 shadow-sm dark:border-gray-800 dark:bg-gray-950">
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE" />
<label className="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Nombre
<input type="text" name="name" placeholder="Tu nombre" required className="rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100" />
</label>
<label className="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Correo electrónico
<input type="email" name="email" placeholder="tu@ejemplo.com" required className="rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100" />
</label>
<label className="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Mensaje
<textarea name="message" required className="min-h-28 rounded-md border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 shadow-sm outline-none focus-visible:ring-2 focus-visible:ring-gray-900 dark:border-gray-700 dark:bg-gray-900 dark:text-gray-100 dark:focus-visible:ring-gray-100"></textarea>
</label>
<button type="submit" className="w-full rounded-md bg-gray-900 px-4 py-2 text-sm font-medium text-white shadow-sm transition-colors hover:bg-gray-800 disabled:opacity-60 dark:bg-white dark:text-gray-900 dark:hover:bg-gray-200">Enviar</button>
</form>
);
}Añade tu clave de acceso
Reemplaza el marcador por tu clave de acceso para empezar a recibir envíos.
<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">Formularios de contacto para Next.js FAQ
Pega un formulario. Recibe envíos.
Al instante, sin configurar ningún backend, servidor ni base de datos. 250 envíos/mes gratis, sin tarjeta de crédito.
Lo que obtienes con Formpaste
Sin servidor, sin DNS
Apunta tu formulario a Formpaste: sin backend, sin DNS, sin servidor de correo que mantener.
Spam filtrado automáticamente
Heurísticas más una carpeta de cuarentena que tú controlas. Los mensajes reales siempre llegan.
Cuarentena que tú controlas
Los envíos sospechosos llegan a una carpeta que revisas: nada se descarta en silencio.
Creado para agentes de IA
Un servidor MCP que tu agente de código llama para crear un formulario y configurarlo.
Componentes para copiar y pegar
Código de formulario accesible para copiar y pegar en HTML, React, TypeScript, JavaScript y Astro.
Panel sencillo
Gestiona formularios, bandeja de entrada, cuarentena y entrega desde un solo lugar.