Zum Hauptinhalt springen

Formular-Prefill: Kaskade, Werte fixieren & versteckte Felder

Vier Quellen, eine Kaskade — wie Defaults, Persistierung, URL-Parameter und Embed-Optionen Felder vorbefüllen, plus wie du Werte fixierst, die Besucher nicht überschreiben können

M
Verfasst von Maxim Tan

RocketLead-Formularfelder können aus vier verschiedenen Quellen vorbefüllt werden. Dieser Artikel erklärt die Reihenfolge zwischen ihnen, was jede Quelle kann und nicht kann, und wie du Werte fixierst, die Besucher nicht überschreiben können.

Die Kaskade

Beim Mounten durchläuft das Widget vier Prefill-Quellen. Jede Schicht kann leere Slots füllen; höher priorisierte Schichten überschreiben niedriger priorisierte. Endgültige Priorität — von oben nach unten:

#

Quelle

Schlägt

Gesetzt von

1

Embed-prefill-Option

URL-Parameter, Persistierung, Defaults

Der Seite, die das Embed enthält (Entwickler-JS)

2

URL-Query-Parameter

Persistierung, Defaults

Der URL des Besuchers / dem Inbound-Link

3

localStorage-Persistierung

Defaults

Dem Besucher (Wiederbesuch-Autofill)

4

Feld-defaultValue

(unten)

Dem Formular-Editor (Konfiguration)

Faustregel: der explizitere Kontext gewinnt. Code schlägt URL-Leiste schlägt lokales Storage schlägt statische Konfiguration. Ein Feld, für das keine Quelle einen Wert liefert, bleibt leer.

Quelle 1 — Embed-prefill (höchste Priorität)

Beim Aufruf von window.rocketlead.forms.create() aus dem JavaScript der Host-Seite gesetzt:

<div id="rl-form"></div> <script src="https://cdn.rocketlead.io/static/forms/widget.js" defer></script> <script>   window.rocketlead.forms.create({     target:     '#rl-form',     formId:     'shared-form-id',     prefill:    { location: 'studio-uuid-für-diese-seite' },     hideFields: ['location']   }); </script>

Schlüssel werden zuerst gegen fieldId gematcht, dann gegen den im Editor gesetzten stabilen Namen. Unbekannte Schlüssel werden stillschweigend verworfen.

Da das Embed-Prefill die höchste Priorität hat, ist dies der Weg, um einen Wert zu fixieren, den Besucher nicht überschreiben können — auch nicht über manipulierte URLs. Siehe Versteckte Felder unten.

Quelle 2 — URL-Query-Parameter

Die URL des Besuchers füllt passende Felder automatisch vor. Zwei Schlüsselformen:

https://deine-seite.de/kontakt?fieldId=wert
https://deine-seite.de/kontakt?deinFeldname=wert

Bei Kollision zwischen fieldId und einem fremden Feldnamen gewinnt fieldId.

Mehrwertige Felder (Checkbox): Schlüssel mehrfach angeben.

?days=mon&days=wed

Booking-Calendar-Felder sind ein Sonderfall — ein URL-Wert wird als Termintyp-ID zur Vorauswahl im Kalender interpretiert, nicht als Slot. Slots werden immer interaktiv gegen die Live-Verfügbarkeit gewählt.

Privacy- und Captcha-Felder können nie über URL-Parameter vorbefüllt werden — Einwilligung muss explizit erfolgen, Captcha-Tokens kommen vom Anbieter beim Absenden.

Quelle 3 — localStorage-Persistierung

Wenn im Editor Persistierung aktiviert ist, werden die als Geteilte Felder markierten Werte beim Mounten aus localStorage gelesen und bei jeder Änderung dorthin geschrieben. Das ist der "Wiederbesuch-Autofill" — Umfragen, mehrstufige Funnels, abgebrochene-und-wiederkehrende Flows.

Der Persistierungs-Bucket ist nach Formular-ID gekeyed: zwei Einbettungen desselben Formulars auf derselben Domain teilen ihren Bucket.

Quelle 4 — Feld-defaultValue (niedrigste Priorität)

Ein statischer Fallback, im Formular-Editor gesetzt. Füllt nur Slots, die keine andere Quelle gefüllt hat.

Feldtyp

defaultValue-Shape

Validierung

text / email / tel

string

respektiert maxLength; zur Laufzeit still gekürzt, beim Veröffentlichen abgelehnt

select / location

string

muss einem der Optionswerte entsprechen

checkbox

string[] (nicht leer)

jeder Eintrag muss einer Option entsprechen

booking-calendar

nicht unterstützt

appointment-type

noch nicht unterstützt (per-Kalender-Default geplant)

captcha / privacy

nicht unterstützt

Defaults laufen auch in der Editor-Vorschau, damit der Editor das Endergebnis korrekt darstellt.

Versteckte Felder

Die Embed-Option hideFields entfernt ein Feld aus dem gerenderten Formular, behält seinen Wert aber im Submit-Payload. Kombiniert mit prefill ist das das Muster für Mehrfach-Einbettung — ein veröffentlichtes Formular, N Einbettungen, jede mit einem eigenen fixierten Wert.

window.rocketlead.forms.create({
  target:     '#rl-form',
  formId:     'lead-form',
  prefill:    { location: 'studio-uuid', utm_source: 'google' },
  hideFields: ['location', 'utm_source']
});

