> ## Documentation Index
> Fetch the complete documentation index at: https://formpaste.com/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Migration von Web3Forms

> Ersetze deinen Web3Forms-Zugangsschlüssel durch einen Formpaste-Schlüssel und prüfe dann Weiterleitungen und Spam-Handling, bevor du live gehst.

Wenn du bereits ein funktionierendes, Web3Forms-gestütztes Formular hast, ist der Umzug
zu Formpaste eine kleine Änderung: Dein Formular postet bereits an dasselbe gemeinsam
genutzte `/submit`-Endpunktmuster und identifiziert sich bereits über ein verstecktes
`access_key`-Feld.

In den meisten Fällen musst du nur deinen bestehenden Web3Forms-Zugangsschlüssel durch
den Formpaste-Zugangsschlüssel für das Formular ersetzen, das du erstellst. Diese
Anleitung deckt diesen Austausch sowie die Verhaltensunterschiede ab, die es wert sind,
vor dem Livegang zu prüfen.

## Der Kernaustausch

Ein typisches Web3Forms-Formular nutzt den gemeinsamen Endpunkt und enthält einen
`access_key` im Request-Body:

```html theme={null}
<form action="https://api.web3forms.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY_HERE">

  <input type="text" name="name" required>
  <input type="email" name="email" required>
  <textarea name="message" required></textarea>

  <input type="hidden" name="redirect" value="https://web3forms.com/success">

  <button type="submit">Submit Form</button>
</form>
```

Das Formpaste-Äquivalent behält dieselbe Formularstruktur, dieselben Feldnamen und das
`redirect`-Feld bei. Ersetze den Endpunkt und nutze den Zugangsschlüssel für dein
Formpaste-Formular:

```html theme={null}
<form action="https://api.formpaste.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_FORMPASTE_ACCESS_KEY">

  <input type="text" name="name" required>
  <input type="email" name="email" required>
  <textarea name="message" required></textarea>

  <input type="hidden" name="redirect" value="https://your-site.com/success">

  <button type="submit">Submit Form</button>
</form>
```

Deine normalen Felder, wie `name`, `email` und `message`, bleiben genau so, wie sie
sind. Formpaste identifiziert das Zielformular über den `access_key`, statt Namen für
deine benutzerdefinierten Felder zu reservieren.

