MevvForms-Dokumentation

Barrierefreie Formulare, lokale Einträge und eine umkehrbare Migration.

MevvForms besitzt das Formularschema, die serverseitige Validierung, barrierefreies Rendering, lokale Einträge und eine dauerhafte Benachrichtigungswarteschlange — und obendrauf eine Engine für bedingte Logik, die auf dem Server erneut ausgeführt wird, Frontend-Ansichten, Werkzeuge für Aufbewahrung und Datenschutz, lokale KI-Formularerzeugung sowie Importer für sieben andere Formular-Plugins. Diese Anleitung dokumentiert, was das Plugin heute tatsächlich leistet, und sagt unumwunden, wo es nicht bewiesen ist.

Überblick und Voraussetzungen

MevvForms Free ist die lokale Laufzeitumgebung. Ein veröffentlichtes Formular wird aus einem versionierten WordPress-Formulardatensatz gelesen, mit echten Beschriftungen und Fehlerbezügen dargestellt, auf dem Server erneut validiert, lokal gespeichert und an eine dauerhafte Benachrichtigungswarteschlange übergeben.

WordPress
6.6 oder neuer; getestet bis einschließlich WordPress 7.1.
PHP
8.1 oder neuer; die Release-Matrix deckt PHP 8.1–8.5 ab.
Datengrenze
Formulardefinitionen, Einträge und Jobs in der Warteschlange bleiben standardmäßig auf der WordPress-Website.
Tabellen
Dreizehn eigene Tabellen: Einträge und ihre typisierten Werte, die Job-Warteschlange, Dateien, teilweise ausgefüllte Einreichungen, das Benachrichtigungsprotokoll, zwei Analytics-Zähler, Inhaltsverknüpfungen, Bestand, Gutscheine, Zahlungen und Zahlungsereignisse.
Geplante Aufgaben
Zwei stündliche Jobs. Einer wendet die Aufbewahrung an, der andere leert die eine Job-Warteschlange, die Benachrichtigungen, verzögerte Feeds und Exporte trägt — eine Warteschlange statt eines Cron-Jobs pro Funktion.
Übersetzungsdateien
Neunzehn WordPress-Sprachversionen werden mit dem Plugin ausgeliefert, Quellkataloge eingeschlossen.

Free stellt keine Lizenz-, Telemetrie-, KI- oder Update-Anfrage an einen externen Dienst, während ein Besucher ein Formular darstellt oder absendet.

Installation

  1. Erstellen Sie eine wiederherstellbare Sicherung von Datenbank und wp-content.
  2. Laden Sie das ZIP von MevvForms Free hoch und aktivieren Sie es.
  3. Prüfen Sie, dass die MevvForms-Datenbanktabellen angelegt wurden und dass ein Administrator das Dashboard öffnen kann.
  4. Lassen Sie das bisherige Formular-Plugin aktiv, bis Migrationsvorschau, Import und Zustandsprüfungen abgeschlossen sind.
  5. Installieren Sie das passende Pro-Begleitpaket nur, wenn das gespeicherte Formular ein veröffentlichtes Pro-Modul verwendet.

Entfernen Sie das Free-Paket nicht, solange Pro installiert ist. Die Laufzeitumgebung für gespeicherte Formulare gehört zu Free; Pro erweitert sie.

Der Formular-Builder

Felder werden per Ziehen platziert, und alles, was die Maus kann, kann auch die Tastatur. Hinzufügen, Auswählen und Entfernen eines Feldes sind gewöhnliche Schaltflächen, sodass Enter und Leertaste bereits funktionieren; das Verschieben eines Feldes hat einen eigenen Shortcut, Ctrl mit Pfeil nach oben oder unten, der genau dieselbe Bewegung auslöst wie ein Ziehen. Nach jeder Änderung wird der Fokus auf die zuvor bearbeitete Karte zurückgesetzt, und eine Live-Region kündigt an, was geschehen ist — „E-Mail von Position 2 nach Position 5 von 9 verschoben“ —, sodass sich die Neuanordnung auch ohne Sehen verfolgen lässt.

Spalten sind ein Layout-Werkzeug mit einer angehängten Regel: Die Lesereihenfolge muss mit der Feldreihenfolge identisch bleiben. Das wird auf dem Server geprüft, nicht dem CSS überlassen. Ein Layout, das Felder auf der Seite in einer anderen Reihenfolge als im Schema platzieren würde, wird mit einem Fehler abgelehnt statt gerendert, denn ein Screenreader und ein sehender Besucher müssen dasselbe Formular erhalten.

Automatisches Speichern
Der Entwurf wird etwa zweieinhalb Sekunden, nachdem Sie mit dem Tippen aufgehört haben, in den eigenen Entwurfsdatensatz des Formulars geschrieben. Er rührt nie das veröffentlichte Formular an und erzeugt nie eine WordPress-Revision, sodass das automatische Speichern nichts versehentlich veröffentlichen kann.
Revisionen
Beim Speichern wird WordPress' eigenes Revisionssystem verwendet statt eines privaten, was bedeutet, dass die Revisionen für alles andere sichtbar sind, was WordPress versteht. Der Builder listet die letzten fünfzig auf und stellt jede davon wieder her.

Im Builder gibt es kein Rückgängig oder Wiederherstellen. Der Weg zurück ist das Wiederherstellen einer früheren Revision, und das stellt das gesamte Formular wieder her, nicht nur die letzte Aktion. Wenn Sie vorhaben, eine größere Änderung vorzunehmen, speichern Sie vorher, damit es eine Revision gibt, zu der Sie zurückkehren können.

Feldtypen

