Variablen und Vorlagen
Nutze Daten des Ereignisses und früherer Schritte in Titeln, Nachrichten und Anfragen
Zuletzt aktualisiert am
Mit Variablen erstellst du Texte, die von Fall zu Fall anders sind. Du schreibst eine Variable in geschweifte Klammern und Tillor setzt den echten Wert ein, sobald die Automatisierung läuft.
Ein Beispiel für einen Aufgabentitel:
Controleer {occupation.terrain.name}Endet die Belegung auf Stellplatz 12, heißt die Aufgabe Controleer 12.
Eine Variable einfügen
Über jedem Textfeld, in dem Variablen funktionieren, steht die Schaltfläche Variable. Klicke darauf und du siehst eine Liste aller verfügbaren Daten, gruppiert nach Datensatz. Tippe, um zu suchen (Variablen suchen), und klicke auf eine Zeile. Tillor setzt die Variable an die Stelle deines Cursors.
Du kannst eine Variable auch einfach selbst tippen. Unter dem Feld zeigt ein graues Feld, wie der Text mit Beispieldaten aussieht, sodass du sofort siehst, ob es stimmt.
Variablen funktionieren in Textfeldern wie Titeln, Beschreibungen, Unteraufgaben, Nachrichten, der ID eines Kunden, einer Rechnung oder eines anderen Datensatzes, dem Pfad oder der URL einer API-Anfrage, dem Body, der Payload eines Webhooks, dem Namen des Webhook-Ereignisses und den Werten von Headern. Bei den letzten beiden fehlt die Schaltfläche Variable, aber eine Variable, die du selbst tippst, wird trotzdem eingesetzt. Tillor prüft diese beiden Felder nicht auf Fehler und zeigt dort keine Vorschau.
In Feldern, in denen du eine Angabe zum Vergleichen wählst, schreibst du die Variable ohne geschweifte Klammern. Das gilt für Nur wenn, Wenn / sonst und Bis bei Warten bis (zum Beispiel invoice.status), für das Feld einer Verzweigung und für das Datum einer Verzögerung.
Welche Variablen gibt es
| Variable | Verfügbar | Inhalt |
|---|---|---|
{occupation.…}, {invoice.…}, {task.…}, {reservation.…} und andere | Nach einem Ereignis | Die Felder des Datensatzes, um den es im Ereignis geht. Der Name des Datensatzes ist auch der Anfang der Variable |
{occupation.terrain.name} | Nach einem Ereignis | Felder der Datensätze, auf die der Datensatz verweist, wie der Kunde oder der Stellplatz. Das funktioniert eine Ebene tief |
{triggeredBy.name}, {triggeredBy.id} | Immer | Der Kollege, der das Ereignis ausgelöst hat. Leer, wenn das System es getan hat |
{invoice.…} | Bei Rechnung überfällig | Die Felder der überfälligen Rechnung und des Kunden |
{reservation.…}, {task.…} und andere | Bei Ein Datum ist erreicht | Die Felder des Datensatzes, dessen Datum erreicht ist, plus die Datensätze, auf die er verweist |
{now}, {today} | Immer | Der Zeitpunkt, zu dem der Schritt läuft, und Mitternacht dieses Tages in der Zeitzone der Organisation. Zusammen mit einer Verschiebung (unten) ergibt {today + 1 day} morgen |
{threadId}, {messageId} | Bei Ereignissen zu Posteingangsnachrichten, wie inbox:message-created | Die ID der Unterhaltung und der Nachricht |
| Die Felder des Ereignisses | Nach Auf ein Ereignis warten, über Empfangen | Die Daten des Ereignisses, auf das gewartet wurde. Sie ersetzen die Daten derselben Datensätze vom Anfang des Ablaufs |
{createdTask.id}, {createdTask.name} | Nach Aufgabe erstellen | Die Aufgabe, die gerade erstellt wurde |
{foundTask.id}, {foundTask.name}, {foundTask.priority}, {foundTask.status} | Nach Aufgabe suchen, über Gefunden | Die Aufgabe, die der Schritt gefunden hat |
{updatedTask.id}, {updatedTask.status} | Nach Aufgabenstatus setzen | Die Aufgabe, deren Status geändert wurde |
{updatedTask.id}, {updatedTask.priority} | Nach Aufgabenpriorität festlegen | Die Aufgabe, deren Priorität geändert wurde |
{updatedTask.id} | Nach Aufgabe aktualisieren | Die Aufgabe, die angepasst wurde |
{foundDocument.id}, {foundDocument.name}, {foundDocument.status}, {foundDocument.userMetadata.documentType}, {foundDocument.userMetadata.insuranceExpiryDate} | Nach Dokument suchen, über Gefunden | Das Dokument, das der Schritt gefunden hat |
{updatedDocument.id} | Nach Dokument aktualisieren | Das Dokument, das angepasst wurde |
{response.status}, {response.body}, {response.data.…} | Nach API-Anfrage | Die Antwort der Anfrage |
{foundCustomer.…}, {foundInvoice.…}, {foundReservation.…} und andere | Nach Datensatz nachschlagen, über Gefunden | Die Felder des Datensatzes, den der Schritt gefunden hat, plus die Datensätze, auf die er verweist. Der Name ist found plus der Datensatztyp: foundCustomer, foundReservation, foundOccupation, foundInvoice, foundPayment, foundTerrain, foundTask, foundDocument, foundAccessMethod, foundNfcTag, foundMeter, foundInboxThread oder foundInboxMessage |
{body.…}, {query.…}, {receivedAt} | Nach Eingehender Webhook | Der JSON-Body, die Query-Parameter und der Empfangszeitpunkt des Webhook-Aufrufs |
| Jeder Zielname aus Variablen zuordnen | Nach Variablen zuordnen | Was du in diesem Schritt als Ziel einträgst, zum Beispiel {invoice.displayId} nach invoice ← {foundInvoice} |
{item.…} | In den Schritten hinter Für jedes | Die Felder des Elements, für das der Schritt gerade läuft, wie {item.id} |
{approvalTask.id}, {approval.decision}, {approval.label}, {approval.note}, {approval.decidedBy.name} | Nach Um eine Entscheidung bitten, über eine Option | Die Aufgabe, die gewählte Option, der Name dieser Option, die Notiz und der Kollege, der gewählt hat |
{task.…}, {action.label}, {note} | Bei Eine Aufgabenaktion wird gewählt | Die Aufgabe, die gewählte Schaltfläche und die Notiz, die dazu eingetragen wurde |
{createdComment.id} | Nach Kommentar hinzufügen | Der Kommentar, der gerade geschrieben wurde |
{bookedInvoice.displayId} | Nach Rechnung buchen, über Fertig | Die Rechnungsnummer der gebuchten Rechnung |
{paymentLink.url} | Nach Zahlungslink erstellen, über Fertig | Der Link, mit dem der Kunde online bezahlen kann |
{consumptionInvoice.id} | Nach Verbrauch abrechnen, über Fertig | Die Rechnung für den Zählerverbrauch |
{extendInvoice.id} | Nach Verlängerungsrechnung entwerfen | Die Entwurfsrechnung, die die Belegung verlängert |
{createdAccessMethod.id}, {createdAccessMethod.value} | Nach Zugangsmethode erstellen | Das neue Zugangsmittel und sein Wert, wie der Code eines QR-Codes oder PIN-Codes |
{error.message}, {error.step} | Nach einer Aktion mit Fortfahren, wenn dieser Schritt fehlschlägt, über Fehler | Die Fehlermeldung und der Name des Schritts, der fehlgeschlagen ist |
Welche Felder ein Datensatz genau hat, siehst du in der Liste hinter der Schaltfläche Variable. Beim Auslöser steht außerdem die Übersicht Daten, die dieses Ereignis liefert.
Nur, was im Ablauf früher kommt
Ein Schritt kann nur Variablen nutzen aus dem Auslöser, der ihn erreicht, und aus Schritten, die auf demselben Weg früher stehen. Erreichen mehrere Auslöser denselben Schritt, sind nur die Variablen verfügbar, die jeder dieser Auslöser liefert. Ein Feld aus einem früheren Schritt zählt, wenn jeder dieser Auslöser auch an diesem Schritt vorbeikommt. Nutzt du eine Variable, die an dieser Stelle nicht existiert, meldet Tillor [Feld]: [Variable] ist bei diesem Schritt nicht verfügbar. Ein Ablauf mit so einer Meldung kann nicht eingeschaltet werden.
Manche Datensätze speichern zusätzliche Daten in einem Feld, wie die Dokumentdaten in userMetadata. Jeder Schlüssel darunter ist eine Variable: {document.userMetadata.documentType}, {document.userMetadata.insuranceExpiryDate} oder ein anderer Schlüssel. Die bekannten Schlüssel, wie der Typ und das Ablaufdatum eines Dokuments, stehen auch in der Liste und lassen sich als Datum vergleichen. Ein Datum ohne Uhrzeit, wie 2026-10-07, erscheint in einer Nachricht als 07-10-2026.
Variablen von Für jedes ({item.…}) existieren nur in den Schritten hinter dem Ausgang Für jedes, nicht hinter Fertig. Variablen eines Ausgangs, den du nicht genommen hast, existieren ebenfalls nicht: {paymentLink.url} gibt es nur, wenn der Schritt über Fertig lief, und {foundTask.id} nur nach Gefunden.
Bei Ereignissen, deren Daten nicht beschrieben sind, kann Tillor nicht prüfen, welche Variablen existieren. Dann bekommst du diese Meldung nicht. Prüfe solche Abläufe also besonders gut mit einer Testausführung.
Ein neuer Wert ersetzt den alten
Eine zweite API-Anfrage im selben Ablauf ersetzt die response der ersten. Dasselbe gilt für createdTask nach einem zweiten Aufgabe erstellen, für foundTask nach einem zweiten Aufgabe suchen oder Datensatz nachschlagen bei Aufgabe, und für error nach einem zweiten fehlgeschlagenen Schritt. Nutze die Daten aus einer Antwort also in dem Schritt, der direkt darauf folgt.
Wie Werte eingesetzt werden
Tillor passt die Schreibweise an die Art des Felds an.
In normalem Text (Titel, Beschreibungen, Unteraufgaben):
- Daten stehen in der Zeitzone deiner Organisation, zum Beispiel
05-10-2026. Liegt der Zeitpunkt nicht genau auf Mitternacht, steht auch eine Uhrzeit dabei, wie05-10-2026 14:30 - Ein leeres Feld ergibt einen leeren Text
- Eine Variable, die Tillor nicht kennt, bleibt so stehen, wie du sie geschrieben hast, zum Beispiel
{occupation.terain.name}. Ein Tippfehler fällt so sofort in der Aufgabe oder der Nachricht auf - Gibt es einen verknüpften Datensatz nicht, bleibt die Variable leer. Eine Belegung ohne Reservierung ergibt für
{occupation.reservation.displayId}also nichts, und ein vom System ausgelöstes Ereignis ergibt nichts für{triggeredBy.name}. Willst du in diesem Fall einen anderen Text, setze ein Wenn / sonst mit ist leer davor
In JSON (die Payload eines Webhooks und der Body einer API-Anfrage):
- Text wird sicher eingesetzt. Anführungszeichen, Zeilenumbrüche und andere Sonderzeichen im Wert können das JSON nicht kaputt machen
- Zahlen und Ja/Nein-Werte kommen ohne Anführungszeichen, setze also keine darum. Text setzt du dagegen in Anführungszeichen
- Daten gehen als internationales Datum mit Uhrzeit durch, wie
2026-10-05T08:00:00.000Z, damit das empfangende System gut damit umgehen kann
{
"reservation": "{reservation.displayId}",
"adults": {reservation.numberOfAdults}
}Ist das JSON nach dem Einsetzen nicht gültig, zum Beispiel weil eine Zahl leer ist, bricht die Ausführung mit einer Fehlermeldung ab.
In einem Pfad oder einer URL (bei einer API-Anfrage):
- Werte werden so umgewandelt, dass sie in eine Adresse passen. Ein Name mit einem Leerzeichen ergibt also keine kaputte Adresse
- Daten gehen auch hier als internationales Datum mit Uhrzeit
- Was du selbst tippst, bleibt so, wie du es tippst. Willst du ein Leerzeichen in einem Suchbegriff, tippe selbst
%20
Ein Datum verschieben
Hinter einer Datumsvariable darf eine Verschiebung stehen: {reservation.checkOut + 1 day}, {today - 2 weeks}, {invoice.dueDate + 3 hours|date}. Die Einheiten sind minutes, hours, days, weeks und months (die Einzahl geht auch). Tage und Wochen haben feste Längen, sodass eine Gültigkeit über die Sommer- und Winterzeit hinweg gleich lang bleibt; Monate folgen dem Kalender, also ist der 31. Januar plus ein Monat der 28. oder 29. Februar. Bei einem Wert, der kein Datum ist, tut die Verschiebung nichts, und eine Einheit, die es nicht gibt, ist ein Fehler im Schritt. Datumsfelder wie Gültig bis akzeptieren dieselbe Schreibweise.
Einen Wert formatieren
Setze hinter die Variable ein | und ein Format, zum Beispiel {invoice.amountOutstanding|currency}. Ohne Format steht ein Betrag nackt da, wie 1295.3. Mit |currency wird daraus € 1.295,30.
| Format | Beispiel | Ergebnis |
|---|---|---|
currency | {invoice.amountOutstanding|currency} | € 1.295,30 |
currency:USD | {invoice.amountOutstanding|currency:USD} | US$ 1.295,30 |
number | {invoice.amountOutstanding|number} | 1.295,3 |
number:2 | {invoice.amountOutstanding|number:2} | 1.295,30 (feste Anzahl Dezimalstellen) |
date | {invoice.dueDate|date} | 30-06-2026 |
datetime | {invoice.createdAt|datetime} | 01-06-2026 16:04 |
time | {invoice.createdAt|time} | 16:04 |
upper / lower | {customer.lastName|upper} | VAN DEN BROECKE |
- Zahlen und Beträge stehen immer in belgischer Schreibweise: ein Punkt für Tausender und ein Komma für Dezimalstellen
- Daten und Uhrzeiten stehen in der Zeitzone deiner Organisation
- Kann das Format den Wert nicht lesen, zum Beispiel
|currencybei Text, steht der Wert einfach ohne Format da - Ein Format, das Tillor nicht kennt, bleibt so stehen, wie du es geschrieben hast, und der Editor zeigt dazu eine Meldung
- In JSON und in einer URL wird der formatierte Wert als Text eingesetzt. Setze in JSON also Anführungszeichen darum
Eine API-Antwort nutzen
Nach einer API-Anfrage kannst du Felder aus der Antwort mit {response.data.…} nutzen. Die Antwort einer Suche nach Aufgaben sieht zum Beispiel so aus:
{
"items": [
{ "id": "task_1", "priority": "LOW" }
]
}Dann ergibt {response.data.items.0.id} die ID der ersten Aufgabe (die erste in einer Liste hat die Nummer 0) und {response.data.items.0.priority} deren Priorität.
Tillor kann die Felder einer Antwort erst als Variable anbieten, wenn es weiß, wie die Antwort aussieht. Das geht auf zwei Arten:
- Lass die Automatisierung einmal echt laufen. Tillor nutzt dann die Antwort der letzten Ausführung
- Füge ein Beispiel im Tab Testlauf ein, im Feld Beispiel-API-Antwort. Dieses Feld erscheint, sobald der Ablauf eine API-Anfrage enthält. Darunter stehen Felder in dieser Antwort. Klicke auf ein Feld, um es kopiert zu bekommen, samt geschweiften Klammern
Danach stehen die Felder in der Liste hinter der Schaltfläche Variable und in der Liste bei Feld einer Verzweigung.
Tippst du selbst einen Pfad unter response.data, wird er immer akzeptiert, auch ohne Beispiel. Außerdem:
{response.body}enthält die ersten 4000 Zeichen der Antwort. Ist die Antwort länger, wird der Rest abgeschnitten{response.data}ist leer, wenn die Antwort kein JSON ist oder wenn die Antwort sehr groß ist (mehr als 100.000 Zeichen)- Bei einer Suche ohne Ergebnis existiert
{response.data.items.0.id}nicht. Eine Verzweigung auf so ein Feld geht dann über Standard
Ein Beispiel im Test
Im Tab Testlauf trägst du auch die Beispieldaten des Ereignisses ein. So siehst du im Testlauf, welche Werte Tillor einsetzen würde. Siehe Testen und Ausführungen.
Was passiert danach?
- Sobald die Automatisierung läuft, ersetzt Tillor jede Variable durch den echten Wert. Eine Variable, die Tillor nicht kennt, bleibt so stehen, wie du sie geschrieben hast.
- Ist eine Angabe leer, bleibt die Stelle leer. Willst du dann einen anderen Text, setze ein Wenn / sonst mit ist leer davor.