OW Forms — Dokumentation
Ein moderner, DSGVO-nativer Formular-Builder für WordPress. Autor: OptionWeb — Julien Daniel Plugin-Startseite: https://optionweb.dev/de/addons/ow-forms/ Lizenz: GPL-2.0-or-later Dieses Dokument deckt Version 1.0.2 ab.
Inhaltsverzeichnis
- Überblick
- Installation
- Schnellstart — Ihr erstes Formular
- Feldtypen
- Anti-Spam-Stack
- DSGVO-Funktionen
- E-Mail-Benachrichtigungen
- Webhooks
- Datei-Uploads
- Rendering: Shortcode, Gutenberg, REST
- Contact Form 7-Importer
- Einstellungsreferenz
- REST API
- Entwickler-Hooks (filters & actions)
- Integration mit OW Consent / OW Shield
- Internationalisierung
- Fehlerbehebung
- FAQ
Überblick
OW Forms ist ein schema-gesteuerter Formular-Builder. Jedes Formular ist ein JSON-Dokument, das seine Felder, Validierung und sein Submit-Verhalten beschreibt. Das Plugin rendert dieses Schema als barrierefreies HTML, validiert Übermittlungen serverseitig, leitet sie durch einen vierlagigen Anti-Spam-Stack, persistiert, was Sie persistieren lassen, und löst E-Mail- und Webhook-Benachrichtigungen aus.
Was mitgeliefert wird (alles kostenlos, GPL-2):
- JSON-Schema-Engine mit 17 Feldtypen
- 4-lagiger Anti-Spam: Honeypot, Time-Trap, Multi-Provider-CAPTCHA, IP-Reputation
- Native DSGVO-Einwilligung + Aufbewahrung + DSAR
- REST API (Namespace
owf/v1) — öffentliches Submit + Admin-CRUD - Gutenberg-Block + Shortcode + PHP-Render-API
- HMAC-signierte ausgehende Webhooks
- Ein-Klick-Importer für Contact Form 7
- Erkennt automatisch OW Canvas-Theme-Tokens für visuelle Konsistenz
Was es bewusst NICHT tut:
- Zahlungsabwicklung (verwenden Sie WooCommerce + ein dediziertes Checkout)
- Multi-Page-Wizards über einfache Vor/Zurück hinaus (nutzen Sie ein dediziertes Wizard-Plugin)
- Drag-and-Drop-Visual-Builder in v1 (nur JSON-Editor; Visual Builder auf der Roadmap)
Installation
Aus WordPress.org (empfohlen)
- WordPress-Admin → Plugins → Installieren
- Suchen Sie nach
OW Forms - Klicken Sie Jetzt installieren, dann Aktivieren
Aus .zip-Upload
- Laden Sie
ow-forms-1.0.2.zipherunter von https://optionweb.dev/de/addons/ow-forms/ - Plugins → Installieren → Plugin hochladen
- Wählen Sie die Datei, klicken Sie Jetzt installieren, dann Aktivieren
Anforderungen
- WordPress 6.0 oder neuer
- PHP 7.4 oder neuer (8.1+ empfohlen)
- MySQL/MariaDB mit
JSON-Spalten-Unterstützung (5.7+ / 10.2+)
Was installiert wird
Bei der Aktivierung erstellt OW Forms drei eigene Tabellen:
{prefix}_owf_submissions— Submission-Payloads + Spam-Metadaten{prefix}_owf_files— Register hochgeladener Dateien{prefix}_owf_log— Submission-Audit-Trail
Plus einen Custom Post Type owf_form (nicht öffentlich abfragbar), der zum Speichern
der Formularschemata verwendet wird.
Schnellstart
Nach der Aktivierung wird automatisch ein Standard-"Kontakt"-Formular erstellt.
- Gehen Sie zu OW Forms → Formulare im Admin
- Notieren Sie sich die ID des Standardformulars (z. B.
1) - Fügen Sie auf einer beliebigen Seite oder Beitrag den Shortcode ein:
[owf_form id="1"]
…oder fügen Sie den OW Forms-Gutenberg-Block ein und wählen Sie das Formular aus dem Dropdown.
Das war's. Das Formular wird gerendert, akzeptiert Übermittlungen, sendet eine Admin-E-Mail
an admin_email und speichert die Übermittlung in der Datenbank.
Um es anzupassen, öffnen Sie das Formular unter OW Forms → Formulare → [Bearbeiten] und passen Sie das JSON-Schema direkt an. Ein Visual Builder steht auf der v1.1-Roadmap.
Feldtypen
OW Forms unterstützt 17 Feldtypen. Jedes Feld im Schema ist ein Objekt mit
mindestens type und name; die meisten akzeptieren zusätzlich label, help, required,
placeholder und typspezifische Optionen.
type | Zweck | Wichtige Optionen |
|---|---|---|
text | Einzeiliger Text | placeholder, pattern, maxlength |
email | E-Mail-Adresse | Auto-Validierung RFC 5322 |
tel | Telefonnummer | Lockere Validierung (E.164-freundlich) |
url | URL | Auto-Validierung http(s):// |
number | Numerisch | min, max, step |
textarea | Mehrzeiliger Text | rows, maxlength |
select | Einzelnes Dropdown | options: [{value, label}] |
radio | Einzelauswahl | options: [{value, label}] |
checkbox | Einzel-Boolean | default: bool |
checkbox-group | Mehrfachauswahl | options: [{value, label}] |
date | Datumsauswahl | min, max (YYYY-MM-DD) |
time | Zeitauswahl | min, max (HH:MM) |
datetime | Datum + Zeit | min, max (YYYY-MM-DDTHH:MM) |
file | Datei-Upload | multiple: bool, accept |
hidden | Versteckter Wert | Nützlich für Tracking |
rating | 1–5 Sterne-Bewertung | — |
consent | DSGVO-Einwilligungs-Checkbox | Auto-injiziert, wenn DSGVO aktiv |
Schema-Beispiel
{
"title": "Contact us",
"fields": [
{
"type": "text",
"name": "name",
"label": "Your name",
"required": true,
"placeholder": "Jane Doe"
},
{
"type": "email",
"name": "email",
"label": "Email",
"required": true
},
{
"type": "select",
"name": "subject",
"label": "How can we help?",
"required": true,
"options": [
{"value": "quote", "label": "Request a quote"},
{"value": "support", "label": "Technical support"},
{"value": "other", "label": "Other"}
]
},
{
"type": "textarea",
"name": "message",
"label": "Message",
"required": true,
"rows": 6
}
],
"submit": {
"label": "Send",
"success_message": "Thanks — we will reply within 24 hours.",
"redirect_url": ""
}
}
Die name-Werte der Felder werden zu Schlüsseln im gespeicherten Payload und zu Tokens,
die Sie in E-Mail-Templates verwenden können ({{name}}, {{email}} usw.).
Anti-Spam-Stack
OW Forms führt vier unabhängige Schichten parallel aus. Jede Schicht steuert einen Score-Beitrag bei; eine Übermittlung mit einem Score ≥ 80 wird stillschweigend verworfen — es wird keine Fehlermeldung zurückgegeben, sodass Bots nicht gegen den Schutz iterieren können.
1. Honeypot
Ein visuell verstecktes Textfeld, das Bots ausfüllen und Menschen nicht. Einstellung:
spam_honeypot_enabled(Standard:true)
2. Time-Trap
Lehnt Übermittlungen ab, die schneller als ein konfigurierbarer Schwellenwert abgeschlossen werden (typische Bots posten sofort).
spam_timetrap_enabled(Standard:true)spam_timetrap_min_seconds(Standard:2)
3. CAPTCHA (Multi-Provider)
Server-zu-Server-Token-Validierung gegen die API des Anbieters. Wählen Sie einen aus:
turnstile— Cloudflare Turnstile (empfohlen, datenschutzfreundlich, keine Challenge-UX)recaptcha_v3— Google reCAPTCHA v3 (unsichtbar)hcaptcha— hCaptcha (sichtbares Widget)friendly_captcha— Friendly Captcha (self-hosted Widget, MIT-lizenziert, EU-freundlich)
Setzen Sie spam_captcha_provider, spam_captcha_site_key und spam_captcha_secret_key
im Anti-Spam-Einstellungs-Tab. Standard ist none.
Hinweis: Widget-JS von Turnstile / reCAPTCHA / hCaptcha wird vom Ursprung des Anbieters selbst geladen (deren JS führt eine Origin-Signaturprüfung serverseitig durch). Friendly Captcha ist self-hosted unter
assets/js/vendor/.
4. IP-Reputation (optional)
Wenn OW Shield installiert und aktiv ist, nutzt OW Forms dessen IP-Reputations-Feed, um Übermittlungen zu bewerten:
spam_owshield_iprep(Standard:true)spam_block_disposable_emails(Standard:true) — lehnt@mailinator,@tempmailund ca. 120 andere Wegwerf-Domains ab
Zusätzliche Heuristiken
spam_min_words_per_text_area— verlangt mindestens N Wörter in Textareasspam_max_links_per_submission— lehnt ab, wenn mehr als N URLs im Payloadspam_blocklist_emails,spam_blocklist_words,spam_blocklist_ips— Ihre eigenen Listen
Protokollierung
Jede Spam-Entscheidung wird mit Begründung protokolliert. Prüfen Sie OW Forms → Übermittlungen → Filter "spam", um Schwellenwerte feinzujustieren, ohne im Blindflug zu sein.
DSGVO-Funktionen
DSGVO-Konformität ist nativ. Die Standardwerte sind konservativ; lockern Sie sie nur, wenn Sie dafür juristischen Rat haben.
Einwilligungs-Checkbox
Eine Einwilligungs-Checkbox wird automatisch am Ende jedes Formulars injiziert, wenn
gdpr_consent_required true ist (Standard). Der Text ist konfigurierbar:
'gdpr_consent_text' => __(
'I agree that my data will be processed to respond to my inquiry, in accordance with the privacy policy.',
'ow-forms'
)
Wenn gdpr_auto_link_privacy aktiv ist (Standard), werden die Wörter "privacy policy" /
"Datenschutzerklärung" automatisch mit der OW Consent-Datenschutz-URL verlinkt, wenn
dieses Plugin aktiv ist, andernfalls mit Ihrer WP-konfigurierten Datenschutz-Seite.
IP-Speichermodi
store_ip-Einstellung:
| Wert | Was gespeichert wird |
|---|---|
none | Nichts — keine IP gespeichert |
pseudonymized (Standard) | 192.168.1.42 → 192.168.1.0 (IPv4) / erste 4 Gruppen (IPv6) |
full | Vollständige IP — nur verwenden, wenn Ihre Rechtsgrundlage es zulässt |
User-Agent-Speicherung
store_user_agent-Einstellung:
| Wert | Was gespeichert wird |
|---|---|
none | Nichts |
hashed (Standard) | SHA-256 von UA + wp_salt() |
full | Gekürzter UA-String (max 64 chars) |
Aufbewahrung & Bereinigung
Ein täglicher Cron bereinigt Übermittlungen, die älter als gdpr_retention_days sind
(Standard: 1095 Tage — der CNIL-Standard für Interessentendaten). Auf 0 setzen, um
das automatische Bereinigen zu deaktivieren.
Wenn gdpr_auto_delete_after_response true ist, löscht das Markieren einer Übermittlung
als "bearbeitet" diese sofort zusammen mit allen hochgeladenen Dateien.
DSAR — Auskunfts- / Löschungsrecht
Formular-E-Mails werden beim Speichern mit wp_salt() gehasht. Wenn OW Consent
aktiv ist und eine DSAR-Löschung für eine E-Mail-Adresse verarbeitet wird, löscht OW Forms
automatisch passende Übermittlungen über email_hash und feuert:
do_action( 'owf_gdpr_erased_for_email', $hash, $count );
Ohne OW Consent können Sie die Löschung manuell aufrufen:
OWF_GDPR::erase_by_email( 'user@example.com' ); // returns int count
E-Mail-Benachrichtigungen
Templates
Sowohl Admin-Benachrichtigung als auch Nutzer-Auto-Antwort unterstützen {{token}}-Ersetzung:
| Token | Wird ersetzt durch |
|---|---|
{{site_name}} | get_bloginfo('name') |
{{form_title}} | Der Titel des Formulars |
{{form_id}} | Numerische Formular-ID |
{{submission_id}} | Numerische Submission-ID (0 wenn nicht gespeichert) |
{{date}} | Submission-Zeitstempel |
{{ip}} | IP gemäß store_ip-Modus |
{{page_url}} | URL, von der das Formular gesendet wurde |
{{all_fields}} | Alle Feld-Key/Value-Paare |
{{<field_name>}} | Beliebiges Feld über seinen name (z. B. {{email}}, {{message}}) |
Einstellungen
| Einstellung | Standard | Anmerkungen |
|---|---|---|
default_recipient_email | leer → admin_email | Pro Formular überschreibbar via schema.mail.recipient |
from_name | leer | Anzeigename des Absenders |
from_email | leer → WP-Standard | Absenderadresse |
mail_html | true | false schaltet auf Plain-Text um |
mail_admin_subject | [{{site_name}}] New message via {{form_title}} | |
mail_admin_body | leer → automatisch aus Feldern aufgebaut | |
mail_user_autoreply_enabled | true | |
mail_user_subject | We have received your message | |
mail_user_body | leer → generische Bestätigung | |
mail_failed_alert_email | leer | Benachrichtigt, wenn Mail-Versand fehlschlägt |
Pro-Formular-Override
Das Formularschema kann globale Werte überschreiben:
{
"mail": {
"recipient": "sales@example.com",
"subject": "New lead — {{name}}",
"body": "Lead: {{name}}\\nEmail: {{email}}\\nMessage: {{message}}",
"autoreply": true,
"autoreply_subject": "Thanks, {{name}}!",
"autoreply_body": "Hi {{name}},\\n\\nWe got your message."
}
}
Webhooks
Wenn webhook_url gesetzt ist, löst jede erfolgreiche Übermittlung einen HTTP-POST aus.
Payload (JSON)
{
"form_id": 1,
"form_title": "Contact",
"submission_id": 42,
"received_at": "2026-05-13T14:32:18+00:00",
"fields": { "name": "Jane", "email": "jane@example.com", "message": "Hi" },
"site": "https://example.com"
}
HMAC-Signatur
Wenn webhook_secret gesetzt ist, enthält der Request:
X-OWF-Signature: sha256=<hex digest of HMAC-SHA256(body, secret)>
Empfängerseitige Verifizierung (Node-Beispiel):
const expected = crypto
.createHmac('sha256', SECRET)
.update(rawBody)
.digest('hex');
const provided = req.headers['x-owf-signature'].replace(/^sha256=/, '');
if (!crypto.timingSafeEqual(Buffer.from(expected), Buffer.from(provided))) {
return res.status(401).end('bad sig');
}
Retries
Wenn der Empfänger 5xx zurückgibt oder Zeitüberschreitung hat, versucht OW Forms es erneut mit exponentiellem Backoff (60 s → 5 min → 30 min). Nach 3 Fehlschlägen wird der Webhook als dauerhaft fehlgeschlagen protokolliert, blockiert aber die Übermittlung nicht.
Datei-Uploads
Wenn allow_file_uploads aktiv ist (Standard true), wird jedes Feld vom Typ file
akzeptiert. Die Pipeline:
- Serverseitige Validierung — Dateigröße (
max_file_size_mb, Standard 8 MB), Erweiterungs-Allowlist (allowed_file_types) und einefinfo-MIME-Prüfung abgeglichen mitwp_get_mime_types(). - Speicherung —
wp-content/uploads/owf-uploads/YYYY/MM/<sha256>.<ext>mit einer Deny-all-.htaccess(Apache) und leererindex.php(Nginx/IIS). - Datenbankregister — Dateimetadaten + SHA-256-Hash in
{prefix}_owf_files, verknüpft mit der Eltern-Submission-ID. - Bereinigung — wenn eine Übermittlung gelöscht wird (manuell, durch Aufbewahrung oder DSAR), werden alle verknüpften Dateien entfernt.
Wichtig: OW Forms verwendet einen benutzerdefinierten, isolierten Upload-Pfad, nicht die WordPress-Mediathek, daher sind hochgeladene Dateien nicht über den Standard-Endpunkt
/wp-json/wp/v2/mediaauffindbar und es werden keine Thumbnails generiert. Das ist absichtlich — Formularanhänge sind privat für den Formular-Eigentümer.
Erlaubte Dateitypen (Standard)
pdf, jpg, jpeg, png, webp, doc, docx, xls, xlsx, csv, txt
Zum Erweitern:
add_filter( 'owf_settings', function( $s ) {
$s['allowed_file_types'] = array_merge(
(array) $s['allowed_file_types'],
array( 'odt', 'ods', 'zip' )
);
return $s;
} );
Rendering
Shortcode
[owf_form id="42"]
[owf_form slug="contact"]
id (numerische Post-ID) oder slug (Post-Slug) — eines ist erforderlich.
Gutenberg-Block
Suchen Sie im Block-Editor nach "OW Forms" im Block-Einfüger und wählen Sie Ihr Formular aus dem Dropdown.
PHP
echo OWF_Form::render( 42 );
// or
echo do_shortcode( '[owf_form id="42"]' );
REST
Das Formular kann auch programmatisch übermittelt werden — siehe REST API.
CF7-Importer
Wenn Contact Form 7 installiert ist oder war, liefert OW Forms einen Ein-Klick-Importer mit.
OW Forms → Tools → Aus Contact Form 7 importieren
Der Importer:
- Scannt jeden
wpcf7_contact_form-Beitrag in Ihrer Datenbank - Parst jedes shortcode-basierte CF7-Formular und baut das entsprechende OW Forms-Schema
- Behält Empfänger, Betreff, Erfolgs-/Fehlermeldungen und Feldtypen bei
- Schreibt jeden
[contact-form-7 id="..."]-Shortcode in all Ihrempost_content(Seiten, Beiträge, Custom Post Types) um zu[owf_form id="..."] - Protokolliert Ergebnisse: gefundene, importierte, übersprungene (bereits importiert)
Das CF7-Plugin kann anschließend deaktiviert und entfernt werden.
Der Importer ist idempotent: Zweimal ausführen erzeugt keine Duplikate. Bereits importierte CF7-Formulare werden über einen
_owf_imported_from_cf7-Meta-Key markiert und bei nachfolgenden Läufen übersprungen.
Einstellungsreferenz
Alle Einstellungen werden in einem einzigen Option-Key owf_settings gespeichert. Sie können
sie programmatisch lesen oder überschreiben:
$value = OWF_Core::setting( 'spam_timetrap_min_seconds' );
OWF_Core::update_settings( array( 'spam_timetrap_min_seconds' => 3 ) );
Vollständige Standardwerte
array(
// General
'default_recipient_email' => '', // empty = admin_email
'from_name' => '',
'from_email' => '',
'sender_uses_dpo' => true,
// Anti-spam
'spam_honeypot_enabled' => true,
'spam_timetrap_enabled' => true,
'spam_timetrap_min_seconds' => 2,
'spam_captcha_provider' => 'none',
'spam_captcha_site_key' => '',
'spam_captcha_secret_key' => '',
'spam_owshield_iprep' => true,
'spam_block_disposable_emails' => true,
'spam_min_words_per_text_area' => 0,
'spam_max_links_per_submission' => 3,
'spam_blocklist_emails' => array(),
'spam_blocklist_words' => array(),
'spam_blocklist_ips' => array(),
// GDPR
'gdpr_consent_required' => true,
'gdpr_consent_text' => '...',
'gdpr_auto_link_privacy' => true,
'gdpr_retention_days' => 1095,
'gdpr_auto_delete_after_response' => false,
// Storage
'store_submissions' => true,
'store_ip' => 'pseudonymized',
'store_user_agent' => 'hashed',
'allow_file_uploads' => true,
'max_file_size_mb' => 8,
'allowed_file_types' => array( 'pdf', 'jpg', 'jpeg', 'png',
'webp', 'doc', 'docx', 'xls',
'xlsx', 'csv', 'txt' ),
// Notifications
'mail_html' => true,
'mail_admin_subject' => '[{{site_name}}] New message via {{form_title}}',
'mail_admin_body' => '',
'mail_user_autoreply_enabled' => true,
'mail_user_subject' => 'We have received your message',
'mail_user_body' => '',
'mail_failed_alert_email' => '',
'webhook_url' => '',
'webhook_secret' => '',
// Rendering
'style_preset' => 'auto',
'button_label_default' => 'Send',
'success_message_default' => 'Your message has been sent. We will reply within 24 hours.',
'error_message_default' => 'An error occurred. Please try again or contact us directly.',
'inherit_theme_tokens' => true,
// Analytics (opt-in)
'track_conversions' => false,
'conversion_event_name' => 'generate_lead',
'conversion_value' => 0,
'conversion_currency' => 'EUR',
);
REST API
Alle Endpunkte leben unter dem Namespace owf/v1.
Öffentlicher Endpunkt
| Methode | Pfad | Berechtigung |
|---|---|---|
POST | /owf/v1/submit | Nonce-geschützt (wp_rest) |
Body:
{
"form_id": 1,
"fields": { "name": "Jane", "email": "jane@example.com", "message": "Hi" },
"_owf_nonce": "<from wp_create_nonce('owf_submit_form')>",
"_owf_time": 1736780000,
"_owf_hp": ""
}
Antwort (200):
{ "ok": true, "id": 42, "message": "Your message has been sent." }
Antwort (422) bei Validierungsfehler:
{
"ok": false,
"errors": { "email": "Please enter a valid email" },
"message": "Please review the fields in error."
}
Admin-Endpunkte (erfordern manage_options)
| Methode | Pfad | Beschreibung |
|---|---|---|
GET | /owf/v1/forms | Liste aller Formulare |
GET | /owf/v1/forms/{id} | Ein Formular abrufen |
PUT | /owf/v1/forms/{id} | Formular aktualisieren |
POST | /owf/v1/forms/create | Ein Formular erstellen |
GET | /owf/v1/submissions | Übermittlungen auflisten (Filter: form_id, status) |
GET | /owf/v1/submissions/{id} | Eine Übermittlung abrufen |
POST | /owf/v1/submissions/{id}/handle | Als bearbeitet markieren (kann löschen) |
POST | /owf/v1/importer/cf7 | CF7-Importer ausführen |
GET/POST | /owf/v1/settings | Plugin-Einstellungen lesen oder schreiben |
Alle Admin-Endpunkte erfordern sowohl die Capability manage_options als auch einen
gültigen WP-REST-Nonce.
Hooks (filters & actions)
Actions
/**
* Fires after a submission has been processed and stored.
*
* @param int $submission_id Database ID (0 if not stored)
* @param int $form_id Form ID
* @param array $cleaned Sanitized field payload
* @param array $schema Full form schema
*/
do_action( 'owf_submission_received', $submission_id, $form_id, $cleaned, $schema );
/**
* Fires after a DSAR erasure has deleted matching submissions by email hash.
*
* @param string $email_hash SHA-256(email + wp_salt())
* @param int $deleted_count
*/
do_action( 'owf_gdpr_erased_for_email', $email_hash, $deleted_count );
Filters
/**
* Filter the resolved settings array (merged defaults + saved + per-request).
*/
apply_filters( 'owf_settings', array $settings );
/**
* Whitelist of trusted reverse proxy IPs that may set X-Forwarded-For.
* Without this OW Forms ignores proxy headers (to prevent IP spoofing).
*/
apply_filters( 'owf_trusted_proxies', array $proxies );
/**
* List of disposable email domains rejected when `spam_block_disposable_emails`
* is on.
*/
apply_filters( 'owf_disposable_domains', array $domains );
Empfohlenes Muster — Wegwerf-Domain-Liste erweitern
add_filter( 'owf_disposable_domains', function( $list ) {
return array_merge( $list, array(
'example-throwaway.com',
'company-blocked-domain.net',
) );
} );
Empfohlenes Muster — Übermittlungen an ein CRM senden
add_action( 'owf_submission_received', function( $sid, $form_id, $cleaned ) {
if ( $form_id !== 7 ) return; // only the "Sales" form
wp_remote_post( 'https://crm.example.com/leads', array(
'headers' => array( 'Authorization' => 'Bearer ' . CRM_TOKEN ),
'body' => wp_json_encode( array(
'email' => $cleaned['email'],
'name' => $cleaned['name'],
'message' => $cleaned['message'],
'source' => 'website-form',
) ),
'headers' => array( 'Content-Type' => 'application/json' ),
) );
}, 10, 3 );
Integrationen
OW Canvas (Theme)
Wenn das OW Canvas-Theme
aktiv ist, erbt OW Forms dessen CSS Custom Properties (--owc-ink, --owc-paper,
--owc-accent usw.) für visuelle Konsistenz. Deaktivieren mit
inherit_theme_tokens = false.
OW Consent
Wenn OW Consent aktiv ist:
- Der Link in der DSGVO-Einwilligungs-Checkbox zeigt automatisch auf Ihre OW Consent- Datenschutz-URL
- Übermittlungen werden mit OW Consent-Datensätzen verknüpft (wenn der Besucher ein Consent-ID-Cookie hat)
- DSAR-Löschflüsse aus OW Consent bereinigen automatisch OW Forms-Übermittlungen für denselben E-Mail-Hash
OW Shield
Wenn OW Shield aktiv ist und
spam_owshield_iprep an ist, wird die IP jeder Übermittlung vor der Annahme gegen den
Reputations-Feed von OW Shield bewertet.
Internationalisierung
Die Quellsprache ist Englisch. Eine französische Übersetzung wird unter
languages/ow-forms-fr_FR.po mitgeliefert.
Für Übersetzer
Das .pot-Template befindet sich in languages/ow-forms.pot. Übersetzungen einreichen
über translate.wordpress.org/projects/wp-plugins/ow-forms,
sobald das Plugin auf WP.org genehmigt ist. Für lokale Verteilung legen Sie
ow-forms-<locale>.mo in den Ordner languages/.
.mo lokal kompilieren
msgfmt languages/ow-forms-fr_FR.po -o languages/ow-forms-fr_FR.mo
Fehlerbehebung
Formular wird übermittelt, aber keine E-Mail kommt an
- Prüfen Sie, ob Ihre Seite überhaupt Mails senden kann — testen Sie über das Kontaktformular eines anderen Plugins oder mit Mail Tester
- Prüfen Sie OW Forms → Übermittlungen, um zu bestätigen, dass die Übermittlung eingegangen ist (wenn ja, liegt das Problem an der Zustellung, nicht an OW Forms)
- Setzen Sie
mail_failed_alert_emailauf Ihre eigene Adresse — OW Forms schickt Ihnen eine E-Mail, wennwp_mail()falsezurückgibt - Installieren Sie ein SMTP-Plugin (Fluent SMTP, WP Mail SMTP usw.) — das Standard-
PHP-
mail()wird von 95 % der empfangenden Server abgelehnt
CAPTCHA wird nicht angezeigt
- Prüfen Sie, ob
spam_captcha_site_keyundspam_captcha_secret_keybeide gesetzt sind - Öffnen Sie die Seite in den DevTools — die Vendor-Skript-URL sollte mit 200 laden
- Bei reCAPTCHA muss Ihre Site-Domain im Google-Admin registriert sein
- Bei Turnstile muss der Widget-Modus im Cloudflare-Admin "Managed" oder "Non-interactive" sein
Dateien werden hochgeladen, aber der Admin kann sie nicht herunterladen
Das ist beabsichtigt — hochgeladene Dateien werden von einem authentifizierten PHP-Handler
ausgeliefert, nicht direkt. Prüfen Sie, ob Sie als Nutzer mit manage_options eingeloggt sind.
CF7-Importer sagt "0 Formulare gefunden"
Der Importer scannt den Post-Typ wpcf7_contact_form. Wenn CF7 bereits deaktiviert ist
und die Beiträge gelöscht wurden, gibt es nichts mehr zu importieren.
Reaktivieren Sie CF7 nur für den Import und deaktivieren Sie es danach wieder.
Submissions-Tabelle ist riesig
- Senken Sie
gdpr_retention_days(Standard 1095 / 3 Jahre) - Deaktivieren Sie
store_submissions, wenn Sie nur E-Mail-Zustellung benötigen, keinen Datenbank-Audit-Trail - Setzen Sie
gdpr_auto_delete_after_response = true, um bei "bearbeitet" zu löschen
FAQ
Ist OW Forms kostenlos? Ja. GPL-2.0-or-later. Es gibt keine Pro-Version, keinen Lizenzschlüssel, kein hinter einer Zahlung gesperrtes Feature.
Funktioniert es auf WordPress Multisite? Ja — jede Site hat eigene Tabellen und eigene Formular-Bibliothek, wie erwartet isoliert.
Werden Multi-Step-Formulare unterstützt? Grundlegende Vor/Zurück-Navigation funktioniert über Feldgruppierung im Schema. Eine erstklassige Wizard-UX steht auf der v1.1-Roadmap.
Wie exportiere ich Übermittlungen? OW Forms → Übermittlungen → CSV exportieren. Der Export respektiert die aktuellen Filter (Formular, Datumsbereich, Status).
Kann ich meine Formulare hinter einer Paywall oder einem Login hosten?
Ja — wickeln Sie den Shortcode in die Gating-Logik eines Membership-Plugins ein oder
rendern Sie via PHP innerhalb einer is_user_logged_in()-Prüfung.
Integriert es sich mit E-Mail-Marketing- / CRM-Tools?
Out of the box: Webhooks (HMAC-signierter POST an beliebigen Endpunkt) und E-Mail-Empfänger
pro Formular. Für Brevo / Mailchimp / HubSpot / Pipedrive hängen Sie sich an
owf_submission_received und rufen Sie die REST-API des Anbieters auf — siehe den
Hooks-Abschnitt.
Ist das Plugin DSGVO-zertifiziert? Die Standardwerte des Plugins sind an CNIL- / DSGVO-Best-Practices ausgerichtet, aber eine Zertifizierung ist ein juristischer Prozess, spezifisch für Ihre Verantwortlichen- Konfiguration. Wir liefern das technische Werkzeug; Ihr DSB bestätigt die Policy.
Wo ist der Support?
- Support-Portal: https://optionweb.dev/de/addons/support/
- E-Mail: support@optionweb.dev
- Dokumentation: https://optionweb.dev/de/addons/ow-forms/
Entwickelt von OptionWeb — Julien Daniel, Châtelet, Belgien.