Achtunddreißig Feldtypen in fünf Gruppen. Alle sind im kostenlosen Paket enthalten, auch Unterschrift, Wiederholfeld, Matrix und Quiz.

Grundlegend
Einzeiliger Text, Absatztext, E-Mail, E-Mail mit Bestätigung, Telefon, Website-URL, Zahl, Passwort, verborgener Wert.
Auswahl
Dropdown, Dropdown mit Mehrfachauswahl, Radiogruppe, Checkbox-Gruppe, einzelne Checkbox, Einwilligung, Bewertung, Rangfolge, Schieberegler.
Erweitert
Name, Adresse, Datum, Uhrzeit, Datum und Uhrzeit, Farbe, Datei-Upload.
Zahlung
Berechnung, Bestellsumme, Produkt, Rabattcode.
Layout
Überschrift, Abschnittsumbruch, Trennlinie, Inhaltsblock, Seitenumbruch. Diese tragen keine Eingabe und erzeugen keinen gespeicherten Wert.

Ein Passwortfeld wird gerendert und validiert, aber sein Wert wird nie in einen Eintrag geschrieben. Ebenso wenig irgendein Feld, das als nicht gespeichert markiert ist. Die Felder Berechnung und Summe zeigen zwar ein Feld auf dem Bildschirm, aber ihr Wert kommt nicht vom Browser: Der Server führt die Formel erneut aus und überschreibt, was angekommen ist.

Vorlagen

Achtundzwanzig fertige Formulare, gedacht als Ausgangspunkt und nicht als fertiges Produkt: Kontakt, Angebotsanfrage, Bewerbung, Veranstaltungsanmeldung, Zufriedenheitsumfrage, Supportanfrage, Terminanfrage, Newsletter-Anmeldung, Produktbestellung, Beschwerde, Spende, Tischreservierung, Benutzerregistrierung, Quiz, Umfrage, Dateieinreichung, Referenz, Austrittsumfrage, Wartungsanfrage, Terminplaner, Kursanmeldung, Elterneinwilligung, Empfehlungsumfrage, Unterkunftsbuchung, Freiwilligenanmeldung, Fehlerbericht, Lieferantenregistrierung und Rückrufbitte.

Eine Vorlage wird in ein neues Formular kopiert und dann bearbeitet; es ist keine lebende Verknüpfung, sodass eine spätere Änderung der Vorlage bereits daraus erstellte Formulare nicht verändert.

Ein Formular darstellen und absenden

Binden Sie ein veröffentlichtes Formular mit [mevvforms id="123"] ein. Die Darstellung gibt stabile Feldkennungen, echte Beschriftungen, Beschreibungen, ein Ziel für die Fehlerübersicht und eine signierte Sitzung aus, die an die aktuelle Formularrevision gebunden ist.

Im Block-Editor ist dasselbe ein Block — MevvForms Form — und seine Vorschau ist keine Annäherung: Der Editor lässt den Block vom Server rendern, und der Server rendert ihn mit genau demselben Code, den auch das Frontend verwendet. Was Sie im Editor sehen, ist die Seite.

  • Pflichtstatus und Validierungsregeln stammen aus dem serverseitigen Schema.
  • Verborgene oder unbekannte Clientwerte können Serverregeln nicht lockern.
  • Eine gültige Einsendung erzeugt den Eintrag, bevor irgendein Benachrichtigungs-Nebeneffekt läuft.
  • Die Antwort enthält die konfigurierte Meldung oder eine sichere Weiterleitung, niemals die gespeicherten Feldwerte.

Wenn sich ein Formular geändert hat, nachdem die Seite geöffnet wurde, laden Sie die Seite vor dem Absenden neu, damit die signierte Sitzung zur aktuellen Revision passt.

Bedingte Logik

Ein Feld kann anhand des Werts anderer Felder ein- oder ausgeblendet werden, mit UND- und ODER-Gruppen, die bis zu zehn Ebenen tief ineinander verschachtelt sein können. Vierzehn Operatoren stehen zur Verfügung: gleich, ungleich, enthält, enthält nicht, beginnt mit, endet mit, ist leer, ist nicht leer, größer als, kleiner als, größer oder gleich, kleiner oder gleich, ist eines von und ist keines von.

Die Bedingungen werden bei jeder Einreichung erneut auf dem Server ausgewertet. Ein vom Browser verstecktes Feld kann trotzdem von Hand gesendet werden, das Verstecken im Browser ist also eine Annehmlichkeit und niemals eine Regel. Dieselbe Auswertung entscheidet auch, welche Felder für Validierung, Speicherung und Benachrichtigungstext existieren — was auch bedeutet, dass sich das Formular bei abgeschaltetem JavaScript korrekt verhält, nur ohne das Live-Ein- und -Ausblenden.

Mehrstufige Formulare und Speichern-und-fortsetzen

Ein Seitenumbruch macht aus einem Formular mehrere Schritte. Er ist ein gewöhnliches Layoutfeld, sodass ein langes Formular durch Hinzufügen eines Feldes zu einem mehrstufigen wird, statt durch Umwandlung in etwas anderes.

Speichern-und-fortsetzen bewahrt eine teilweise ausgefüllte Einreichung auf und gibt dem Besucher einen Link zurück dorthin. Der Link trägt ein signiertes Token — die Zeilenkennung und ein HMAC darüber — und die Signatur wird aus dem eigenen Geheimnis der Website abgeleitet. Nichts in der Datenbank reicht für sich genommen aus, um eines zu fälschen, der Vergleich erfolgt in konstanter Zeit, und der Link läuft nach dreißig Tagen ab.

