← Zurück zur Produktseite

Handbuch

Preisrechner-Funnel für WordPress · Version 2.1.1 · Stand: 26. August 2026

1. Überblick

Ein Besucher öffnet eine Seite mit dem Shortcode [energo_rechner], klickt sich durch die Schritte und sieht laufend seinen Preis. Am Ende gibt er seine Kontaktdaten ein und sendet ab. Dann passiert Folgendes:

  1. Spamprüfung — Honeypot, Mindest-Ausfüllzeit, Rate-Limit
  2. Der Server rechnet den Preis neu — der Browserwert ist nur Anzeige
  3. E-Mail an Sie, mit der kompletten Konfiguration
  4. Projekt in HERO anlegen
  5. Scheitert HERO, kommt die Anfrage trotzdem per E-Mail an, plus Warnmail

Grundsätze

Kein Build-SchrittReines PHP, Vanilla-JavaScript, CSS. Kein npm, kein React. Dateien hochladen, fertig.
Kein Lead geht verlorenDie E-Mail geht immer zuerst raus. Jeder HERO-Weg hat eine Rückfallebene.
Der Server bestimmt den PreisBei frei konfigurierbaren Funnels darf der Browser den Preis nicht diktieren.
Nichts lädt von fremden ServernKeine Schriften, keine Skripte, kein CDN.
RückwärtskompatibelDer Shortcode ohne Argumente zeigt immer den mitgelieferten Funnel wie am ersten Tag.

Technischer Aufbau

Browser                          WordPress                      HERO
───────                          ─────────                      ────
Funnel-Engine (JS)         ←──   Funnel-Definition (JSON)
  rendert den Funnel
  rechnet den Preis              Preisberechnung (PHP)
  POST /wp-json/             ──→   rechnet nach             ──→  GraphQL
       energo/v1/lead              E-Mail raus                   oder Lead-API

Die Preisberechnung existiert zweimal: einmal im Browser für die Anzeige und einmal in PHP als maßgebliche Fassung. Beide müssen dasselbe Ergebnis liefern; die Reihenfolge der Rechenschritte ist vertraglich festgelegt.

2. Installation

Per FTP

Den Plugin-Ordner mit allen Dateien hochladen nach wp-content/plugins/. Rechte: Ordner 755, Dateien 644. Kein zweiter Ordner innerhalb des ersten — das ist der häufigste Installationsfehler.

Über das Backend

Plugins → Installieren → Plugin hochladen → ZIP wählen → Aktivieren.

Aktualisieren

Alle Dateien ersetzen. Einstellungen, gespeicherte Funnels und Designs bleiben erhalten. Vorher eine Sicherung anlegen, besonders bei einem Sprung über eine Hauptversion.

Prüfen, ob es läuft

Nach dem Aktivieren erscheint im Backend ein gelber Hinweis, dass kein HERO-Token hinterlegt ist. Dieser Hinweis ist an dieser Stelle das gewünschte Ergebnis — er beweist, dass der Code ausgeführt wird. Er verschwindet, sobald ein Token eingetragen ist.

Voraussetzungen

WordPress6.0 oder neuer
PHP8.0 oder neuer
REST-APIerreichbar (Standard)
E-Mailfunktionierender Mailversand
HEROKonto mit API-Token — optional
Page-BuilderOxygen, Elementor, Block-Editor, Classic

3. Konfiguration

Backend-Menü

Preisrechner
├── Funnel          Übersicht, anlegen, duplizieren, löschen, bearbeiten
└── Lizenz          Lizenzschlüssel und Stufe

Einstellungen
└── Preisrechner    HERO-Anbindung, Preise, Benachrichtigung

Konstanten in der wp-config.php

Konstanten haben immer Vorrang vor den Backend-Einstellungen. Ist eine gesetzt, wird das zugehörige Feld im Backend gesperrt und zeigt an, woher der Wert stammt.

define('ENERGO_HERO_TOKEN',   'ihr-hero-api-token');
define('ENERGO_HERO_MEASURE', 'KLI');
define('ENERGO_HERO_STATUS',  201);
define('ENERGO_LEAD_MAIL_TO', 'info@ihre-domain.de');
Weitere KonstanteBedeutung
ENERGO_HERO_TOKEN_FILEPfad zu einer Datei außerhalb des Webroots, die nur den Token enthält
ENERGO_TRUSTED_PROXYNur setzen, wenn wirklich ein Proxy davorsteht — siehe Rate-Limiting
DISALLOW_FILE_EDITWordPress-eigene Konstante, schaltet den Plugin-Editor ab