Hol dir deinen Formpaste-`access_key` (`fp_…`), indem du ein Formular im
[Dashboard](https://app.formpaste.com) erstellst, oder indem du einen Agenten bittest,
eines mit dem MCP-Tool [`create_form`](/docs/agents/create-form) zu erstellen. Die
vollständige Einrichtungsanleitung findest du unter
[Dein erstes Formular](/docs/de/first-form).

## Falls du Web3Forms mit AJAX oder Fetch nutzt

Die Migration folgt demselben Ansatz: Sende deine bestehenden Formularfelder an den
Endpunkt von Formpaste und füge den Formpaste-`access_key` im Request-Body hinzu.

```js theme={null}
const form = new FormData(e.currentTarget);

form.set("access_key", "YOUR_FORMPASTE_ACCESS_KEY");

const res = await fetch("https://api.formpaste.com/submit", {
  method: "POST",
  body: new URLSearchParams(form),
});

const data = await res.json();

if (res.ok && data.success) {
  console.log("Submission received:", data.id);
}
```

Eine erfolgreiche Formpaste-Einsendung liefert `200` mit:

```json theme={null}
{
  "success": true,
  "message": "Submission received.",
  "id": "sub_..."
}
```

Prüfe `res.ok` oder `data.success` an derselben Stelle, an der du aktuell eine
erfolgreiche Web3Forms-Antwort behandelst.

## Den Rest deiner Einrichtung übertragen

| Web3Forms-Konzept                            | Formpaste-Äquivalent                                                                                                                               |
| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------- |
| Gemeinsamer `/submit`-Endpunkt               | Gemeinsamer `/submit`-Endpunkt unter `https://api.formpaste.com/submit`                                                                            |
| `access_key`-Request-Feld                    | `access_key`-Request-Feld, mit deinem Formpaste-`fp_…`-Schlüssel                                                                                   |
| Benutzerdefinierte Formularfelder            | Behalte dieselben Feldnamen bei, einschließlich `name`, `email` und `message`                                                                      |
| Weiterleitung nach dem Absenden (`redirect`) | `redirect`-Feld, siehe [Weiterleitungen](/docs/de/features/redirects); das Ziel muss auf der Zulassungsliste der erlaubten Domains des Formulars stehen |
| Spam-Schutzfeld                              | `botcheck`-Honeypot-Feld, siehe [Spam verhindern](/docs/de/guides/preventing-spam)                                                                      |
| CAPTCHA                                      | Nicht zutreffend, Formpaste hat kein CAPTCHA-Widget oder -Rätsel                                                                                   |
| Zieladresse                                  | [E-Mail-Benachrichtigungen](/docs/de/features/notifications), verifiziere jede Zieladresse einmal per OTP                                               |
| Erlaubte Domains                             | [Domain-Zulassungsliste](/docs/de/features/custom-domains), pro Formular im Dashboard konfiguriert                                                      |
| Einsendungs-Posteingang                      | Formpaste-[Dashboard](https://app.formpaste.com) mit Posteingang- und Spam-Tabs                                                                    |
| Automatisierungen und Integrationen          | [Webhooks](/docs/de/features/webhooks) auf Pro; keine allgemeine REST-API für Formulare oder Einsendungen                                               |

## Unterschiede, die du vor dem Wechsel kennen solltest

**Deine Feldstruktur kann gleich bleiben.**
[Web3Forms und Formpaste nutzen beide](https://formpaste.com/alternatives/web3forms/)
einen gemeinsamen Einsende-Endpunkt plus ein `access_key`-Feld. Das bedeutet, die
Migration erfordert nicht, dass du Standardfelder wie `name`, `email` oder `message`
umbenennst. Ersetze die URL, ersetze den Schlüssel und behalte den Rest deines Markups
bei.

**Weiterleitungen müssen auf eine erlaubte Domain zeigen.** Falls dein Formular aktuell
ein `redirect`-Feld enthält, kannst du dieses Feld mit Formpaste weiter nutzen.
Aktualisiere die URL auf eine Erfolgsseite auf deiner eigenen Website und füge dann die
entsprechende Domain zur [Domain-Zulassungsliste](/docs/de/features/custom-domains) des
Formulars hinzu.

**Keine Spam-Rätsel.** Formpaste nutzt keinerlei CAPTCHA. Es verlässt sich auf
serverseitige Heuristiken einschließlich Honeypots, Timing, Link-Dichte, Rate und
Prüfungen auf Wegwerf-E-Mail-Adressen. Falls du ein Honeypot-Feld hinzufügst, muss es
`botcheck` heißen und mit CSS über `display:none` versteckt sein, nicht mit
`type="hidden"`, damit einfache Bots weiterhin damit interagieren können. Siehe
[Spam verhindern](/docs/de/guides/preventing-spam).

**Verdächtige Einsendungen werden unter Quarantäne gestellt.** Formpaste verwirft eine
verdächtig wirkende Einsendung nicht einfach. Sie erscheint im Spam-Tab des Dashboards,
wo du sie prüfen kannst. Auf Free ist diese Ansicht nur lesbar; einen False Positive zu
retten und erneut zuzustellen ist ein [Pro](/docs/de/features/quarantine-rescue)-Feature.

**Keine allgemeine REST-API.** Formpaste bietet keine REST-API zum Erstellen von
Formularen oder Auflisten von Einsendungen. Erstelle Formulare über das Dashboard oder
das MCP-Tool `create_form`. Lies Einsendungen im Dashboard, über CSV-Export oder mit dem
MCP-Tool `list_submissions`. Siehe [Einsendungen abrufen](/docs/de/reference/submissions-api).

**MCP-Unterstützung ist für agentengesteuerte Workflows verfügbar.** Falls du einen
MCP-fähigen Agenten wie Claude Code oder Cursor nutzt, kann dieser ein Formpaste-Formular
erstellen und einen einsatzbereiten Snippet zurückgeben. Siehe
[MCP-Server](/docs/agents/mcp-server) und die [Cookbook-Prompts](/docs/agents/cookbook-prompts).

## Nach dem Wechsel

1. Ändere die Formular-`action` von `https://api.web3forms.com/submit` auf
   `https://api.formpaste.com/submit`.
2. Ersetze deinen Web3Forms-Schlüssel durch den Formpaste-`access_key` für das neue
   Formular.
3. Behalte deine bestehenden benutzerdefinierten Felder bei, einschließlich `name`,
   `email` und `message`.
4. Prüfe jeden `redirect`-Wert und füge dessen Domain zur
   [Domain-Zulassungsliste](/docs/de/features/custom-domains) hinzu.
5. Verifiziere die Ziel-E-Mail-Adresse über das einmalige OTP.
6. Füge bei Bedarf einen mit CSS versteckten `botcheck`-Honeypot hinzu und entferne
   jedes CAPTCHA-Widget oder -Skript.
7. Sende einen echten Test ab und bestätige, dass er sowohl den Posteingang des
   Dashboards als auch deine E-Mail erreicht.
8. Prüfe den Spam-Tab nach dem Launch gelegentlich, falls eine legitime Einsendung unter
   Quarantäne gestellt wurde.

<CardGroup cols={2}>
  <Card title="Dein erstes Formular" icon="inbox" href="/docs/de/first-form">
    Erstelle ein Formular, erhalte einen Zugangsschlüssel und verifiziere seine
    Zieladresse.
  </Card>

  <Card title="Framework-Snippets" icon="brackets-curly" href="/docs/de/framework-snippets">
    Formpaste-Beispiele für HTML, React, Next.js, Astro, Vue und Svelte.
  </Card>

  <Card title="Spam verhindern" icon="shield" href="/docs/de/guides/preventing-spam">
    Erfahre, wie Formpaste verdächtige Einsendungen ohne CAPTCHA filtert.
  </Card>

  <Card title="Einsendungen abrufen" icon="database" href="/docs/de/reference/submissions-api">
    Nutze das Dashboard, CSV-Export oder MCP-Tools, um auf Einsendungen zuzugreifen.
  </Card>
</CardGroup>