Das Token ist die Berechtigung: Es ist keine Anmeldung erforderlich und kein Cookie wird gesetzt, sodass jeder, der den Link besitzt, diese Einreichung fortsetzen kann. Behandeln Sie einen Fortsetzungs-Link wie einen Link zum Zurücksetzen eines Passworts — senden Sie ihn an die Person, nicht an ein gemeinsam genutztes Postfach.

Einträge und Datenschutzgrenze

Einträge und typisierte Feldprojektionen werden in eigenen lokalen Tabellen gespeichert. Passwörter, Kartendaten, CVV, WordPress-Nonces, Sitzungstoken und Felder mit store=false werden niemals in Eintragswerte geschrieben.

  • IP-Adressen werden nur dort als websitespezifischer HMAC dargestellt, wo die Ratenbegrenzung es braucht.
  • Text-, Zahlen- und Datumsprojektionen ermöglichen eine spätere Suche, ohne die ursprüngliche Feldidentität zu verändern.
  • Ein fehlgeschlagener Schreibvorgang für Eintrag oder Ausgang macht die vollständige Einsendungstransaktion rückgängig.
  • Produktionsnachweise halten nur Formular-, Eintrags- und Job-Kennungen fest; niemals eingesendete Werte.

Die Eintragsliste durchsucht die gespeicherten Werte, filtert nach Status, nach Gelesen- und Markiert-Status sowie nach Datumsbereich, und wendet Gelesen, Ungelesen, Markieren, Markierung entfernen, Spam, Papierkorb, Wiederherstellen und Löschen gleichzeitig auf eine Auswahl an. Jede dieser Aktionen wird separat gegen Ihre Berechtigungen geprüft, sodass eine Rolle, die Einträge lesen, aber nicht löschen darf, sie auch nicht über eine Massenaktion löschen kann.

CSV, das korrekt geöffnet wird
Die Datei beginnt mit einer Byte Order Mark, die dafür sorgt, dass Excel sie als UTF-8 liest — ohne sie kommen türkische Zeichen defekt an, und die übliche Reaktion ist, den Export statt die Kodierung dafür verantwortlich zu machen.
CSV, das nicht ausgeführt werden kann
Einem Wert, der mit =, +, -, @, einem Tabulator oder einem Zeilenumbruch beginnt, wird ein Apostroph vorangestellt. Diese Zeichen bringen eine Tabellenkalkulation dazu, einen eingereichten Wert als Formel zu behandeln, und ein Formular ist genau der Ort, an dem ein Fremder diesen Wert wählt.

Benachrichtigungen und Bestätigungen

Benachrichtigungen sind dauerhafte Jobs. Ein Mailausfall kann einen angenommenen Eintrag nicht löschen: vorübergehende Fehler werden mit begrenzten Verzögerungen wiederholt, während dauerhafte Konfigurationsfehler für eine Aktion der Administration anhalten.

Ein Formular kann mehrere Benachrichtigungen tragen, jede mit eigenen Empfängern, Betreff, Text und Bedingung. Empfänger können feste Adressen sein, Adressen aus einem vom Besucher ausgefüllten Feld, oder anhand eines Feldwerts gewählte Routen — und jede passende Route wird genutzt, nicht nur die erste, denn ein Formular, das gleichzeitig Vertrieb und Support erreicht, ist der Normalfall und kein Fehler. Ein Autoresponder ist dasselbe Werkzeug, nur zurück auf die Person gerichtet, die das Formular ausgefüllt hat.

Kopfzeilen
Empfänger und Merge-Tags in Kopfzeilen werden validiert; CR/LF-Injektionen werden entfernt.
Textkörper
HTML wird für seinen Ausgabekontext maskiert oder gefiltert.
Bestätigung
Meldung, Seite auf derselben Website und Weiterleitung auf der Erlaubnisliste werden aus dem gespeicherten Schema gewählt.
Idempotenz
Derselbe Benachrichtigungs-Job-Schlüssel kann denselben Nebeneffekt nicht zweimal erzeugen.
Zustellprotokoll
Eine Zeile pro Versuch: welches Formular, welcher Eintrag, welche Benachrichtigung und welcher Job, ob gesendet oder fehlgeschlagen, der wievielte Versuch es war, die Empfänger, der Betreff sowie Fehlercode und -meldung. Eine fehlgeschlagene Zeile kann vom Bildschirm aus erneut gesendet werden.

Das Protokoll erfasst, was versucht wurde, nicht was zugestellt wurde. Mail wird an WordPress übergeben und von dort an Ihren Hoster; eine als gesendet markierte Zeile bedeutet, dass sie die Website verlassen hat, und nur ein Bounce am anderen Ende kann Ihnen den Rest verraten.

Spamschutz

Zwei Abwehrmechanismen sind vom Moment der Installation an aktiv: ein Honeypot-Feld, das eine Person nie zu sehen bekommt, und eine Zeitprüfung, die ein Formular ablehnt, das in weniger als drei Sekunden abgeschickt wurde. Beides kostet den Besucher nichts und beeinträchtigt keine assistiven Technologien — deshalb sind sie der Standard und keine Herausforderung (Challenge).

Darüber hinaus ist alles optional und ausgeschaltet, bis Sie es aktivieren: reCAPTCHA v2 und v3, hCaptcha, Cloudflare Turnstile und Akismet sowie Regeln für Schlüsselwörter, Adressen und Länder, die vollständig auf Ihrem eigenen Server laufen.