Der API-Token: wo er hingehört

Der Token wird zur Laufzeit in dieser Reihenfolge gesucht, der erste Treffer gewinnt:

#QuelleBewertung
1UmgebungsvariableAm sichersten. Steht in keiner Projektdatei, in keinem Backup
2Konstante in der wp-config.phpGut, aber die Datei liegt im Webroot und landet in Backups
3Datei außerhalb des WebrootsGut, wenn ein Ordner oberhalb des Webroots verfügbar ist
4Backend-EinstellungBequem, aber der Token liegt in der Datenbank

Umgebungsvariable setzen — PHP-FPM (pool.d/www.conf):

env[ENERGO_HERO_TOKEN] = ihr-hero-api-token

Apache (vHost):

SetEnv ENERGO_HERO_TOKEN "ihr-hero-api-token"

Bei Plesk und cPanel gibt es dafür ein Feld „Umgebungsvariablen“ in den PHP-Einstellungen der Domain.

Was nie passieren darf

Der eigentliche Schutz ist strukturell: der Browser sieht den Token nie. Er ruft nur den Lead-Endpunkt auf der eigenen Domain auf; erst der Server spricht mit HERO.

4. Der Funnel-Editor

Einbinden

[energo_rechner]                      erster aktiver Funnel
[energo_rechner funnel="waerme"]      bestimmter Funnel
[energo_rechner privacy="https://…"]  abweichender Datenschutz-Link
[energo_rechner email="info@…"]       abweichende Kontaktadresse

In Oxygen Builder: ein Shortcode-Element einfügen und den Shortcode eintragen. Überschrift und Einleitungstext baut man wie gewohnt darum herum — dieser Text zählt dann auch für Suchmaschinen.

Aufbau des Editors

Zweispaltig: links der Aufbau, rechts eine mitlaufende Live-Vorschau.

Funnel
└── Schritt (bis zu 12)            per Ziehen sortierbar
    └── Feld (bis zu 12)           ein Feldtyp je Feld
        └── Option (bis zu 12)     nur bei Auswahl-Feldtypen

Feldtypen

BezeichnungWofür
AuswahlkartenGroße Kacheln, etwa für die Paketauswahl
SegmenteDrei nebeneinanderliegende Kurzoptionen
Liste mit PreisangabeUntereinander, mit Betrag rechts
Ja/Nein-SchalterEine Zusatzleistung an oder aus
ZahleneingabeEine Zahl mit Einheit
SchiebereglerZahl zwischen Minimum und Maximum
ZahlengruppeMehrere Zahlenfelder, Anzahl folgt einer Variablen

Variablen und Platzhalter

Optionen können Variablen setzen, andere Felder lesen sie. So folgt die Zahl der Raumfelder dem gewählten Paket:

Option "Multi-Split Duo"  →  vars: { rooms: 2, included_line: 25, range_max: 45 }
Feld  "Raumgrößen"        →  count: "{{rooms}}"
Feld  "Leitungsweg"       →  min: "{{included_line}}", max: "{{range_max|45}}"
SchreibweiseBedeutung
{{name}}Wert der Variablen
{{name|ersatz}}Wert, sonst der Ersatzwert
{price:name}Wert als Währung formatiert
{qty} {value}In Preis-Beschriftungen: Menge bzw. Betrag

Rücksetzregel: Ändert sich eine Variable, die ein Feld für Minimum, Maximum, Schrittweite oder Anzahl benutzt, fällt dieses Feld auf seinen Vorgabewert zurück. Genau so verhält sich der Rechner beim Paketwechsel.

Grenzen

Funnels20
Schritte je Funnel12
Felder je Schritt12
Optionen je Feld12
Zahlenfelder je Gruppe12
Zeilen in der Leistungsliste40

5. Preislogik

Preiswirkungen

Jede Option und jedes preisrelevante Feld hat genau eine Wirkung:

BezeichnungRechnung
kein Preiseinfluss
Grundpreissetzt den Grundpreis
fester Zuschlag+ Betrag
Betrag je Einheit über X(Wert − X) × Betrag, nie negativ
ProzentGrundpreis × Prozent / 100
nur Hinweis„Preis nach Prüfung“ — kein Betrag, löst Prüfung aus

