> ## 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 Formspree

> Tausche den Endpunkt und das Auth-Feld deines bestehenden Formulars aus, was sich ändert, was übernommen wird und was es noch nicht gibt.

Wenn du bereits ein funktionierendes, Formspree-gestütztes Formular hast, ist der Umzug
zu Formpaste größtenteils eine Zwei-Zeilen-Änderung: eine andere `action`-URL und ein
verstecktes Feld anstelle der Endpunkt-ID, die in die URL eingebacken ist. Diese
Anleitung deckt den eigentlichen Austausch sowie die paar Verhaltensunterschiede ab, die
es wert sind, vor dem Umschalten zu kennen, damit nichts stillschweigend kaputtgeht.

## Der Kernaustausch

Ein typisches Formspree-Formular postet direkt an einen Endpunkt mit deiner Formular-ID
eingebettet in der URL:

```html theme={null}
<form action="https://formspree.io/f/xxxxxxxx" method="POST">
  <input type="email" name="email" required>
  <textarea name="message" required></textarea>
  <button type="submit">Send</button>
</form>
```

Das Formpaste-Äquivalent postet an einen einzigen, gemeinsam genutzten Endpunkt,
`/submit`, und identifiziert dein Formular stattdessen über ein verstecktes
`access_key`-Feld im Body, nicht über die URL:

```html theme={null}
<form action="https://api.formpaste.com/submit" method="POST">
  <input type="hidden" name="access_key" value="YOUR_ACCESS_KEY">
  <input type="email" name="email" required>
  <textarea name="message" required></textarea>
  <button type="submit">Send</button>
</form>
```

Zwei Änderungen, sonst nichts: die `action`-URL und ein neues verstecktes
`access_key`-Input. Jedes andere Feld, dein `email`, `message` oder welche
benutzerdefinierten Felder dein Formular auch schon hat, behält seinen Namen und
funktioniert unverändert weiter, da keiner der beiden Dienste diese Namen reserviert.

Hol dir deinen `access_key` (`fp_…`), indem du ein Formular im
[Dashboard](https://app.formpaste.com) erstellst (oder einen Agenten bittest, das über
das MCP-Tool [`create_form`](/docs/agents/create-form) zu erledigen), siehe
[Dein erstes Formular](/docs/de/first-form), falls du bei null anfängst.

## Falls du Formsprees AJAX-/Fetch-Integration nutzt

Das Muster hat dieselbe Form, zeigt nur auf eine andere URL und trägt `access_key` im
Body statt im Endpunktpfad:

```js theme={null}
const form = new FormData(e.currentTarget);
// form already has your normal fields - add the access key:
form.append("access_key", "YOUR_ACCESS_KEY");

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

Die Erfolgsantwort von Formpaste ist ein `200` mit
`{"success": true, "message": "Submission received.", "id": "sub_..."}`, prüfe `res.ok`
oder `success` genauso, wie du zuvor die Antwort von Formspree geprüft hättest.

## Den Rest deiner Einrichtung übertragen

| Formspree-Konzept                              | Formpaste-Äquivalent                                                                                                                      |
| ---------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------- |
| Endpunkt-ID in der URL (`/f/xxxxxxxx`)         | `access_key`-Feld im Request-Body, `/submit` wird gemeinsam genutzt                                                                       |
| E-Mail-Benachrichtigung                        | [E-Mail-Benachrichtigungen](/docs/de/features/notifications), das Ziel wird einmal per OTP verifiziert, danach standardmäßig aktiv             |
| Weiterleitung nach dem Absenden (`_next`-Feld) | `redirect`-Feld, siehe [Weiterleitungen](/docs/de/features/redirects); muss auf der Zulassungsliste der erlaubten Domains des Formulars stehen |
| Honeypot-/Spam-Feld                            | `botcheck`, siehe unten, die Benennung ist anders                                                                                         |
| reCAPTCHA-/hCaptcha-Integration                | Nicht zutreffend, Formpaste hat keinerlei CAPTCHA; siehe [Spam verhindern](/docs/de/guides/preventing-spam)                                    |
| Erlaubte Domains                               | [Domain-Zulassungsliste](/docs/de/features/custom-domains), pro Formular im Dashboard konfiguriert                                             |
| Einsendungs-Dashboard                          | Formpaste-[Dashboard](https://app.formpaste.com) mit Posteingang- und Spam-Tabs                                                           |
| Zapier/Integrationen                           | Nur [Webhooks](/docs/de/features/webhooks) (Pro) sind gebaut; siehe den Abschnitt zu den Unterschieden unten                                   |

## Unterschiede, die du vor dem Wechsel kennen solltest

**Keine Spam-Rätsel.** Falls in dein Formspree-Formular reCAPTCHA oder hCaptcha
eingebunden war, entferne es einfach, such nicht nach einem Äquivalent zum Konfigurieren.
Formpaste verlässt sich vollständig auf serverseitige Heuristiken (Honeypot, Timing,
Link-Dichte, Rate, Wegwerf-E-Mail), die deinem Besucher niemals ein Rätsel zeigen. Falls
du für Formspree ein Honeypot-Feld hattest, benenne es in `botcheck` um, das ist genau
der Name, den Formpaste prüft, und verstecke es mit CSS (`display:none`), nicht mit
`type="hidden"`, damit einfache Bots, die versteckte Inputs überspringen, trotzdem
darauf hereinfallen. Siehe [Spam verhindern](/docs/de/guides/preventing-spam).

**Verdächtige Einsendungen werden unter Quarantäne gestellt, nicht stillschweigend
verworfen oder blockiert.** Eine Einsendung, die als Spam bewertet wird, landet trotzdem
irgendwo, wo du sie sehen kannst, im Spam-Tab des Dashboards, statt zu verschwinden. Auf
Free ist diese Ansicht nur lesbar; ein False Positive erneut zuzustellen ("retten") ist
eine [Pro](/docs/de/features/quarantine-rescue)-Aktion. Falls dein Formspree-Spamfilter
Einsendungen stillschweigend verworfen hat, plane Zeit ein, um nach der Migration
gelegentlich den Quarantäne-Tab zu prüfen, falls etwas Legitimes einen Anstoß braucht.

**Keine REST-API für Formulare oder Einsendungen.** Formpaste hat keine allgemeine
REST-API zum Erstellen von Formularen oder Auflisten von Einsendungen. Formulare werden
im Dashboard oder über das MCP-Tool `create_form` erstellt; Einsendungen werden über das
Dashboard, CSV-Export oder das MCP-Tool `list_submissions` gelesen, siehe
[Einsendungen abrufen](/docs/de/reference/submissions-api), falls du bisher etwas gegen die
API-Oberfläche von Formspree skriptet hast.

**Ein MCP-Server, falls du das mit einem Agenten verdrahtest.** Falls du ein Formular mit
Hilfe von Claude Code, Cursor oder einem anderen MCP-sprechenden Agenten migrierst, kann
dieser das Formular erstellen und dir direkt einen fertig verdrahteten Snippet zurückgeben,
siehe [MCP-Server](/docs/agents/mcp-server) und die [Cookbook-Prompts](/docs/agents/cookbook-prompts).
Das ist kein Formspree-Äquivalent; es ist neue Möglichkeiten, die Formpaste bietet und
Formspree nicht.

**Die Tarife sind einfacher.** Formpaste hat genau zwei Tarife, Free und Pro (vier
Einsendungs-Kontingent-Stufen innerhalb von Pro), statt
[Formsprees mehrstufiger Struktur](https://formpaste.com/alternatives/formspree/). Siehe
[Pro-Tarif](/docs/de/features/pro-plan), falls du prüfst, ob deine aktuelle Nutzung in Frees
250 Einsendungen/Monat passt.

## Nach dem Wechsel

1. Aktualisiere die `action`-URL und füge `access_key` bei jedem Formular hinzu, das du
   migrierst.
2. Verifiziere die Ziel-E-Mail jedes Formulars (einmaliges OTP pro Adresse), siehe
   [Dein erstes Formular](/docs/de/first-form).
3. Benenne jedes Honeypot-Feld in `botcheck` um und bestätige, dass es mit CSS versteckt
   ist.
4. Entferne jedes CAPTCHA-Widget/-Skript, es wird nicht gebraucht und Formpaste liest es
   ohnehin nicht.
5. Setze die [Domain-Zulassungsliste](/docs/de/features/custom-domains), sobald du bestätigt
   hast, dass Einsendungen ankommen, damit das Formular nicht auf unbestimmte Zeit für
   jede Origin offen bleibt.
6. Sende einen echten Test ab und bestätige, dass er im Posteingang des Dashboards und
   in deiner E-Mail ankommt.

<CardGroup cols={2}>
  <Card title="Dein erstes Formular" icon="inbox" href="/docs/de/first-form">
    Vollständige Anleitung zum Erstellen eines Formulars und zum Verifizieren seiner
    Zieladresse.
  </Card>

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

  <Card title="Spam verhindern" icon="shield" href="/docs/de/guides/preventing-spam">
    Wie die Filterung funktioniert.
  </Card>

  <Card title="Einsendungen abrufen" icon="database" href="/docs/de/reference/submissions-api">
    Dashboard, CSV-Export und das MCP-Tool, keine REST-API.
  </Card>
</CardGroup>