Eine als Spam eingestufte Einreichung wird markiert, nicht gelöscht. Ein Honeypot-Treffer, ein fehlgeschlagenes oder niedrig bewertetes CAPTCHA und ein Akismet-Urteil speichern den Eintrag alle mit Spam-Status, wo Sie ihn lesen und Ihre Meinung ändern können — denn die Kosten einer fälschlich verworfenen Anfrage sind weit höher als die Kosten einer Zeile, die Sie sich ansehen müssen. Die zwei Ausnahmen sind die Zeitprüfung und die Ratenbegrenzung, die die Anfrage ablehnen, bevor überhaupt ein Eintrag existiert; da gibt es nichts zu markieren, und nie wurde etwas erst akzeptiert und dann weggeworfen.

Akismet ist die einzige Option, die die eingereichten Werte, die IP-Adresse des Besuchers, den User-Agent des Browsers und die verweisende URL an einen Dritten sendet. Das ist eine Übermittlung personenbezogener Daten: Informieren Sie Ihre Besucher, bevor Sie es aktivieren. Die anderen Anbieter erhalten nur, was ihr eigenes Skript sammelt, plus das Challenge-Token, und die IP-Adresse des Besuchers wird ihnen nicht übermittelt, sofern nicht ein Filter auf Ihrer Website danach fragt.

Zugriffskontrolle

Ein Formular kann nach Zeitplan öffnen und schließen, nach einer bestimmten Anzahl Einreichungen stoppen, einen angemeldeten Nutzer oder eine bestimmte Rolle verlangen oder hinter einem Passwort liegen. Über alle vier entscheidet eine einzige Funktion, und diese Funktion wird von zwei Stellen aufgerufen: einmal, wenn das Formular gerendert werden soll, und einmal, wenn eine Einreichung eintrifft.

Zwei Aufrufstellen, eine Entscheidung. Wären das Verstecken des Formulars und das Ablehnen einer direkten Einreichung getrennt geschrieben, würden sie mit der Zeit auseinanderdriften, und das geschlossene Formular würde weiterhin einen POST von jemandem akzeptieren, der die Adresse kannte. Nichts davon wird im Browser durchgesetzt.

Das Einreichungslimit wird unmittelbar nach dem Schreiben der Zeile noch einmal geprüft, wobei die Zählung beim Lesen gesperrt wird. Zwei Besucher, die in derselben Sekunde absenden, würden sonst beide eine Prüfung bestehen, die durchgeführt wurde, bevor einer von beiden gezählt worden war.

Datei-Uploads

Hochgeladene Dateien werden außer Reichweite der Adressleiste gehalten. Der Verzeichnisname ist nicht erratbar und trägt Sperrregeln für Apache, IIS und einen Verzeichnisindex, sodass eine Datei nicht ausgeliefert wird, selbst wenn jemand ihren Pfad erfährt.

Der Tresor liegt innerhalb Ihres Uploads-Verzeichnisses, sofern Sie nicht MEVVFORMS_FILE_VAULT_DIR definieren und auf einen Ort außerhalb des Web-Root verweisen. Unterhalb des Web-Root zu liegen ist stärker als Sperrregeln, weil es eine zurückgesetzte oder gar nicht gelesene Webserver-Konfiguration übersteht. Wenn Ihr Hoster es zulässt, setzen Sie es.

Eine Datei wird nach ihrem Inhalt beurteilt, nicht nach dem Namen, mit dem sie ankam. Die ersten Bytes werden mit einer Tabelle bekannter Signaturen verglichen, ausführbare Magic Bytes werden rundweg abgelehnt, und eine Datei wird auf ein eingebettetes Skript hin durchsucht, selbst wenn ihre Signatur harmlos aussah. Eine Erweiterung ist eine Behauptung dessen, der die Datei hochgeladen hat.

Downloads laufen über einen signierten Link statt über einen Pfad. Die Signatur deckt die Datei, die Person und ein Ablaufdatum ab — standardmäßig fünfzehn Minuten und nie mehr als ein Tag — und der Download prüft trotzdem erneut, ob die Person berechtigt ist, sie zu haben, selbst innerhalb des Zeitfensters des Links. Ein an jemand anderen weitergeleiteter Link funktioniert für diese Person nicht.

Frontend-Ansichten

Einträge können als Ansicht auf die Website zurück veröffentlicht werden: als Raster, Tabelle, Kalender, Zeitleiste oder Karte. Ansichten werden mit [mevvforms_view id="12"] oder mit dem Block MevvForms View platziert, und einen einzelnen Datensatz an eine Seite zu pinnen ist eine Frage der Benennung des Eintrags.

Die Karte kontaktiert keinen externen Dienst. Es gibt keine Kacheln zu laden, keinen Schlüssel zu beschaffen und keine Geocoding-Anfrage: Die Punkte werden als eingebettetes Vektorbild auf Ihrer eigenen Seite gezeichnet, mit den Koordinaten zusätzlich darunter als Text für alle, die die Zeichnung nicht sehen können. Sie wirkt schlichter als eine Kartenkachel-Ansicht, dafür wird im Gegenzug keine Adresse eines Besuchers durch eine Seite, von der er nicht wusste, dass sie eine Karte enthält, an ein Kartenunternehmen gesendet.

Datenschutz und Aufbewahrung

MevvForms ist bei WordPress' eigenen Werkzeugen zum Exportieren und Löschen personenbezogener Daten registriert, sodass eine über WordPress bearbeitete Datenanfrage Einträge, teilweise ausgefüllte Einreichungen und Dateien findet, ohne dass jemand daran denken muss, einen zweiten Bildschirm zu prüfen.

Die Aufbewahrung wird pro Formular als Anzahl von Tagen festgelegt — null bedeutet für immer behalten, und die Obergrenze liegt bei zehn Jahren. Ein stündlicher Job wendet sie an.