Reihenfolge der Berechnung

  1. Grundpreis aus allen wirksamen Grundpreis-Wirkungen
  2. Zuschläge in Reihenfolge der Schritte und Felder
  3. Prozent rechnet auf den Grundpreis, nicht auf die laufende Summe
  4. Gesamt = Grundpreis + Zuschläge, gerundet auf zwei Nachkommastellen

Prüfungs-Kennzeichen

Das Kennzeichen wird gesetzt, sobald eine dieser Bedingungen zutrifft:

Es steht dann in der Betreffzeile der E-Mail und im HERO-Logbuch.

Serverseitige Nachrechnung

Ab Version 2.0.0 schickt der Browser die Funnel-Kennung und den Zustand mit. Der Server rechnet mit derselben Definition nach und verwendet seinen Wert für E-Mail und HERO. Weicht der Browserwert um mehr als einen Cent ab, steht das auffällig in der Benachrichtigungs-E-Mail. Anfragen ohne Funnel-Kennung werden wie bisher behandelt — ältere eingebettete Seiten funktionieren also weiter.

6. Design-Bereich

Der Design-Abschnitt sitzt im Funnel-Editor und wirkt je Funnel. Mehrere Funnels mit unterschiedlichem Aussehen können auf derselben Seite stehen.

GruppeWerte
Vorlagenvier Startpunkte: kräftig, hell, dunkel, neutral
FarbenAkzent, Akzent dunkel, Akzent hell, Text, Grauton, Linien, Flächen, Papier
Schriftvier systemeigene Stapel plus eigener Stapel, Größenskala 85–130 %, Überschriftenstärke
FormenEckenrundung, Kartenrundung, Knopfrundung, Schattierung
Layoutmaximale Breite 480–1180 px, Dichte normal / kompakt / luftig

Wie es technisch funktioniert

Das Frontend-Stylesheet arbeitet mit CSS-Variablen. Der Design-Bereich überschreibt sie am Wurzelelement des Funnels, nicht global:

<div class="ekr" data-ekr-funnel="klima" style="--ekr-orange:#0b6b8a; …">

Nur Abweichungen werden ausgegeben. Ein Funnel ohne eigenen Design-Block erzeugt ein leeres style-Attribut. Die Rückwärtskompatibilität ist damit keine Behauptung, sondern eine leere Zeichenkette.

Kontrastprüfung

Der Editor rechnet Farbpaare nach WCAG durch und warnt bei weniger als 4,5:1 — mit konkretem Text wie „Textfarbe auf Hintergrund: 3,1:1 — zu wenig, empfohlen sind 4,5:1“.

Bekannte Ausnahme: Die kräftige Vorlage erfüllt WCAG AA nicht vollständig — weiße Schrift auf der Akzentfarbe liegt bei 2,7:1. Das ist gewachsener Bestand; ihn zu korrigieren hieße, das Aussehen zu ändern. Die anderen drei Vorlagen erfüllen AA auf jedem Textpaar, mit einem niedrigsten Wert von 5,7:1.

Schriften

