Kontaktformulare für Alpine.js
Füge jeder Seite mit Alpine.js ein Kontaktformular hinzu, ganz ohne Backend. Ein Script-Tag, x-data auf dem Formular und ein @submit.prevent-Handler, der an Formpaste postet. Es gibt keinen Build-Schritt. Sieh es dir live an, kopiere den Code, und Einsendungen landen in deinem Posteingang - Spam gefiltert.
So erstellst du ein Alpine.js-Formular
- 1
Erstelle ein Formular in deinem Formpaste-Dashboard und kopiere den Zugangsschlüssel.
- 2
Füge das Alpine-Script-Tag und das Formular-Markup oben zu deiner Seite hinzu.
- 3
Ersetze YOUR_ACCESS_KEY_HERE durch deinen Zugangsschlüssel und veröffentliche.
Prompt für deinen KI-Coding-Agenten
Add a Formpaste contact form to my page with Alpine.js. Use a real form with action set to https://api.formpaste.com/submit and a hidden access_key input, plus x-data for state and an @submit.prevent handler that POSTs new URLSearchParams(new FormData($el)) with fetch and then shows a thank-you message. No build step, no backend.Oder verbinde den Formpaste-MCP-Server mit Claude Code, Codex, Cursor, Claude Desktop, VS Code oder einem beliebigen mcp-remote-Client. Zur Einrichtungsanleitung.
Ein Script-Tag und x-data
Alpine fügt Verhalten zu Markup hinzu, das du bereits hast. Du bindest es über
ein deferred Script-Tag ein, setzt x-data auf das Formular, um ein bisschen
State zu halten, und behandelst @submit.prevent, indem du die Felder an
Formpaste postest. Es gibt keinen Build-Schritt, keinen Bundler und keine
Komponenten aufzusetzen - es lässt sich in eine statische Seite, ein
CMS-Template oder eine handgeschriebene Seite einfügen.
Das Formular funktioniert auch ohne Alpine
Weil das Markup ein echtes action-Attribut behält, das auf Formpaste zeigt,
kann der Browser es auch dann posten, wenn Alpine nicht geladen hat. Das macht
die Direktiven zu einer Erweiterung statt zu einer Abhängigkeit, und genau
deshalb degradiert das Formular bei einer wackligen Verbindung sanft.
State bleibt am Element
x-data hält den State direkt neben dem Markup, das ihn verwendet, sodass
eine Dankesmeldung nur ein Boolean und ein x-show ist. Für ein
Kontaktformular ist das die gesamte Zustandsmaschine - kein Store, keine
zusätzliche Library, nichts zu verdrahten.
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.
Formular erstellen
Melde dich an, verifiziere deine E-Mail und erstelle einen Zugangsschlüssel im Dashboard.
Code kopieren
Füge das Snippet oben in dein Projekt ein. Wähle CSS oder Tailwind passend zu deiner Website.
<script src="https://cdn.jsdelivr.net/npm/alpinejs@3/dist/cdn.min.js" defer></script>
<style>[x-cloak] { display: none !important; }</style>
<div x-data="{ sending: false, sent: false }">
<form
action="https://api.formpaste.com/submit"
method="POST"
x-show="!sent"
@submit.prevent="sending = true; await fetch($el.action, { method: 'POST', body: new URLSearchParams(new FormData($el)) }); sending = false; sent = true" class="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 class="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Name
<input type="text" name="name" placeholder="Dein Name" required class="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 class="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">E-Mail
<input type="email" name="email" placeholder="du@beispiel.de" required class="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 class="flex flex-col gap-1.5 text-sm font-medium text-gray-900 dark:text-gray-100">Nachricht
<textarea name="message" required class="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" class="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" :disabled="sending">Senden</button>
</form>
<p x-show="sent" x-cloak>Thanks - your message was sent.</p>
</div>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">Kontaktformulare für Alpine.js FAQ
Formular einfügen. Einsendungen erhalten.
Sofort, ohne Backend, Server oder Datenbanken einzurichten. 250 Einsendungen/Monat kostenlos - keine Kreditkarte.
Das bekommst du mit Formpaste
Kein Server, kein DNS
Richte dein Formular auf Formpaste aus - kein Backend, kein DNS, kein E-Mail-Server zu betreiben.
Spam automatisch gefiltert
Heuristiken plus ein Quarantäne-Ordner, den du kontrollierst. Echte Nachrichten kommen immer durch.
Quarantäne, die du kontrollierst
Verdächtige Einsendungen landen in einem Ordner, den du prüfst - nichts wird stillschweigend verworfen.
Gebaut für KI-Agenten
Ein MCP-Server, den dein Coding-Agent aufruft, um ein Formular zu erstellen und einzurichten.
Copy-Paste-Komponenten
Zugänglicher Copy-Paste-Formularcode für HTML, React, TypeScript, JavaScript und Astro.
Einfaches Dashboard
Verwalte Formulare, Posteingang, Quarantäne und Zustellung an einem Ort.