Bevor eine Änderung der Aufbewahrung gespeichert wird, teilt Ihnen der Bildschirm mit, wie viele Einträge dadurch für die endgültige Löschung infrage kämen. Die Zahl wird zuerst ermittelt, und die Löschung ist ein separater, gesondert bestätigter Schritt. 30 in ein Feld einzutippen sollte nie dieselbe Geste sein wie das Vernichten von viertausend Datensätzen.

Formularanalyse

Analytics beantwortet eine Frage — wo brechen Menschen dieses Formular ab — und ist ausgeschaltet, bis Sie es aktivieren und die Formulare benennen, die es messen darf. Solange es aus ist, wird nichts geschrieben, kein Skript zu Ihren Seiten hinzugefügt und es existiert überhaupt kein öffentlicher Endpunkt.

Eingeschaltet führt es zwei Tabellen mit täglichen Zählern: pro Formular die Aufrufe, Starts, Einreichungen und Abbrüche; pro Feld die Abbrüche bei diesem Feld, wie oft es leer gelassen wurde, die Validierungsfehler, die gesamte Fokuszeit und wie viele Besucher es fokussiert haben.

Es wird keine Besucherkennung erzeugt und kein Cookie gesetzt. Die Tabellen haben keine Spalte für eine IP-Adresse, einen Nutzer, eine E-Mail, eine Sitzung, einen Fingerabdruck, einen Referrer oder einen eingereichten Wert — die Form des Schemas macht eine Zeile unrückverfolgbar, nicht ein Versprechen, nicht hinzusehen. Das Browsersignal geht an Ihre eigene Website und wird mit dem eigenen, kurzlebigen Ticket des Formulars authentifiziert, das für jeden Besucher dieses Formulars identisch ist. Da die Zeilen Aggregate sind, findet ein Export personenbezogener Daten nichts zu exportieren, und eine Löschanfrage wird mit einer entsprechenden Zeile beantwortet.

Ein Formular mit KI erzeugen

Sie können ein Formular in einem Satz beschreiben und sich die Felder anordnen lassen. Drei Verbindungen werden unterstützt: Ollama und LM Studio, die auf Ihrer eigenen Maschine oder Ihrem eigenen Server laufen, sowie ein OpenAI-kompatibler Endpunkt für alle, die lieber ein gehostetes Modell mit eigenem Schlüssel nutzen möchten.

  • Nirgendwo im Plugin gibt es ein Kontingent, ein Guthaben oder einen Nutzungszähler — nichts, das ausgehen könnte, weil das Modell nicht unseres ist.
  • Mit Ollama oder LM Studio verlässt die Beschreibung Ihres Formulars nie die Maschine, auf der das Modell läuft.
  • Ist keine Verbindung konfiguriert, wird die Funktion gar nicht erst angezeigt und keine Anfrage gestellt. Es gibt keinen gehosteten Fallback, der versehentlich genutzt werden könnte.

Ein eingefügter Schlüssel wird in einer einzelnen WordPress-Option gehalten, die nicht auf jeder Seite geladen wird, und der Bildschirm zeigt ihn danach maskiert an — er wird jedoch so gespeichert, wie Sie ihn eingegeben haben, nicht verschlüsselt. Alles mit Datenbankzugriff kann ihn lesen. Verwenden Sie einen Schlüssel mit auf das Nötige begrenztem Umfang und erneuern Sie ihn, wenn die Website den Besitzer wechselt.

Was zurückkommt, ist ein Entwurf. Es ist ein zu korrigierendes Ausgangslayout, kein ungelesen zu veröffentlichendes Formular — und ein erzeugtes Feld hat keine Ahnung davon, was Ihr Recht Sie zu fragen oder wegzulassen verpflichtet.

Import aus einem anderen Formular-Plugin

Formulare können aus sieben anderen Plugins importiert werden: Contact Form 7, WPForms, Gravity Forms, Fluent Forms, Formidable Forms, Ninja Forms und SureForms.

  • Die Quelle wird ausschließlich gelesen. Der Import ändert, deaktiviert oder löscht nichts im anderen Plugin, und dessen eigene Daten bleiben genau dort, wo sie waren.
  • Alles, was nicht übertragen werden kann, wird mit Begründung aufgelistet. Der Import verweigert das Schreiben, bis Sie diese Liste gesehen und akzeptiert haben — ein stiller, unvollständiger Import ist die Art, wie eine fehlende Benachrichtigung drei Wochen später von einem Kunden entdeckt wird, der nie eine Antwort erhalten hat.
  • Alte Shortcodes funktionieren weiter. Der Shortcode des Quell-Plugins wird von MevvForms beantwortet, sobald die Migration aktiv ist, sodass nie bearbeitete Seiten weiterhin ein funktionierendes Formular zeigen. Hat bereits etwas anderes diesen Shortcode beansprucht, lässt MevvForms ihn in Ruhe.

Behalten Sie das Quell-Plugin installiert, bis Sie das neue Formular selbst abgeschickt und den Eintrag sowie die Benachrichtigung gesehen haben. Ein Zurückrollen ist einfach, solange das Original noch da ist, und mühsam, sobald es weg ist.

Umkehrbare WPForms-Migration

