Next.js-Mehrstufiges Formular

Baue ein mehrstufiges Formular in Next.js ganz ohne Backend. Sammle die Felder über mehrere Schritte im Client-State und poste am Ende einmal an Formpaste. Kopiere den Wizard-Code und ergänze deinen Zugangsschlüssel.

Schritt 1 von 3

So baust du es

  1. Erstelle ein Formular in deinem Formpaste-Dashboard und kopiere den Zugangsschlüssel.
  2. Kopiere die untenstehende Mehrstufige-Komponente in eine Client-Komponente.
  3. Ersetze YOUR_ACCESS_KEY_HERE durch deinen Zugangsschlüssel und deploye.

Prompt für deinen KI-Coding-Agenten

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.

Oder verbinde den Formpaste-MCP-Server mit Claude Code, Codex, Cursor, Claude Desktop, VS Code oder einem beliebigen mcp-remote-Client. Zur Einrichtungsanleitung.

Next.js-Fallstricke

Next.js bietet dir API-Routen, aber für einfachere Formulare ist eine eigene Route Handler zu viel Aufwand. Formpaste übernimmt das Backend, damit deine Next.js-App sich auf das Frontend konzentrieren kann. Funktioniert sowohl mit App Router als auch mit Pages Router.

Client-Komponente für die Fetch-Variante

Der onSubmit-Fetch muss im Browser laufen, also platziere das Formular in einer Datei mit "use client" ganz oben. Ein einfaches <form action> mit Weiterleitung funktioniert auch in einer Server-Komponente, falls du kein JS brauchst.

Keine API-Route nötig

Du brauchst kein /api/contact. Ein direktes POST an den Formpaste-Endpunkt hält deine App static-freundlich und überall deploybar, auch beim statischen Export.

Server Actions sind optional

Du kannst eine Server Action einbinden, aber sie ist nicht erforderlich und fügt einen zusätzlichen Server-Roundtrip hinzu. Das direkte POST ist einfacher und funktioniert auch bei statischem Hosting.

Edge-Runtime und Datei-Uploads

Nutzt eine Route die Edge-Runtime, unterscheidet sich die Verarbeitung von Multipart-Formulardaten von Node. Bei Formularen mit Datei-Upload postest du direkt vom Client an Formpaste, damit deine eigene Runtime den Upload nie verarbeiten muss.

Static-Export-freundlich

Weil das Formular an einen externen Endpunkt postet, funktioniert output: export weiterhin. Zur Anfragezeit läuft kein eigener Server-Code.

Worauf es ankommt

Ein Formular, mehrere Bildschirme

Ein mehrstufiges Formular ist eine einzige Einsendung, die in der UI auf mehrere Schritte verteilt ist. Sammle alle Felder im Client-State und poste am Ende einmal.

Eine eigene Route pro Schritt ist optional

Du kannst jedem Schritt eine eigene URL geben, um den Zurück-Button zu unterstützen, oder alles auf einer Seite mit lokalem State belassen. Beide Varianten posten dieselbe finale Payload.

Poste die gesamte Payload einmal

Poste nicht bei jedem Schritt. Sammle die Felder, während der Nutzer weitergeht, und sende eine Anfrage, wenn er fertig ist.

So funktioniert es

Drei einfache Schritte, bis Formular-Einsendungen in deinem E-Mail-Posteingang landen.
Erstelle dein Formular, setze die action-URL auf den Formpaste-Endpunkt und trage deinen Zugangsschlüssel ein.

1

Formular erstellen

Melde dich an, verifiziere deine E-Mail und erstelle einen Zugangsschlüssel im Dashboard.

2

Code kopieren

Füge das Snippet oben in dein Projekt ein. Wähle CSS oder Tailwind passend zu deiner Website.

"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

Zugangsschlüssel hinzufügen

Ersetze den Platzhalter durch deinen Zugangsschlüssel, um Einsendungen zu empfangen.

<input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">

Next.js-Mehrstufiges Formular FAQ

Formular einfügen. Einsendungen erhalten.

Sofort, ohne Backend, Server oder Datenbanken einzurichten. 250 Einsendungen/Monat kostenlos - keine Kreditkarte.

Andere Next.js-Formulare