Formular-Builder für PrestaShop 8 und 9: Dokumentation
Modul installieren, Formular bauen, Logik, Schritte, E-Mails und Webhook einrichten, dann Einsendungen verwalten und exportieren.
DataFirefly Form Builder ergänzt PrestaShop 8 und 9 um einen Formular-Builder per Drag & Drop. Jedes Formular erscheint an Theme-Positionen, auf einer CMS-Seite, in einem Popup oder auf einer eigenen Seite. Einsendungen werden im Backoffice gespeichert, per E-Mail versendet und lassen sich als CSV exportieren.
Installation
- Klicken Sie unter Module > Modulmanager auf Modul hochladen und ziehen Sie die Datei
dfformbuilder.ziphinein. - Unter Kundenservice erscheinen zwei Menüs: Formulare und Formulareinsendungen.
- Die Schaltfläche Konfigurieren des Moduls öffnet die allgemeinen Einstellungen (siehe unten) und zeigt die Zahl der Formulare und ungelesenen Einsendungen.
Voraussetzungen: PrestaShop 8.0.0 bis 9.x, PHP 7.2 oder höher. Von Besuchern gesendete Dateien liegen in /upload/dfformbuilder/, das beschreibbar sein muss. Das Modul nutzt keinen Override.
Update: Installieren Sie die neue ZIP-Datei über die alte. Formulare und Einsendungen bleiben erhalten, die Update-Skripte legen neue Tabellen an.
Ein Formular erstellen
Klicken Sie unter Kundenservice > Formulare auf Neues Formular und wählen Sie eine Vorlage:
- Kontaktformular: Name, E-Mail, Betreff und Nachricht. Das Feld Bestellnummer erscheint nur, wenn der Betreff eine Bestellung betrifft.
- Angebotsanfrage: Privatperson oder Unternehmen (Firma und USt-IdNr. erscheinen nur bei Unternehmen), Menge, Budget, Frist, Anhänge. Auf einer Produktseite wird der Produktname automatisch eingetragen.
- Bewerbung: drei Schritte (Kontaktdaten, Stelle, Unterlagen), Lebenslauf als Pflichtfeld und Anhang der E-Mail.
- Leeres Formular.
Die Formularliste bietet außerdem Duplizieren, Exportieren (JSON-Datei) und in der Werkzeugleiste Importieren. Ein importiertes Formular wird deaktiviert und ohne Anzeigeposition angelegt.
Der Builder
Die obere Leiste enthält den internen Namen des Formulars, das Kästchen Aktiviert, die Bearbeitungssprache, die Schaltflächen Rückgängig und Wiederholen, Vorschau und Speichern. Darunter liegen vier Reiter: Felder, Einstellungen, E-Mails, Anzeige und Integration.
Reiter Felder
- Linke Spalte: die Feldtypen. Ein Klick fügt das Feld unter dem gewählten ein, per Ziehen legen Sie es an beliebiger Stelle ab.
- Mitte: das Formular so, wie es angezeigt wird, mit den echten Breiten. Felder werden per Drag & Drop oder mit den Pfeilen auf jeder Karte verschoben, dupliziert oder gelöscht.
- Rechte Spalte: die Einstellungen des gewählten Felds.
Tastenkürzel: Enter wählt ein Feld, Alt + Pfeiltasten verschiebt es, Entf löscht es, Strg+Z macht rückgängig, Strg+Y wiederholt, Strg+S speichert. Der Browser warnt, wenn Sie die Seite mit ungespeicherten Änderungen verlassen.
Sprachen
Alle Texte (Beschriftungen, Hilfetexte, Optionen, Meldungen, E-Mails, URL) werden in der oben gewählten Sprache eingegeben. Ein leerer Text übernimmt den der Standardsprache des Shops, der grau im Feld angezeigt wird. Gehen Sie vor der Veröffentlichung jede Sprache durch.
Feldschlüssel
Jedes Eingabefeld hat einen technischen Schlüssel, der aus der Beschriftung erzeugt wird (zum Beispiel email, order_reference). Er ist der Spaltenname im CSV-Export und ein Platzhalter in E-Mails: {email}. Er muss im Formular eindeutig sein.
Feldtypen
- Text, E-Mail, Telefon, Website: Platzhalter, maximale Länge, Vorbelegung. Eine ohne
https://eingegebene Webadresse wird automatisch ergänzt. - Zahl: Minimum, Maximum und Schrittweite.
- Langer Text: Höhe in Zeilen, maximale Länge mit Zeichenzähler für den Besucher.
- Datum: frühestes und spätestes Datum im Format JJJJ-MM-TT oder mit dem Wort
today. - Auswahlliste, Optionsfelder, Kontrollkästchen: Optionen mit Beschriftung pro Sprache und Wert. Der Wert wird gespeichert und von der Logik genutzt; leer übernimmt er die Beschriftung. Der Link Mehrere Optionen auf einmal hinzufügen nimmt eine Option pro Zeile an, bei Bedarf im Format
Beschriftung|Wert. - Einwilligung: ein Kontrollkästchen mit einem Text, der Links erlaubt (Datenschutzerklärung).
- Sternebewertung: 3 bis 10 Sterne, gespeichert als 4/5.
- Datei-Upload: erlaubte Endungen, Höchstgröße pro Datei (begrenzt durch die globale Einstellung), mehrere Dateien bis 10.
- Verstecktes Feld: fester oder vorbelegter Wert, für den Besucher unsichtbar.
- Überschrift, Textblock, Trennlinie: nur Gestaltung, nichts wird gespeichert.
- Neuer Schritt: teilt das Formular in Schritte (siehe unten).
Jedes Feld hat eine Breite: voll, zwei Drittel, halb oder ein Drittel. Schmalere Felder stehen auf großen Bildschirmen nebeneinander und auf Mobilgeräten untereinander.
Vorbelegung
Text-, E-Mail-, Telefon- und versteckte Felder können mit E-Mail, Vorname, Nachname, vollständigem Namen oder Firma des angemeldeten Kunden, Produktname oder Artikelnummer (auf einer Produktseite), der Seiten-URL oder einem URL-Parameter gefüllt werden. Beispiel: Ein verstecktes Feld mit dem Parameter utm_source und ein Link zu /kontakt?utm_source=newsletter speichern newsletter mit der Einsendung.
Antwortadresse
Aktivieren Sie bei einem E-Mail-Feld Als Antwortadresse verwenden: Eine Antwort auf die Benachrichtigungs-E-Mail geht dann direkt an den Besucher.
Bedingte Logik
Aktivieren Sie im Bereich eines Felds Dieses Feld je nach anderen Antworten ein- oder ausblenden und wählen Sie:
- Dieses Feld anzeigen oder ausblenden;
- wenn alle oder mindestens eine der Bedingungen erfüllt sind;
- jede Bedingung: ein Feld, ein Operator (ist, ist nicht, enthält, enthält nicht, ist leer, ist ausgefüllt, ist größer als, ist kleiner als) und ein Wert.
Bei Auswahlliste, Optionsfeldern oder Kontrollkästchen wird der Wert aus den Optionen gewählt. Ein ausgeblendetes Feld wird weder geprüft noch gespeichert noch versendet. Dieselbe Logik wird beim Absenden auf dem Server erneut berechnet.
Mehrstufige Formulare
Fügen Sie ein Element Neuer Schritt (Gruppe Layout) dort ein, wo ein Schritt beginnen soll, und geben Sie ihm einen Titel. Felder vor der ersten Markierung bilden den ersten Schritt. Für den Besucher gilt:
- ein Fortschrittsbalken und die Schritttitel werden angezeigt (abschaltbar unter Einstellungen > Mehrstufiges Formular);
- die Schaltflächen Weiter und Zurück haben einen Text pro Sprache;
- jeder Schritt wird vor dem Weitergehen geprüft;
- ein Schritt, dessen Felder alle durch die Logik ausgeblendet sind, wird übersprungen.
Reiter Einstellungen
- Titel und Einleitung: Titel für die Besucher und Einleitungstext.
- Versand: Text der Senden-Schaltfläche, Bestätigungsmeldung oder Weiterleitung auf eine URL nach dem Absenden.
- Zugriff: Formular nur für angemeldete Kunden (die anderen sehen einen Link zur Anmeldung), CSS-Klasse.
- Verfügbarkeit und Grenzen: Öffnungs- und Schlussdatum (Zeitzone des Shops), maximale Anzahl an Einsendungen, eine Einsendung pro Person (geprüft über Kundenkonto und eingegebene E-Mail), Schließungsmeldung.
- Entwurf: speichert die Antworten 30 Tage im Browser des Besuchers bis zum Absenden. Vor dem Absenden wird nichts an den Shop übertragen, Dateien werden nicht gespeichert.
Reiter E-Mails
Benachrichtigung an den Shop
Wird in der Standardsprache des Shops versendet. Empfänger durch Kommas getrennt; ist das Feld leer, gelten die Standardempfänger der Modulkonfiguration, danach die Shop-E-Mail. Der Betreff akzeptiert die Platzhalter {form_name} und {feldschluessel}, die Sie per Klick kopieren. Die Option Hochgeladene Dateien anhängen fügt Dateien bis insgesamt 15 MB bei.
Bedingte Empfänger
Jede Regel verbindet eine Bedingung mit Adressen: zum Beispiel, wenn Betreff Angebot ist, an vertrieb@ihr-shop.de senden. Die Einstellung Wenn eine Bedingung zutrifft fügt diese Adressen den Empfängern hinzu oder ersetzt sie.
Bestätigung an den Besucher
Erfordert ein E-Mail-Feld im Formular. Die E-Mail geht in der vom Besucher genutzten Sprache raus, mit Betreff und Nachricht Ihrer Wahl (Platzhalter erlaubt) und optional einer Zusammenfassung der Antworten.
Webhook
Tragen Sie eine URL ein (Zapier, Make, n8n, CRM), um jede Einsendung als JSON per POST-Anfrage zu erhalten. Beispielinhalt:
{
"event": "submission.created",
"form": { "id": 3, "name": "Kontakt" },
"submission": { "id": 128, "date": "2026-09-30T10:12:00+02:00", "language": "de",
"shop_id": 1, "customer_id": 0, "product_id": 0, "page_url": "https://..." },
"fields": {
"email": { "label": "E-Mail", "type": "email", "value": "max@beispiel.de", "display": "max@beispiel.de" }
}
}
Mit einem Signatur-Secret enthält der Header X-DFFB-Signature den Wert sha256= gefolgt vom HMAC-SHA256 des Inhalts. Prüfung in PHP:
$body = file_get_contents('php://input');
$expected = 'sha256=' . hash_hmac('sha256', $body, 'IHR_SECRET');
$valid = hash_equals($expected, $_SERVER['HTTP_X_DFFB_SIGNATURE'] ?? '');
Der Aufruf wartet höchstens 5 Sekunden. Das Ergebnis (zugestellt, abgelehnt mit HTTP-Code, keine Antwort) steht auf der Seite jeder Einsendung.
Reiter Anzeige und Integration
Anzeigemodus
Direkt auf der Seite oder hinter einer Schaltfläche im Popup, mit dem Schaltflächentext pro Sprache. Dieser Modus gilt für die Positionen, den Shortcode und das Widget.
Automatische Positionen
Haken Sie die Theme-Positionen an: Startseite (displayHome), Kontaktseite (displayContactContent, displayContactRightColumn), Produktseite (displayProductAdditionalInfo, displayFooterProduct), Vertrauensblock (displayReassurance), Warenkorb (displayShoppingCartFooter), CMS-Seiten (displayCMSDisputeInformation), Spalten (displayLeftColumn, displayRightColumn), über dem Footer (displayFooterBefore), Ende des Inhalts (displayWrapperBottom). Eine Position zeigt nichts an, wenn das Theme sie nicht aufruft.
Eigene Seite
Jedes Formular kann eine eigene Seite haben, zum Beispiel /forms/3-angebotsanfrage, mit sprechender URL pro Sprache. Der Link Vorschau funktioniert auch bei deaktiviertem Formular; Einsendungen werden dort abgelehnt, bis es aktiviert ist.
Integrationscodes
- Shortcode für CMS-Seiten:
[dfform id=3] - Smarty-Widget in einem Template:
{widget name='dfformbuilder' id_form=3} - Eigener Hook:
{hook h='displayDfForm' id_form=3}
Statistik
Über 30 Tage: Aufrufe (Formular angezeigt oder Popup geöffnet), begonnene Formulare (Klick in ein Feld), Einsendungen, Konversions- und Abbruchrate. Besucher ohne JavaScript und die meisten Bots werden nicht gezählt. Aufrufe und Konversionsrate stehen auch in der Formularliste.
Einsendungen verwalten
Kundenservice > Formulareinsendungen listet die Einsendungen mit Formular, Zusammenfassung, Status und Datum, alle filterbar. Sammelaktionen: als gelesen oder bearbeitet markieren, archivieren, als CSV exportieren, löschen (die Dateien werden ebenfalls gelöscht).
Beim Öffnen wird eine Einsendung auf Gelesen gesetzt. Sie zeigt:
- alle Antworten und die Dateien zum Herunterladen;
- den Status und eine interne Notiz;
- den Kunden (falls angemeldet), das Produkt, die Seite, von der gesendet wurde, die Sprache, die IP-Adresse, das Ergebnis von E-Mail und Webhook;
- die Schaltflächen Drucken, Per E-Mail antworten, vorherige und nächste Einsendung.
Dem Besucher antworten
Der Bereich Dem Besucher antworten sendet Ihre Nachricht an die Adresse des E-Mail-Felds (vorrangig des als Antwortadresse markierten), in der Sprache des Besuchers und im E-Mail-Layout des Shops. Die Antwort bleibt im Verlauf, und die Einsendung kann gleichzeitig auf Bearbeitet gesetzt werden.
CSV-Export
Der Bereich unter der Liste exportiert nach Formular, Status und Zeitraum. Mit gewähltem Formular erhalten Sie eine Spalte pro Feld. Die Datei ist UTF-8 mit Semikolon als Trennzeichen und öffnet sich direkt in Excel, LibreOffice und Google Sheets.
Allgemeine Moduleinstellungen
- Standardempfänger: gelten, wenn ein Formular keine eigenen Empfänger hat.
- Maximale Dateigröße (standardmäßig 10 MB): globale Grenze pro Datei. Sie kann
upload_max_filesizeundpost_max_sizevon PHP nicht überschreiten. - Einsendungen aufbewahren für (Tage): danach werden Einsendungen und ihre Dateien automatisch gelöscht. 0 bewahrt sie unbegrenzt auf.
- IP-Adresse speichern: deaktiviert wird nur ein Hash für das Einsendungslimit behalten.
- Mindestausfüllzeit (3 Sekunden) und Einsendungen pro Stunde und Besucher (10): Schutz vor Bots.
- reCAPTCHA v3: Website-Schlüssel, geheimer Schlüssel und Mindestpunktzahl (0,5 empfohlen). Das Google-Skript lädt erst, wenn der Besucher mit dem Ausfüllen beginnt.
Sicherheit und DSGVO
- Jedes Formular enthält ein unsichtbares Fallenfeld und eine Signatur mit Zeitstempel; zu schnelle oder zu häufige Einsendungen werden abgelehnt.
- Skripte, HTML-Seiten und ausführbare Dateien werden immer abgelehnt, der Dateiinhalt wird geprüft. Dateien werden in einem geschützten Ordner zufällig umbenannt und lassen sich nur im Backoffice herunterladen.
- Mit dem offiziellen Modul psgdpr sind die Einsendungen eines Kunden (Konto oder eingegebene E-Mail) im Export seiner Daten enthalten und werden mit seinem Konto gelöscht.
Übersetzungen
Die Moduloberfläche ist auf Französisch und Englisch verfügbar; andere Backoffice-Sprachen zeigen sie auf Englisch. Die E-Mail-Vorlagen des Moduls gibt es auf Englisch, Französisch, Deutsch, Spanisch, Italienisch, Niederländisch, Polnisch und Portugiesisch. Die Texte der Formulare selbst geben Sie in allen Shopsprachen ein.
Fehlerbehebung
Das Formular erscheint nicht
Prüfen Sie, ob das Formular aktiviert ist, ob Ihr Theme die gewählte Position aufruft und ob der Öffnungszeitraum es nicht schließt. Testen Sie im Zweifel den Shortcode auf einer CMS-Seite oder die eigene Seite.
E-Mails kommen nicht an
Die Einsendung zeigt, ob die Benachrichtigung versendet wurde. Prüfen Sie Erweiterte Einstellungen > E-Mail und senden Sie aus PrestaShop eine Test-E-Mail.
Eine Datei wird abgelehnt
Prüfen Sie die erlaubten Endungen des Felds, die Höchstgröße des Felds und des Moduls sowie die PHP-Grenzen upload_max_filesize und post_max_size.
Der Spamschutz blockiert das Formular
Eine seit mehreren Wochen offene Seite hat eine abgelaufene Signatur: Der Besucher muss die Seite neu laden. Wenn Sie reCAPTCHA nutzen, prüfen Sie, ob die Domain in der Google-Konsole eingetragen ist, und senken Sie die Mindestpunktzahl, falls echte Kunden blockiert werden.