Die Migration beginnt schreibgeschützt. Die Vorschau listet zugeordnete Felder, Benachrichtigungen, Bestätigungen, Einbindungen und nicht unterstützte Einstellungen auf. Das Anwenden legt ein bereitgestelltes MevvForms-Formular an oder aktualisiert es und hält den Quell-Hash fest. WPForms-Daten, Revisionen, Tabellen oder Seiteninhalte werden nicht gelöscht.

  1. Verlangen Sie vor dem Anwenden eine exakte Vorschau.
  2. Importieren Sie das Formular bereitgestellt und vergleichen Sie die Quell-Hashes erneut.
  3. Durchlaufen Sie das Zustandstor der Umschaltung: veröffentlichen, darstellen, signierte Testeinsendung, lokaler Eintrag und Benachrichtigung in der Warteschlange.
  4. Erst wenn diese Prüfungen bestanden sind, darf das bisherige Plugin abgeschaltet werden.
  5. Schlägt eine Prüfung fehl, stellt das Rollback die frühere Liste aktiver Plugins wieder her und setzt das importierte Formular auf Entwurf zurück.

Der gemessene Bestand auf mevvshop.com umfasst ein Quellformular mit 4 Feldern, 1 Benachrichtigung, 1 Bestätigung und einer aktiven Einbindung. Diese Zahlen sind ein Release-Kriterium für diese Website, kein Versprechen für jedes WPForms-Formular.

Eine Zahlung entgegennehmen

Ein Formular kann einen Preis tragen. Produktfelder halten die Positionen, Berechnungs- und Summenfelder ermitteln, was geschuldet wird, und die Bestellung wird bei jeder Einreichung auf dem Server aus dem Schema aufgebaut.

  • Der Betrag kommt nie vom Browser. Eine mit der Einreichung ankommende Summe wird nur zum Vergleich verwendet, und eine Abweichung lehnt die Einreichung ab, statt sie still zu korrigieren — einem Besucher darf nie ein anderer Betrag berechnet werden als der, der ihm gezeigt wurde.
  • Geld wird durchgängig als Ganzzahlen in der kleinsten Einheit der Währung geführt. Kein Geldwert läuft irgendwo durch eine Gleitkommazahl.
  • Nichts wird bezahlt ohne eine Antwort des Anbieters. Ein von der Zahlungsseite zurückkehrender Browser versetzt die Bestellung höchstens in den Status „muss abgeglichen werden“; bezahlt erfordert eine signaturgeprüfte Benachrichtigung oder eine direkt an den Anbieter gestellte Frage.
  • Kartendaten erreichen die Website nie. Weder im Zahlungsvertrag gibt es ein Feld für eine Kartennummer, ein Ablaufdatum oder einen Sicherheitscode, noch in der Datenbank eine Spalte dafür.
PayPal — ein Pro-Gateway
Pro ergänzt ein PayPal-Gateway auf Basis von Orders v2. Die Bestellung wird auf Ihrem Server geöffnet, die Besucherin bestätigt sie auf der Seite von PayPal, und das Geld wird auf dem Rückweg eingezogen — oder, wenn sie den Tab vorher schließt, sobald die signierte Benachrichtigung eintrifft. Beide Wege enden am selben Punkt, sodass eine bestätigte Bestellung nicht ohne Einzug und mit nicht vereinnahmtem Geld liegen bleibt. Gegen doppelten Einzug wird zweifach gesichert: Der Einzugsaufruf trägt eine feste Request-ID, die PayPal nicht erneut ausführt, und eine Antwort „bereits eingezogen“ wird als bereits erledigte Arbeit gelesen, nicht als Fehler. Rückerstattungen, ganz oder teilweise, werden aus dem Eintrag heraus ausgelöst.
PayPal ist in der Türkei nicht verfügbar
PayPal ist in der Türkei nicht tätig und rechnet nicht in türkischer Lira ab; dieses Gateway dient also dem Verkauf ins Ausland. Die türkischen Zahlungsanbieter bleiben, wo sie waren — auf der MevvPos-Brücke —, und daran ändert sich hier nichts.

Keine Transaktionsgebühr, auf keiner Stufe. Mehrere Formular-Plugins nehmen auf ihrer kostenlosen Zahlungsebene einen Prozentsatz dessen, was Sie einziehen; ein Test stellt sicher, dass der an den Anbieter gesendete Betrag exakt der Bestellsumme entspricht.

Keine Zahlung wurde durchgängig ausgeführt, PayPal eingeschlossen. Dahinter steht bislang weder ein Live- noch ein Sandbox-Händlerkonto: Jeder Anbieterpfad wird gegen einen Platzhalter ausgeführt, und die Gestalt von Anfrage und Benachrichtigung wurde Zeile für Zeile gegen die veröffentlichten Referenzen der Anbieter geprüft, nicht gegen einen abgeschlossenen Aufruf. Behandeln Sie die Zahlungsfunktionen bis dahin als unbewiesen und stellen Sie sie nicht allein auf unser Wort hin vor echte Kunden.

Zapier und Make

Pro kann Einträge auch als REST-Hooks an Zapier und Make ausliefern. Zapier abonniert eines Ihrer Formulare, MevvForms merkt sich das Abonnement, und jeder weitere Eintrag wird in die Warteschlange gestellt und dorthin zugestellt. Ein Abbestellen entfernt es wieder, und eine eigene Beispielroute übergibt Zapier einen aktuellen Eintrag, damit dessen Feldzuordnungs-Bildschirm echte Feldnamen zeigen kann statt leerer Kästchen.

  • Die Authentifizierung ist ein Site-Schlüssel, den Sie im Zapier-Einstellungsbildschirm erzeugen. Er ist die einzige Zugangsinformation und identifiziert die Website, nicht eine Person.
  • Die Zustellungen laufen über den signierten Webhook und die Job-Warteschlange, die die kostenlose Edition ohnehin nutzt. Das ist ein neues Ziel, kein zweites Zustellsystem — Zustellprotokoll und Wiederholversuche funktionieren also genauso.
  • Ohne gültige Lizenz startet das Modul überhaupt nicht: Es wird keine Route registriert, kein Hook hinzugefügt, und es gibt keinen Codepfad, der eine entfernte Adresse erreichen könnte.

