Formulario multi-paso para Next.js

Construye un formulario multi-paso en Next.js sin backend. Recoge los campos a lo largo de los pasos en el estado del cliente y envía el POST una sola vez a Formpaste al final. Copia el código del wizard y añade tu clave de acceso.

Paso 1 de 3

Como construirlo

  1. Crea un formulario en tu panel de Formpaste y copia su clave de acceso.
  2. Copia el componente multi-paso de abajo 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 multi-step form to my Next.js app. Use a client component that collects name, email and message across several steps in local state with Next and Back buttons, then POSTs once at the end as application/x-www-form-urlencoded (URLSearchParams) to https://api.formpaste.com/submit with a hidden access_key. Do not post on every step and 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.

Puntos claves de Next.js

Next.js te da rutas API, pero para formularios sencillos, montar un route handler es excesivo. Formpaste se encarga del backend para que tu app de Next.js se mantenga enfocada en el frontend. Funciona tanto con App Router como con Pages Router.

Componente cliente para la versión con fetch

El fetch del onSubmit necesita ejecutarse en el navegador, así que coloca el formulario en un archivo con "use client" al principio. Un <form action> normal con una redirección también funciona en un componente de servidor si no necesitas JS.

No necesitas una ruta API

No necesitas /api/contact. Enviar el POST directamente al endpoint de Formpaste mantiene la app compatible con exportación estática y desplegable en cualquier lugar, incluido el export estático.

Las Server Actions son opcionales

Puedes conectar una Server Action, pero no es obligatorio y añade un viaje de ida y vuelta al servidor. El POST directo es más simple y funciona en hosting estático.

Edge runtime y subida de archivos

Si una ruta usa el Edge runtime, el manejo de multipart form data es distinto al de Node. Para formularios con subida de archivos, envía el POST directamente a Formpaste desde el cliente para que tu propio runtime nunca tenga que procesar la subida.

Compatible con exportación estática

Como el formulario envía el POST a un endpoint externo, output: export sigue funcionando. Ningún código de servidor tuyo se ejecuta en el momento de la petición.

Que debes acertar

Un formulario, varias pantallas

Un formulario multi-paso es un único envío dividido en pasos dentro de la interfaz. Recoge todos los campos en el estado del cliente y envía el POST una sola vez al final.

Una ruta por paso es opcional

Puedes darle a cada paso su propia URL para soportar el botón de retroceso, o mantenerlo todo en una sola página con estado local. Ambos enfoques envían la misma carga final.

Envía toda la carga de una vez

No hagas un POST en cada paso. Reúne los campos a medida que el usuario avanza y envía una sola petición cuando termine.

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.

1

Crea tu formulario

Regístrate, verifica tu correo y crea una clave de acceso en tu panel.

2

Copia el código

Pega el fragmento de arriba en tu proyecto. Elige CSS o Tailwind para que combine con tu sitio.

"use client";
import { useState } from "react";

const ENDPOINT = "https://api.formpaste.com/submit";

export function MultiStepForm() {
  const [step, setStep] = useState(0);
  const [data, setData] = useState({ name: "", email: "", message: "" });
  const set = (k: string, v: string) => setData((d) => ({ ...d, [k]: v }));

  async function submit(e: React.FormEvent) {
    e.preventDefault();
    const body = new URLSearchParams({ access_key: "YOUR_ACCESS_KEY_HERE", ...data });
    await fetch(ENDPOINT, { method: "POST", body });
  }

  return (
    <form onSubmit={submit}>
      {step === 0 && (
        <input value={data.name} onChange={(e) => set("name", e.target.value)} placeholder="Name" required />
      )}
      {step === 1 && (
        <input type="email" value={data.email} onChange={(e) => set("email", e.target.value)} placeholder="Email" required />
      )}
      {step === 2 && (
        <textarea value={data.message} onChange={(e) => set("message", e.target.value)} placeholder="Message" />
      )}
      {step < 2 ? (
        <button type="button" onClick={() => setStep((s) => s + 1)}>Next</button>
      ) : (
        <button type="submit">Submit</button>
      )}
    </form>
  );
}
3

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">

Formulario multi-paso 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.

Otros formularios de Next.js