Auswählbar sind vier systemeigene Stapel plus ein eigener Stapel für Schriften, die Ihr Theme ohnehin lädt. Keine externen Schriftquellen — Begründung siehe Datenschutz. Ein eigener Stapel wird verworfen, sobald er url(, @import, //, spitze Klammern, Semikolon oder geschweifte Klammern enthält. Das schützt zugleich davor, dass jemand über das Textfeld aus der CSS-Deklaration ausbricht.

7. HERO-Anbindung

Zwei Schnittstellen, unterschiedliche Fähigkeiten

Lead-APIGraphQL
Gewerkja, als Kürzelja, als numerische ID
Projekttypgibt es nichtja
Projektschrittjaja
Kunde anlegenautomatisch über E-Mailmuss separat passieren

Die Lead-API kennt kein Projekttyp-Feld — über sie angelegte Projekte landen immer im Standard-Projekttyp des Kontos. Nur GraphQL kann den Typ bestimmen.

Wie das Plugin entscheidet

Projekttyp-ID gesetzt?
├── nein  →  Lead-API
└── ja    →  GraphQL
             ├── Erfolg      →  fertig
             └── Fehlschlag  →  Lead-API als Rückfallebene
                                + Hinweis-Mail mit der Fehlermeldung

Der Lead geht in keinem Fall verloren. Er liegt dann nur im Standard-Projekttyp statt im gewünschten.

GraphQL-Ablauf

  1. Kontakt per E-Mail suchen
  2. Falls nicht vorhanden, anlegen
  3. Projekt anlegen mit Projekttyp, Schritt, Gewerk, Adresse und der Konfiguration als Notiz

Selbstkonfigurierend: HERO dokumentiert weder die Eingabefelder für das Anlegen eines Kontakts noch die Filterargumente der Kontaktsuche. Das Plugin liest sie zur Laufzeit aus dem Schema Ihres Kontos und sendet nur Felder, die es wirklich gibt. Die Erkenntnisse werden einen Tag zwischengespeichert.

Einrichten

  1. Einstellungen → Preisrechner öffnen
  2. „Projekttypen und Gewerke laden“ — reine Leseabfrage, legt nichts an
  3. Projekttyp und Gewerk aus den Auswahllisten wählen, speichern
  4. „Testprojekt in HERO anlegen“ — legt ein echtes Testprojekt an
  5. Testprojekt in HERO wieder löschen

Projektstatus

CodeBasis-StatusFür die Lead-API
201Neu – Erstkontaktdokumentiert
400Vor-Ort-Termindokumentiert
501Planungnur kontospezifisch
601Angebotserstellungdokumentiert
602Angebot versendetnur kontospezifisch
701Detailgesprächnur kontospezifisch
801Auftragsvergabedokumentiert
1101Umsetzungsbeginnnur kontospezifisch
1111In Umsetzungdokumentiert
1150Kundenrechnungnur kontospezifisch
2000Abgeschlossennur kontospezifisch
2100Archiviertnur kontospezifisch

Die HERO-Dokumentation führt nur fünf Status als für die Lead-API zulässig. Die übrigen existieren im Konto, sind für die Schnittstelle aber nicht zugesichert — vor dem Einsatz einmal testen.

Verhalten, das man kennen sollte

Feldzuordnung

FormularHERO
NameVor- und Nachname, am letzten Leerzeichen getrennt
E-MailKunden-E-Mail — Pflichtfeld, zugleich Dublettenerkennung
TelefonMobil bei 015/016/017, sonst Festnetz; normalisiert auf +49…
Straße und HausnummerStraßenfeld (Hausnummer darf enthalten sein)
PLZeigenes Feld — Pflichtfeld
Orteigenes Feld
gesamte KonfigurationLogbucheintrag bzw. Partner-Notiz
HerkunftQuelle, Unterquelle, Medium und eigene Lead-ID

PLZ und Ort sind bewusst getrennte Felder: HERO braucht die PLZ als eigenes Pflichtfeld. Straße und Hausnummer bleiben dagegen zusammen — ein Zerlegen wäre fehleranfällig ohne jeden Nutzen.

8. Sicherheit und Missbrauchsschutz

Der Lead-Endpunkt muss öffentlich erreichbar sein, sonst könnte das Formular ihn nicht aufrufen. Deshalb ist er mehrfach abgesichert:

SchutzWirkung
Limit je IP5 Anfragen in 10 Minuten
Limit je E-Mail3 in 1 Stunde — stoppt Wiederholungen über wechselnde IPs
Globaler Not-Aus60 pro Stunde insgesamt, danach Abweisung plus Warn-Mail
HoneypotVerstecktes Feld; ausgefüllt = Bot, Antwort trotzdem „erfolgreich“
Mindest-AusfüllzeitUnter 3 Sekunden = kein Mensch
PflichtfeldprüfungOhne gültige E-Mail und PLZ kein HERO-Aufruf

Rate-Limiting

Das Rate-Limit läuft vor dem Honeypot. Sonst könnte ein Bot beliebig oft anklopfen, ohne Budget zu verbrauchen.

Proxy-Header werden nur ausgewertet, wenn die Proxy-Konstante gesetzt ist. Header wie X-Forwarded-For kann jeder in seiner eigenen Anfrage frei setzen. Ohne echten Proxy aktiviert, wäre das IP-Limit wirkungslos — jede Anfrage sähe aus wie eine neue IP. Umgekehrt gilt: Kommt später ein Proxy oder Cloudflare davor, muss die Konstante gesetzt werden, sonst sehen alle Besucher wie eine einzige IP aus und werden gemeinsam ausgesperrt.

Festes statt rollierendes Zeitfenster. Wer gebremst wurde, kommt nach Ablauf garantiert wieder rein; weitere Versuche verlängern die Sperre nicht. Sonst sperrt sich ein hektisch klickender Kunde selbst dauerhaft aus. Abgewiesene Anfragen bekommen einen Retry-After-Header.

Editor und REST

Alle Funnel-Routen prüfen die Administratorrechte und den REST-Nonce. Ein nicht angemeldeter Besucher kann Funnels weder lesen noch ändern. Gespeicherte Texte werden beim Ausgeben maskiert, Design-Farbwerte vor der Ausgabe validiert. Ungültige Werte werden verworfen, nicht ersetzt — ein stillschweigend eingesetztes Schwarz wäre schlimmer, weil es niemand bemerkt.

Ein WordPress-Nonce für das öffentliche Formular wäre der naheliegende Gedanke, ist hier aber die falsche Wahl: Bei aktivem Seiten-Cache wird er mitgecacht und läuft nach zwölf Stunden ab — dann scheitern echte Anfragen. Als nächster Ausbaustufe vorgesehen ist stattdessen ein unsichtbarer Captcha-Ersatz ohne Cookie-Banner-Thema.

9. Datenschutz

Keine externen Schriften

Es werden keine Schriften von fremden Servern geladen. Kein Google Fonts, kein Adobe Fonts, kein CDN. Grund: Das LG München I hat am 20.01.2022 (Az. 3 O 17493/20) entschieden, dass das dynamische Einbinden von Google Fonts ohne Einwilligung gegen die DSGVO verstößt. Es folgte eine Abmahnwelle. Zulässig sind ausschließlich systemeigene Schriftstapel und selbst gehostete Schriftdateien.

Was das Plugin von außen lädt

Nichts. Alle Skripte, Styles und Schriften kommen vom eigenen Server. Die einzige ausgehende Verbindung geht an HERO — und nur serverseitig, wenn eine Anfrage abgesendet wurde.

Was gespeichert wird

InhaltLebensdauer
Funnel-Definitionen samt Designdauerhaft
Schema-Versiondauerhaft
Einstellungen, ggf. HERO-Tokendauerhaft
Lizenzschlüsseldauerhaft
Rate-Limit-Zähler, HERO-Schema, ProjekttypenMinuten bis eine Woche

Keine eigenen Datenbanktabellen. Kundendaten werden nicht im Plugin gespeichert — sie gehen per E-Mail raus und nach HERO.

Einwilligung im Formular

Das Kontaktformular enthält eine Pflicht-Checkbox mit Verweis auf Ihre Datenschutzerklärung. Da die Daten automatisch nach HERO fließen, sollte diese die Weitergabe an den Auftragsverarbeiter abdecken.

10. Technische Referenz

REST-Endpunkte

Alle unter dem Namensraum energo/v1.

MethodeRouteZugang
POST/leadöffentlich, rate-limitiert
GET/funnelsAdministrator
GET/funnels/<id>Administrator
POST/funnelsAdministrator
DELETE/funnels/<id>Administrator
POST/funnels/<id>/duplicateAdministrator
POST/funnels/previewAdministrator

Nutzlast des Lead-Endpunkts

{
  "funnelId": "klima",
  "state": { "package": "multi2", "line_length": 30, "pump": true },
  "name": "…", "email": "…", "phone": "…",
  "address": "…", "postalCode": "…", "city": "…", "note": "…",
  "website": "", "formStartedAt": 1787170930000,
  "totalValue": 8672.92,
  "pageUrl": "…", "utmSource": "…", "utmMedium": "…", "utmCampaign": "…"
}

website ist der Honeypot und muss leer sein. totalValue ist nur Anzeige — maßgeblich ist, was der Server aus funnelId und state errechnet.

JavaScript-Schnittstellen

window.EnergoFunnel = {
  render(mountElement, definition, options),   // {endpoint, privacyUrl, email, preview}
  calculate(definition, state),                // {base, surcharges[], total, needsReview}
  summaryLines(definition, state),
  boot()
}

window.EnergoDesign = {
  DEFAULTS, PRESETS,
  vars(design),          // nur die Abweichungen von der Vorgabe
  apply(element, design) // setzt und raeumt Inline-Variablen
}

calculate() funktioniert ohne DOM — dadurch lässt sich die Preislogik unabhängig von der Anzeige prüfen.

Ladereihenfolge

Die Plugin-Bausteine werden in fester Reihenfolge geladen: Vorgaben → Datenhaltung → Design → Mehrfunnel-Betrieb → REST → Editor → Design-Oberfläche → Lizenz. Jede Datei wird abgesichert geladen; fehlt ein Baustein, läuft der Lead-Endpunkt auf dem einfachen Weg weiter.

11. Fehlersuche

„Diese Plugindatei existiert nicht“

Meist ein doppelter Ordner — der Plugin-Ordner liegt noch einmal in sich selbst. Per FTP prüfen und den inneren Ordner eine Ebene hochziehen. Zweite Ursache: ein veralteter Aktivierungs-Link aus dem Browserverlauf. Die Plugin-Seite frisch über das Menü aufrufen, nicht die Fehlerseite neu laden — ein Reload schickt dieselbe fehlerhafte Anfrage erneut.

Der Rechner erscheint unformatiert

Das Stylesheet wird zu spät ausgeliefert. Ab Version 1.5.1 meldet das Plugin CSS und JavaScript bereits beim Seitenaufbau an, inklusive Erkennung für Oxygen, das Seiteninhalte in eigenen Meta-Feldern ablegt. Kommt es trotzdem vor: Cache leeren und einmal hart neu laden.

Gewerk steht auf „UNB“

Es fehlt die numerische Gewerk-ID. Das Kürzel allein nutzt nur die Lead-API; GraphQL braucht die Zahl. In den Einstellungen „Projekttypen und Gewerke laden“ und das Gewerk aus der Auswahlliste wählen — das setzt beides gleichzeitig.

Projekt landet im falschen Projekttyp

Die Anlage lief über die Lead-API, nicht über GraphQL. Entweder ist keine Projekttyp-ID gesetzt, oder GraphQL ist gescheitert. Im zweiten Fall liegt eine Hinweis-Mail mit der genauen Fehlermeldung im Postfach.

Kein HERO-Projekt, aber E-Mail kam an

Genau so ist es gedacht. Die Warn-Mail nennt den Grund. Häufig: falsche IDs, fehlende GraphQL-Rechte am Token, oder eine gesperrte E-Mail-Domain.

Design bleibt nach Vorlagenwechsel stehen

Behoben in 2.1.1 — die gesetzten Variablen werden beim Wechsel abgeräumt.

Preis in der E-Mail weicht vom Rechner ab

Genau dafür gibt es die Meldung. Der Server hat mit derselben Definition nachgerechnet und ein anderes Ergebnis bekommen. Beide Zahlen melden.

Diagnose-Werkzeuge im Backend

KnopfWirkung
Projekttypen und Gewerke ladenreine Leseabfrage, füllt die Auswahllisten
Testprojekt in HERO anlegenlegt ein echtes Projekt an, anschließend löschen
Schema auslesenzeigt Abfragen und Felder des HERO-Kontos, ohne Zugangsdaten

Nach jedem Update empfehlen wir: eine Testanfrage durchklicken und den Preis in der E-Mail mit dem im Rechner angezeigten vergleichen.

12. Versionen

VersionWas dazukam
1.0Vanilla-Neubau, Shortcode, Lead-Endpunkt, HERO Lead-API
1.1Token-Ablage in vier Stufen, dreistufiges Rate-Limit
1.2Lead-API nach der echten HERO-Dokumentation korrigiert
1.3Projektstatus geprüft, Gewerk mit Rückfallwert
1.4Shortcode statt manuellem Einbinden, Assets im Plugin
1.5Einstellungsseite, Preise im Backend, Verbindungstest
1.6GraphQL für den Projekttyp, Schema-Diagnose
1.7Projekttypen als Auswahlliste, selbstkonfigurierende Abfragen
1.8Gewerk als Auswahlliste, ID und Kürzel in einem Schritt
2.0Visueller Funnel-Editor, mehrere Funnels, serverseitiger Preis
2.1Design-Bereich mit Live-Vorschau

Noch Fragen offen?

Schreiben Sie uns, was Sie rechnen lassen wollen — wir sagen Ihnen ehrlich, ob der Funnel-Editor das abbildet.

E-Mail schreiben