Zapier und Make waren auch ohne Pro schon erreichbar, denn die kostenlose Edition kann einen signierten Webhook per POST an jede Adresse senden. Was Pro entfernt, ist das Dazwischen — Abonnement, Feldzuordnung und Wiederholversuch bauen Sie nicht mehr selbst.

Salesforce

Pro kann aus einer Einsendung einen Salesforce-Lead, -Contact oder -Case machen. Sie bilden die Formularfelder auf dem Connector-Bildschirm auf die Felder des Objekts ab, und jeder Eintrag wird über dieselbe Warteschlange geschickt, die die anderen Connectoren benutzen — ein Salesforce-Ausfall verzögert den Datensatz also, er verliert den Eintrag nicht.

  • Die Authentifizierung ist OAuth 2.0 mit einem Refresh-Token. Auf Ihrer Site wird kein Salesforce-Passwort gespeichert.
  • Sandbox und Produktion sind ein Schalter, nicht ein zweiter Satz Zugangsdaten, den Sie auseinanderhalten müssen.
  • Der Eintrag selbst bleibt so oder so auf Ihrer eigenen Site. Eine Kopie an Salesforce zu schicken heißt nicht, Ihre Daten dorthin zu verlegen.

Uploads auf Ihrem eigenen Objektspeicher

Standardmäßig liegt der Dateitresor auf Ihrer eigenen Platte, außerhalb des Web-Roots. Pro kann ihn stattdessen auf jeden S3-kompatiblen Speicher verlegen — AWS S3, Cloudflare R2, MinIO, DigitalOcean Spaces, Backblaze B2 oder Wasabi — und signiert jede Anfrage selbst, sodass nie ein Drittanbieter-SDK die Einträge zu sehen bekommt.

Was sich ändert, ist, wo die Bytes liegen, nicht, wer sie abrufen darf. Dateien werden weiterhin nur über einen zeitlich begrenzten, an eine Person gebundenen Link herausgegeben, und das kostenlose Plugin entscheidet weiterhin, wer einen bekommen darf. Den Speicher zu verlegen verlegt die Berechtigungsprüfung nicht.

Sprachen

Neunzehn WordPress-Sprachversionen werden mit dem Plugin ausgeliefert: Deutsch (Deutschland, förmliches Deutschland und Schweiz), Englisch, Spanisch (Spanien, Mexiko, Argentinien, Chile, Kolumbien), Französisch, Italienisch, Japanisch, Niederländisch (Niederlande und Belgien), Polnisch, Portugiesisch (Brasilien und Portugal), Russisch und Türkisch. Die editierbaren Quellkataloge sind enthalten, sodass eine Übersetzung auf Ihrer eigenen Website korrigiert werden kann.

Türkisch und Englisch sind die beiden, die Zeile für Zeile durchgelesen wurden. Die anderen sind vollständig, aber nicht alle wurden bereits von Menschenhand durchgesehen; liest sich eine Zeichenkette in Ihrer Sprache seltsam, ist das der Grund, und der Katalog ist dazu da, sie zu korrigieren.

Grenze zwischen Free und Pro

Die verlässliche Laufzeit gehört der kostenlosen Edition und mit ihr fast alles auf dieser Seite: das Schema, alle achtunddreißig Feldtypen, der barrierefreie Renderer, serverseitige Validierung und bedingte Logik, mehrstufige Formulare mit Zusammenfassungsschritt und Konversationsmodus, Speichern und Fortsetzen, lokale Einsendungen mit CSV-Export und Prüfprotokoll, Admin-Notizen und ein Freigabeprozess, Benachrichtigungswarteschlange und Zustellprotokoll, ausgehende, HMAC-signierte Webhooks, die vollständige Spam-Suite, Zugriffssteuerung, der Datei-Tresor, Frontend-Ansichten, Aufbewahrungs- und Datenschutzwerkzeuge, Auswertungen, KI-Erzeugung, die Importer für sieben Plugins und Einmalzahlungen ohne Transaktionsgebühr.

Pro ergänzt die benannten Dienst-Konnektoren: Mailchimp, HubSpot, Brevo, ActiveCampaign, Airtable, Notion, Google Sheets, Discord, Telegram und Slack, jeder in der eigenen Form des jeweiligen Dienstes, dazu ein PayPal-Gateway, ein auf REST-Hooks gebauter Zapier- und Make-Konnektor, wiederkehrende Zahlungen, Rabattcodes und Teilzahlungen. Achten Sie darauf, was das weiterhin bedeutet: Die kostenlose Edition sendet bereits einen signierten Webhook per POST an eine beliebige Adresse, sodass Zapier, Make und alles selbst Geschriebene auch ohne Pro erreichbar bleiben — Pro nimmt Ihnen das Dazwischen ab: das Abonnement, die Feldzuordnung und den Wiederholversuch, die Sie sonst selbst schreiben würden. Die Lizenzschranke ist die Startprüfung des Moduls selbst: Ohne gültige Lizenz wird keine Konnektorklasse geladen, kein Job-Filter registriert und kein Remote-Aufruf ist möglich.

Ein Roadmap-Punkt wird nicht als funktionierende Fähigkeit beworben. Prüfen Sie die installierte Version und die Release-Notes, bevor Sie ein Formular um ein Pro-Modul herum entwerfen.

Fehlerbehebung und Rollback

