Grundlagen der Sprache
Zuletzt aktualisiert 23 May 2026

Flexie Scripting ist bewusst klein gehalten: Werte, Datensatzfelder, Bedingungen, Schleifen und Operatoren. Sobald Sie diese Handvoll Formen kennen, können Sie jedes Skript lesen oder schreiben, das Ihnen in Vorlagen, Workflow-Aktionen und dynamischen Endpunkten begegnet.
Einen Wert ausgeben
Verwenden Sie {{ ... }}, um etwas auszugeben:
{{ "Hello" }} → Hello
{{ 42 }} → 42
{{ first_name }} → the first_name of the current record
Alles zwischen den Klammern wird zuerst berechnet und dann ausgegeben. Sie können Text und Werte kombinieren, indem Sie einzelne Teile aneinanderreihen, doch der übliche Weg ist, einfachen Text zu schreiben und nur dort in {{ }} zu wechseln, wo ein Wert hingehört:
Dear {{ first_name }} {{ last_name }},
Datensatzfelder lesen
Wenn ein Skript läuft, erhält es den Datensatz, an dem es arbeitet: einen Kontakt, einen Deal, eine Rechnung und so weiter. Die Felder dieses Datensatzes lesen Sie direkt, ohne Präfix:
{{ first_name }}
{{ email }}
{{ total_incl_tax }}
{{ stage }}
Der Name in den Klammern ist der Alias des Felds (sein Systemname), den Sie direkt neben dem Feld in der Feldverwaltung im Admin-Bereich (Eigene Felder) finden.
Es gibt kein eingebautes globales
contact.,deal.oderinvoice..{{ contact.first_name }}zu schreiben funktioniert nicht, denn die Felder des aktuellen Datensatzes liegen auf der obersten Ebene. Ein Pfad mit Präfix wie{{ X.field }}ist nur gültig, wennXein Name ist, den Sie selbst erstellt haben (siehe unten).
Variablen für jeden anderen Datensatz
Um mit einem Datensatz zu arbeiten, der nicht der aktuelle ist, holen Sie ihn mit einer Nachschlagefunktion (etwa findOne) und weisen das Ergebnis Ihrer eigenen Variablen zu. Von da an lesen Sie seine Felder unter diesem Variablennamen:
{% set primary = findOne("contact", "email", email) %}
{{ primary.first_name }}, {{ primary.phone }}
Hier ist primary ein Name, den Sie gewählt haben, es könnte auch contact, match, c oder etwas anderes sein. Der Punkt-Pfad ist gültig, weil primary nun eine definierte Variable ist, die ein assoziatives Ergebnis enthält.
Daten aus dem Trigger und früheren Schritten (in einem Workflow)
Innerhalb eines Workflows liegt alles, was der Trigger mitgebracht oder frühere Schritte gespeichert haben, unter dem Namensraum __data:
{{ __data.incoming_email.subject }}
{{ __data.last_task.due_date }}
Siehe Wo es läuft & seine Grenzen für das, was in jedem Kontext verfügbar ist.
Tipp: eckige Klammern für sperrige Namen. Wenn ein Schlüssel Leerzeichen oder Sonderzeichen enthält oder in einer Variablen gehalten wird, verwenden Sie Klammern:
{{ row['field name'] }}oder{{ row[chosenField] }}.
Eigene Variablen setzen
Verwenden Sie {% set %}, um einen Wert einmal zu benennen und wiederzuverwenden:
{% set fullName = first_name ~ " " ~ last_name %}
{% set vatRate = 0.20 %}
Hello {{ fullName }}, VAT is {{ vatRate * 100 }}%.
Der Operator ~ fügt Text zusammen (Verkettung).
Entscheidungen treffen, if
Zeigen oder berechnen Sie etwas nur, wenn eine Bedingung erfüllt ist:
{% if amount > 10000 %}
Priority deal, assign to a senior rep.
{% elseif amount > 1000 %}
Standard deal.
{% else %}
Small deal, handle via self-service.
{% endif %}
Die kurze, inline-Form (ein „ternärer" Ausdruck) ist praktisch innerhalb von {{ }}:
{{ amount > 1000 ? "Large" : "Small" }}
Und um einen Ersatzwert zu liefern, wenn etwas leer ist, verwenden Sie ??:
{{ phone ?? "no phone on file" }}
Wiederholen, for
Iterieren Sie über eine Liste von Datensätzen oder Werten:
{% set list = findMany("invoice", "contact_id", id, "due_date", "ASC", 50) %}
{% for inv in list %}
Invoice {{ inv.number }}, {{ inv.total_incl_tax | number_format(2) }}
{% endfor %}
Innerhalb der Schleife ist inv die Schleifenvariable (ein Name, den Sie gewählt haben), die die aktuelle Zeile enthält, also ist inv.number gültig, während invoice.number direkt nicht gültig wäre.
Innerhalb einer Schleife steht Ihnen ein loop-Helfer mit nützlichen Zählern zur Verfügung:
{% for item in items %}
{{ loop.index }}. {{ item.name }}{% if not loop.last %}, {% endif %}
{% endfor %}
| Helfer | Bedeutung |
|---|---|
loop.index |
Aktueller Durchlauf, beginnt bei 1 |
loop.index0 |
Aktueller Durchlauf, beginnt bei 0 |
loop.first |
Wahr beim ersten Durchlauf |
loop.last |
Wahr beim letzten Durchlauf |
loop.length |
Gesamtzahl der Durchläufe |
Operatoren, die Sie verwenden können
Rechnen
+ - * / % (Rest) // (ganzzahlige Division) ** (Potenz)
{{ (price * quantity) * (1 + vatRate) }}
Vergleiche
== (gleich) != (ungleich) < > <= >= und Zugehörigkeitstests in / not in:
{% if stage_id in [4, 5] %}...{% endif %}
Logik
and or not
{% if email and not unsubscribed %}...{% endif %}
Text verbinden
~ fügt Werte zu einem einzigen String zusammen:
{{ "Hi " ~ first_name ~ " " ~ last_name ~ "!" }}
Tests, die Form eines Werts prüfen
{% if phone is defined %}...{% endif %}
{% if notes is empty %}...{% endif %}
{% if items is iterable %}...{% endif %}
Gängige Tests: is defined, is null, is empty, is iterable, is even, is odd.
Kommentare
Alles zwischen {# ... #} wird ignoriert, nie ausgegeben, nie ausgeführt. Verwenden Sie es, um Notizen für denjenigen zu hinterlassen, der die Vorlage als Nächstes bearbeitet:
{# Discount only applies to renewals, confirmed with finance #}
Ein Feld mit der Seriendruckfeld-Auswahl einfügen
Manche Editoren (etwa der E-Mail- oder Vorlagen-Builder) bieten eine Seriendruckfeld-Auswahl, ein Menü der verfügbaren Felder, das Sie anklicken können, um einen Wert in Ihren Inhalt einzufügen, ohne ihn zu tippen. So fügen Sie einen einzelnen Feldwert ganz bequem per Klick ein.
Wenn Sie mehr als einen reinen Wert brauchen, etwa Formatierung, einen Ersatzwert, eine Bedingung, eine Berechnung, eine Funktion, schreiben Sie Flexie Scripting mit {{ }}:
{{ first_name | capitalize }}
{{ phone ?? "no phone on file" }}
Die {{ }}-Form ist die mächtige Variante und steht im Mittelpunkt dieses Leitfadens.
Stets verfügbare globale Werte
Einige wenige Werte sind in jedem Skript vorhanden:
| Wert | Was er enthält |
|---|---|
LOGGED_IN_USER |
Der angemeldete Nutzer, der die Aktion ausführt (seine id, Name, E-Mail, Telefon, Rolle, Zeitzone). Leer, wenn niemand angemeldet ist (z. B. bei einem Hintergrundjob). |
NULL / EMPTY |
Praktische Namen für „nichts" oder einen leeren String. |
Prepared by {{ LOGGED_IN_USER.full_name }} on {{ now("Y-m-d") }}.
Administratoren können außerdem eigene globale Variablen definieren (einen Firmennamen, eine Support-Adresse, einen Standard-MwSt.-Satz), die dann in jeder Vorlage namentlich verfügbar werden. Fragen Sie Ihren Administrator, welche globalen Werte für Ihren Account definiert sind.
Nächste Schritte
- Funktionsreferenz: der komplette Werkzeugkasten der eingebauten Funktionen.
- Filter & Sammlungen: einzelne Werte und ganze Listen umformen.