Verhalten:

  • Der Renderer überspringt versteckte Felder — sie tauchen weder in den Schritten noch im Review-/Zusammenfassungs-Schritt auf.

  • Ihre Werte bleiben intern erhalten, damit Studio-Routing (location), Validierung und Absendung sie weiter sehen.

  • URL-Parameter, die auf ein verstecktes Feld zielen, werden stillschweigend verworfen. Ein manipulierter ?location=anderes-studio-Link kann nicht überschreiben, was der Embedder fixiert hat. Das Embed-prefill selbst darf weiterhin schreiben — der Embedder ist die Autorität.

  • Validierung bleibt unverändert. Ein verstecktes Pflichtfeld ohne passendes prefill schlägt beim Absenden fehl. Das Widget loggt beim Mount ein console.warn, wenn das der Fall ist.

Validierung & Sanitisierung

Alle Prefill-Quellen wenden dieselben defensiven Regeln an; nicht passende Werte werden stillschweigend verworfen, statt das Formular abstürzen zu lassen.

  • Sanitisierung — Text-Eingaben (text/email/tel) und Options-Schlüssel werden vor weiterer Verarbeitung von <, > und ASCII-Steuerzeichen befreit. Werte, die danach leer sind, werden verworfen.

  • Options-Matchselect-, location- und checkbox-Werte müssen einem der veröffentlichten Optionswerte entsprechen. Veraltete oder unbekannte Werte werden verworfen.

  • maxLength — Text-Werte, die das maxLength des Feldes überschreiten, werden zur Laufzeit im Widget still gekürzt; die Veröffentlichung lehnt sie hingegen explizit ab.

  • Type-Shape — String an Checkbox oder Array an Text-Feld → wird verworfen.

Schnellreferenz — was jeder Feldtyp akzeptiert

Feldtyp

Embed-prefill

URL-Parameter

Persistierung

defaultValue

text / email / tel

select / location

checkbox

booking-calendar

✓ (Termintyp)

appointment-type

captcha

privacy

Beispiele

Ein Formular, viele Standorte

Ein Franchise mit fünf WordPress-Seiten bettet dasselbe Formular auf jeder Seite ein und fixiert pro Seite einen anderen Standort:

<!-- studio1.example.de/kontakt -->
<div id="rl-form"></div>
<script>
  window.rocketlead.forms.create({
    target:     '#rl-form',
    formId:     'shared-lead-form',
    prefill:    { location: 'studio-1-uuid' },
    hideFields: ['location']
  });
</script>

<!-- studio2.example.de/kontakt — gleiches Formular, anderer Standort -->
<script>
  window.rocketlead.forms.create({
    target:     '#rl-form',
    formId:     'shared-lead-form',
    prefill:    { location: 'studio-2-uuid' },
    hideFields: ['location']
  });
</script>

Submissions landen automatisch beim richtigen Kalender / Lead-Pool des jeweiligen Standorts — das location-Feld treibt die Studio-Auflösung im Hintergrund, auch wenn es versteckt ist.

Kampagnen-Tracking aus der URL

Ein Tracking-Feld übernimmt den utm_source aus dem eingehenden Kampagnen-Link:

https://deine-seite.de/kontakt?utm_source=google&utm_campaign=spring2026

Auf Embed-Ebene als versteckte Felder durchreichen:

const params = new URLSearchParams(window.location.search);
window.rocketlead.forms.create({
  target:  '#rl-form',
  formId:  'lead-form',
  prefill: {
    utm_source:   params.get('utm_source')   ?? 'direct',
    utm_campaign: params.get('utm_campaign') ?? ''
  },
  hideFields: ['utm_source', 'utm_campaign']
});

Default mit Override

Das email_subject-Feld hat im Editor einen defaultValue von "Anfrage Probetraining". Eine Kampagnen-Seite verlinkt Besucher mit einem eigenen Betreff:

https://deine-seite.de/landing?email_subject=Sommer-Aktion

Ergebnis: "Sommer-Aktion" (URL schlägt Default). Kommt der Besucher später ohne URL-Parameter wieder, zeigt die Persistierung — falls aktiviert — den zuletzt eingegebenen Wert; sonst erscheint wieder der Editor-Default.

Häufige Stolperfallen

  • „Mein Default zeigt sich im veröffentlichten Formular nicht" — eine andere Quelle füllt den Slot. URL-Parameter und Persistierung schlagen Defaults beide. Test im Inkognito-Fenster ohne Query-String.

  • „Mein Embed-Prefill greift nicht" — der Schlüssel hat nicht aufgelöst. Das Widget matcht zuerst fieldId, dann den stabilen Feldnamen. Den Namen im Editor unter Feld-Einstellungen → Name prüfen.

  • „Validierung sagt, das Formular sei unvollständig, aber ich sehe nicht, warum" — ein verstecktes Pflichtfeld hat kein passendes prefill. Devtools öffnen — das Widget loggt beim Mount ein console.warn mit den betroffenen Feldern.

  • „Mein select-/location-Prefill wird ignoriert" — der Wert ist nicht in den Optionen des Feldes. Optionen-Liste im Editor mit dem Embed-/URL-Wert abgleichen.

Verwandte Artikel

Hat dies deine Frage beantwortet?