Der alte Shortcode bleibt leer
Prüfen Sie, ob die Quell-ID eine aktive Migrationszuordnung hat und ob nicht ein anderes Plugin den wpforms-Shortcode besitzt.
Die Einsendung meldet eine abgelaufene Sitzung
Laden Sie die Seite neu und senden Sie gegen die zuletzt veröffentlichte Revision ab.
Eine Benachrichtigung wartet
Öffnen Sie den Status der Warteschlange und beheben Sie den dauerhaften Konfigurationsfehler oder lassen Sie bei einem vorübergehenden Transportfehler den geplanten erneuten Versuch zu.
Die Umschaltung hat WPForms nicht deaktiviert
Lesen Sie das Zustandsergebnis. Das Sicherheitstor hat WPForms beibehalten oder wiederhergestellt, weil die Prüfung von Darstellung, Absenden, Eintrag oder Job fehlgeschlagen ist.
Ein Feld, das der Besucher nicht sehen konnte, kam trotzdem an
Das ist der Punkt, an dem der Server entscheidet. Bedingungen werden bei der Einreichung erneut ausgewertet, sodass ein für ein verstecktes Feld gesendeter Wert dort verworfen wird — prüfen Sie die Bedingung selbst, nicht den Browser.
Türkische Zeichen sind in der CSV defekt
Die Datei trägt eine Byte Order Mark und ist UTF-8. Eine Tabellenkalkulation, der gesagt wurde, sie als etwas anderes zu importieren, zeigt sie trotzdem falsch an; öffnen Sie sie direkt statt über einen Importassistenten mit bereits gewählter Kodierung.
Ein Download-Link zeigt an, dass er abgelaufen ist
Links gelten standardmäßig fünfzehn Minuten und sind an die Person gebunden, die sie angefordert hat. Erzeugen Sie einen neuen aus dem Eintrag; ein Link kann nicht an einen Kollegen weitergeleitet werden.
Das KI-Panel ist nicht da
Es ist keine Verbindung konfiguriert. Das Panel wird ausgeblendet statt defekt angezeigt, und solange es ausgeblendet ist, wird nirgendwohin etwas gesendet.
Ein Menüeintrag öffnet einen leeren Bildschirm
Manche Einträge im Menü sind Platzhalter für Bildschirme, die noch nicht gebaut sind. Ein leerer ist keine defekte Installation.

Nennen Sie dem Support die Plugin-, WordPress- und PHP-Versionen sowie den sicheren Fehlercode. Entfernen Sie Feldwerte, Kundendaten, Sitzungstoken, Nonces und Lizenzschlüssel, bevor Sie Protokolle senden.

Updates

Updates kommen über WordPress selbst. Das Plugin fragt unseren Store, ob eine neuere Version existiert, und übergibt die Antwort dem eigenen Update-Ablauf von WordPress, sodass eine neue Version auf der Plugin-Seite mit einem gewöhnlichen Aktualisieren-Button erscheint, statt darauf zu warten, dass jemand von Hand ein ZIP herunterlädt. In der kostenlosen Edition trägt diese Anfrage nur den Paketnamen und die installierte Version — keine Website-Adresse, keine E-Mail-Adresse, keinen Lizenzschlüssel und kein Plugin-Inventar. Da nichts darin Sie identifiziert, ruht das Vertrauen auf der Signatur: Die Antwort ist mit unserem Ed25519-Schlüssel signiert, und eine unsignierte, falsch signierte, aus einem alten Zeitstempel wiedereingespielte oder auf einen fremden Host zeigende Antwort wird verworfen, ohne die Website zu berühren.

Grenzen

Klar ausgesprochen, damit nichts auf dieser Seite auf Vertrauen beruhen muss.

  • Die Zahlungsfunktionen wurden nicht gegen ein echtes oder Sandbox-Händlerkonto verifiziert. Sie sind nach der Dokumentation der Anbieter gebaut und gegen eine Ersatz-Übertragung getestet.
  • Im Builder gibt es kein Rückgängig oder Wiederherstellen. Revisionen sind der Weg zurück.
  • Die PDF-Ausgabe hängt von der Website ab. Ist eine PDF-Bibliothek installiert, nutzt MevvForms sie; falls nicht, erzeugt es stattdessen ein druckbares Dokument und überlässt das Drucken dem Browser. Es wird keine PDF-Bibliothek mitgeliefert, und keine wird von irgendwoher nachgeladen.
  • Jeder Menüeintrag öffnet jetzt einen echten Bildschirm. Berichte, Integrationen, Import und Export, Einstellungen, Rollen und Protokolle waren in früheren Versionen Platzhalter; seit 1.1.0 wird jeder von seinem eigenen Paket bedient.
  • Der Tresor für hochgeladene Dateien liegt standardmäßig im Uploads-Verzeichnis und wird durch Sperrregeln geschützt, nicht durch seinen Standort — es sei denn, Sie verweisen ihn selbst außerhalb des Web-Root.
  • KI-Schlüssel werden so gespeichert, wie sie eingegeben wurden, nicht verschlüsselt. Sie werden auf dem Bildschirm maskiert und aus den immer geladenen Optionen herausgehalten, was nicht dasselbe ist wie unlesbar zu sein.
  • Das Tastatur-Äquivalent des Builders ist vollständig, aber klein. Schaltflächen reagieren auf die üblichen Tasten, und das Verschieben eines Feldes hat einen Shortcut; es gibt keine größere Tastenbelegung zu erlernen und auch keine zu entdecken.

Wo diese Seite sagt, dass etwas gemessen wurde, wurde es gemessen. Wo sie sagt, dass etwas nicht bewiesen ist, ist das keine Bescheidenheit — es bedeutet, dass der Test noch nicht existiert, und Sie sollten die Aussage als unfertig behandeln.