Grundlagen der Sprache

Zuletzt aktualisiert 23 May 2026

Eine kurze Flexie-Scripting-Vorlage mit Platzhaltern, einem if-Block und einer for-Schleife

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.

AUSGABE {{ ... }} "berechne dies und gib es hier aus" {{ first_name }} {{ email | lower }} {{ now("Y-m-d") }} LOGIK {% ... %} "tu etwas, aber gib nichts aus" {% if amount > 1000 %} {% for inv in invoices %} {% set vat = 0.20 %}

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. oder invoice.. {{ 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, wenn X ein 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