🧩 Makros — propform & onOffice

Makros sind Platzhalter, die zur Laufzeit durch echte Werte ersetzt werden — z.B. den Vornamen einer geladenen Adresse, die UUID einer Immobilie oder das aktuelle Datum.

Inhalt


Wo dürfen Makros genutzt werden?

Stelle Makros aktiv?
Formular-Überschrift / -Unterüberschrift
Feld-Beschriftung, -Hinweis, -Placeholder, -Tooltip
Default-Wert, Erzwungener Wert
Beschreibung-Felder (Sondertyp) ✅ — inkl. propform-Makros wie _pfButton, _pfLink
Aktivitäts-Bemerkung
Aufgaben-Betreff & -Beschreibung
E-Mail-Empfänger, CC, BCC
E-Mail-Betreff & -Body
Dankeseite-URL
„Werte schreiben"-Zielwerte
Datei-Upload-Feldname
Link-Button-URL
Datei-Download-Custom-Name

Standard-onOffice-Makros

Die komplette offizielle Makro-Liste findest du in der onOffice-Hilfe.

⚠️ Achtung Schreibweise: onOffice ist inkonsistent in der Groß-/Kleinschreibung. Adress-Makros sind in der Regel CamelCase (großer erster Buchstabe), Immobilien-Makros sind klein. Halte dich genau an die offizielle Schreibweise — sonst wird das Makro nicht aufgelöst.

Adress-Makros (CamelCase)

Makro Bedeutung
_Name Nachname
_Vorname Vorname
_Email Standard-E-Mail-Adresse
_Email(Art,n) E-Mail nach Art (geschäftlich/privat) und Position
_Strasse Straße
_PLZ Postleitzahl
_Ort Ort/Stadt
_Telefon Standard-Telefonnummer
_AdrDatensatznummer Datensatznummer der Adresse
_Uuidaddress UUID der Adresse
_Sonstige1 Inhalt des Sonstige1-Felds

Immobilien-Makros (klein)

Makro Bedeutung
_objektart Objektart (Haus, Wohnung etc.)
_objekttyp Objekttyp (Einfamilienhaus, Reihenhaus etc.)
_ort Ort der Immobilie
_strasse Straße (nur wenn im Objekt „Adressfreigabe" aktiv)
_hausnummer Hausnummer (nur wenn im Objekt „Adressfreigabe" aktiv)
_Objstrasse Straße — umgeht „Adresse nicht freigeben" (Trick, nur für Straße + Hausnummer)
_Objhausnummer Hausnummer — umgeht „Adresse nicht freigeben"
_plz Postleitzahl
_kaufpreis Kaufpreis
_wohnflaeche Wohnfläche
_flaeche Standardfläche je Objektart
_ObjDatensatznummer Datensatznummer der Immobilie
_Uuidestate UUID der Immobilie

Datums- & Zeit-Makros

Makro Bedeutung
_Datum(format) Variables Datumsformat — _Datum(DD.MM.YYYY)
_KDatum Aktuelles Datum (z.B. 26.04.2026)
_Uhrzeit(Länge, Format, Zone) Aktuelle Uhrzeit

Funktions-Makros (Bedingungen, Berechnungen)

Makro Beispiel Bedeutung
_calculate(...) _calculate([kaufpreis]*3) Mathematische Berechnung
_ifEmpty(_makro;"Text1";"Text2") _ifEmpty(_Sonstige1;"Standard";_Sonstige1) Wenn Makro leer → Text1, sonst Text2 (auch geschrieben als _if_empty(...))
_if(Bedingung;"Text1";"Text2") _if([objektart]="haus";"Haus-Anfrage";"Andere") Bedingte Ausgabe
DATEADD([feld];n;"d") _calculate(DATEADD(TODAY();14;"d")) n Tage zum Datum addieren (d/w/y)
TODAY() _calculate(TODAY()) Heute

💡 _ifEmpty mit Benutzer-Feldern — Multi-Büro-Pattern: Wenn jeder Standort/jedes Büro einen eigenen Bewertungs-Link, Telefon-Code o.ä. hat, leg ein Custom-Feld am Benutzer an (z.B. Benutzerzusatz1Name) und nutze: _ifEmpty(_OBJBetreuer_Benutzerzusatz1Name;"https://fallback-link.de";_OBJBetreuer_Benutzerzusatz1Name) — falls der Betreuer das Feld leer hat, greift der Fallback. Kürzer und lesbarer als _calculate(IF([feld]=null;"a";"b")) für reine Empty-Checks.

Benutzer-Makros (Mitarbeiter, der die Aktion ausführt)

Makro Bedeutung
_UserAdr* Platzhalter für beliebiges Adressmakro des aktuellen Benutzers — z.B. _UserAdrName, _UserAdrEmail, _UserAdrTelefon
_Benutzervorname / _Uservorname Vorname des Benutzers
_Benutzername / _Username Nachname des Benutzers
_Benutzeremail / _Useremail E-Mail des Benutzers

propform-spezifische Makros

Diese Makros gibt es nur in propform.io — nicht im normalen onOffice. Sie funktionieren in Formularen sowie in Aktivitäten, Aufgaben und E-Mails, die über propform geschrieben werden (Makro-Auflösungs-Modus „alternativ" in onOffice).

Buttons & Links in Beschreibungs-Feldern

Makro Beschreibung
_pfButton("Label", "URL", "Style", "Target") Voll gestylter Button im propform-Design. Styles: rounded, rounded-0, rounded-pill. Target: _parent oder _blank.
_pfLink("URL", "Label", "Target") Einfacher Hyperlink. Wenn keine Beschriftung angegeben, wird die URL als Linktext verwendet.

Beispiele:

_pfButton("Weiter zum Formular", "https://example.com", "rounded-pill", "_blank")
_pfLink("https://example.com", "Hier klicken", "_blank")

Suchkriterien-Makros

Makro Beschreibung
_pfGetSearchCriteriaInformation Gibt das komplette Suchkriterium tabellarisch aus.
_pfGetSearchCriteriaField(Feldname) Gibt einen einzelnen Wert aus dem Suchkriterium aus, z.B. _pfGetSearchCriteriaField(objektart)
_pfGetSearchCriteriaUUID Verschlüsselte UUID des Suchkriteriums (für sichere Cross-Form-Links — z.B. in „Bearbeiten"- und „Deaktivieren"-Buttons in Übersichts-Mails)

💡 Self-Service-Pattern für Suchprofile: Die drei Makros zusammen mit _pfButton(...) und der Schleife _bScRek_("status:1") ergeben einen kompletten Self-Service-Workflow: Übersichts-Mail listet alle aktiven Suchprofile + 1-Klick-Buttons zum Bearbeiten/Deaktivieren. Komplettes Setup unter Suchprofile bearbeiten / deaktivieren.

Datei-Pfad-Makros (für Bilder/Unterschriften in PDF-Vorlagen)

Makro Beschreibung
_dateipfadAdressfeld(<Feldname>;<Breite>;<Höhe>;<Einheit>;<Typ>) Bindet das Bild aus einem Adress-Datei-Feld in die PDF-Vorlage ein (typisch für Unterschriften, Ausweis-Scans)
_dateipfadObjektfeld(<Feldname>;<Breite>;<Höhe>;<Einheit>;<Typ>) Analog für Immobilien-Datei-Felder

Parameter:

  • Feldname: interner onOffice-Feldname des Datei-Felds (z.B. unterschrift_kaeufer)
  • Breite: Wert in der gewählten Einheit (z.B. 400 — Standardwert für Unterschriften)
  • Höhe: entweder fester Wert oder variabel für Auto-Höhe
  • Einheit: px oder mm
  • Typ: mail oder html

Beispiel — Käufer-Unterschrift einbinden:

_dateipfadAdressfeld(unterschrift_kaeufer;400;variabel;mail;html)

Multi-Sig-Pattern für mehrere Käufer/Eigentümer:

Innerhalb der Adress-Loop-Schleife (_buyerbrek_1__buyererek_1_, siehe unten) kannst du pro Käufer ein eigenes Datei-Feld mit Unterschrift einbinden. Wenn nicht alle Käufer schon unterschrieben haben, immer mit _ifEmpty(...) wrappen — sonst entsteht eine Lücke im PDF:

_buyerbrek_1_
_BuyerVorname _BuyerName
_ifEmpty(unterschrift_kaeufer;"";"_dateipfadAdressfeld(unterschrift_kaeufer;400;variabel;mail;html)")
_buyererek_1_

💡 Datei-Felder-Verfügbarkeit: Datei-Pfad-Makros funktionieren nur, wenn die Datei in einem onOffice-Datei-Feld des Datensatzes liegt — nicht im allgemeinen Reiter „Dateien". Das Datei-Feld muss vor der Verwendung in der onOffice-Administration angelegt sein.


Aktivitäts- & Termin-Makros

Makro Beschreibung
_pfGetAgentslogInformation Gibt die gerade über propform geschriebene Aktivität tabellarisch aus (Aktionsart, Aktionstyp, Bemerkung)
_pfGetSellingPriceOffer Gibt das vom Interessenten abgegebene Kaufpreisangebot aus
_pfGetCalendarUUID Verschlüsselte UUID des aktuellen Termins (innerhalb des Calendar-Loops)

Deep-Links zu onOffice-enterprise

Makro Beschreibung
_getAddressLink Direkter Deep-Link zum Adressdatensatz in onOffice — funktioniert nur für eingeloggte Benutzer
_getEstateLink Direkter Deep-Link zur Immobilie

Newsletter & Agreement

Makro Beschreibung
_NewsletterDOILink Onoffice-Standard-Makro: Bestätigungs-Link für Newsletter-Double-Opt-In. Wenn das Newsletter-Feld auf 3 (DOI ausstehend) gesetzt ist und der User klickt, wird auf 1 (bestätigt) gesetzt. Verwendung in der Newsletter-Bestätigungsmail.
_AgreementLink(Parameter1,Parameter2,...) propform-Makro für den Agreement-Link (Vertrag/Widerrufsbelehrung/Datenschutz). Parameter steuern, welche Inhalte beim Agreement-Aufruf angezeigt werden. Mögliche Parameter: URL, Vertrag, Belehrung, Musterwiderruf, Datenschutzerklärung, Beginn, Eigentum, Finanzierung, Newsletter.
_NewsletterLink onOffice-Standard: An-/Abmeldungs-Link für Newsletter-Verteiler (Klick öffnet An-/Abmelde-Seite bei onOffice).

💡 Agreement-Link-Tipp: Statt fester Parameter im Mail-Template kannst du ein Custom-Feld in der Immobilie pflegen (z.B. agreement_link_parameter) und dort per Formel _calculate(IF([provisionsfrei]=null;"Vertrag,Belehrung,Musterwiderruf,Datenschutzerklärung,Beginn,Eigentum,Finanzierung,Newsletter,URL";"URL")) dynamisch unterschiedliche Parameter liefern — z.B. ohne Vertrag/Widerruf bei provisionsfreien Objekten. Die Mail-Vorlage ruft dann nur _AgreementLink(_agreement_link_parameter) auf.

Adress-Makro-Auflösungs-Modus „alternativ"

In der propform-E-Mail-Konfiguration gibt es die Einstellung „Adress-Makro-Auflösung: normal vs. alternativ":

Modus Effekt
Normal (Standard) _Vorname, _Name, _Email etc. lösen sich auf den Mail-Empfänger auf
Alternativ Auflösung erfolgt auf die Formularadresse (= Adresse, die das Formular gerade bearbeitet hat)

Wann „alternativ"? Immer wenn die Mail an jemanden geht, der nicht der Anfragende ist — z.B. interne Notification an Buchhaltung über eine neue Adresse. Sonst stehen Buchhaltungs-Daten in der Mail statt der Anfragenden-Daten.


Schleifen — Suchkriterien-Loop

Mit _bScRek_ und _eScRek_ lassen sich alle Suchkriterien einer Adresse durchlaufen und für jedes einzelne Suchkriterium Makros ausgeben — analog zu den bekannten Maklerbuch-Schleifen in onOffice.

Syntax

_bScRek_("filter")
   ... beliebige Suchkriterien-Makros ...
_eScRek_

Optionaler Filter

Mit dem Filter-Argument schränkst du ein, welche Suchkriterien berücksichtigt werden:

_bScRek_("status:1")

→ Nur aktive Suchkriterien (Status = 1).

Vollständiges Beispiel

_bScRek_("status:1")
Objektart: _pfGetSearchCriteriaField(objektart)
Ort: _pfGetSearchCriteriaField(ort)
Wohnfläche: _pfGetSearchCriteriaField(wohnflaeche)
Link: _pfLink("https://example.com?id=_pfGetSearchCriteriaUUID", "Suchkriterium öffnen")
_eScRek_

Schleifen — Kalender-Loop

Mit _bCalendarRek_ und _eCalendarRek_ lassen sich Termine im angegebenen Zeitraum durchlaufen — z.B. um freie Slots in einem Buchungs-Formular auszugeben.

Syntax

_bCalendarRek_("startDate:YYYY-MM-DD;endDate:YYYY-MM-DD;weitere:filter")
   ... beliebige onOffice-Termin-Makros + _pfGetCalendarUUID ...
_eCalendarRek_

Beispiel-Filter

_bCalendarRek_("startDate:2026-02-25;endDate:2026-12-31;subject:like:%TERMIN-SLOT%;estate.id:_Id")

→ Alle Termine im Zeitraum, deren Betreff „TERMIN-SLOT" enthält und die mit der aktuellen Immobilie verknüpft sind.

Tiefer einsteigen

Eine ausführliche Anleitung mit Copy/Paste-Prompts findest du im Blog: Calendar-Loop Filter Guide.


Schleifen — Adress-Loop (Käufer / Eigentümer)

Mit den Adress-Schleifen-Makros lassen sich alle mit der Immobilie verknüpften Käufer oder Eigentümer durchlaufen — typischer Anwendungsfall: ein Übersichts-Formular, das alle Personen einer Immobilie auflistet plus „Bearbeiten"-/„Weiteren verbinden"-Buttons.

Syntax

Schleife Anfang Ende
Käufer _buyerbrek_1_ _buyererek_1_
Eigentümer _ownerbrek_1_ _ownererek_1_

Innerhalb der Schleife verwendest du die Pre-Makros _Buyer* bzw. _Owner* (siehe nächste Sektion). Die _1_ ist ein interner Schleifen-Zähler — nur erhöhen, wenn du mehrere unabhängige Käufer-/Eigentümer-Schleifen im selben Beschreibungs-Feld brauchst.

Beispiel — alle Käufer einer Immobilie auflisten

_buyerbrek_1_
_BuyerVorname _BuyerName, _BuyerStrasse, _BuyerPLZ _BuyerOrt, _BuyerEmail
_buyererek_1_

📖 Vollständiges Tutorial mit Übersichts- + Bearbeitungs-Formular und Code-Beispielen: Mehrere Datensätze mit einem Formular verbinden


Pre-Makros (verknüpfte Datensätze ansprechen)

Pre-Makros greifen auf Adressdatensätze zu, die mit einer Immobilie verknüpft sind — typischerweise innerhalb von PDF-Vorlagen, E-Mails oder Adress-Schleifen.

Pre-Makros für Käufer

Makro Bedeutung
_BuyerVorname Vorname des Käufers
_BuyerName Nachname des Käufers
_BuyerTitel Titel (z.B. Dr.)
_BuyerStrasse, _BuyerPLZ, _BuyerOrt Adresse
_BuyerTelefon, _BuyerEmail Kontakt
_BuyerName2, _BuyerVorname2, _BuyerStrasse2 etc. Stammdaten 2 (Zweit-Adresse innerhalb des Datensatzes — falls in onOffice aktiviert)
_BuyerUuidaddress UUID des Käufer-Adressdatensatzes (für Cross-Form-Links)
_Kaeufer / _Buyer Pre-Makro-Präfix in PDF-Vorlagen, z.B. _KaeuferVorname (ohne Unterstrich zwischen Präfix und Feldname)

Pre-Makros für Eigentümer

Makro Bedeutung
_OwnerVorname Vorname des Eigentümers
_OwnerName Nachname des Eigentümers
_OwnerTitel Titel
_OwnerStrasse, _OwnerPLZ, _OwnerOrt Adresse
_OwnerTelefon, _OwnerEmail Kontakt
_OwnerName2, _OwnerVorname2, _OwnerStrasse2 etc. Stammdaten 2
_OwnerUuidaddress UUID des Eigentümer-Adressdatensatzes
_Eigent / _Owner Pre-Makro-Präfix in PDF-Vorlagen, z.B. _EigentVorname (ohne Unterstrich zwischen Präfix und Feldname)
_Mieter / _Renter Pre-Makro-Präfix für Mieter, z.B. _MieterVorname

💡 Buyer/Owner vs. Kaeufer/Eigent: _Buyer*/_Owner* werden vor allem innerhalb von Adress-Loops und im Beschreibungs-Feld verwendet. _Kaeufer*/_Eigent* (mit deutschen Namen) sind die klassischen Pre-Makros aus PDF-Vorlagen, die onOffice direkt versteht. Für PDF-Vorlagen → siehe Werte werden nicht ans PDF übergeben.


Direkter Zugriff auf Kontaktart-Verknüpfung

Statt alle verknüpften Adressen einer Immobilie zu durchlaufen, kannst du auch eine bestimmte Kontaktart direkt ansprechen — z.B. den Notar oder die Verwaltung dieser Immobilie:

_XAPKontaktart#NAME#FELD
Beispiel Bedeutung
_XAPKontaktart#Notar#Name Nachname der mit der Kontaktart „Notar" verknüpften Adresse
_XAPKontaktart#Notar#Email E-Mail des Notars
_XAPKontaktart#Notar#Uuidaddress UUID des Notar-Adressdatensatzes
_XAPKontaktart#Verwalter#Telefon Telefon der Verwaltung
_XAPKontaktart#indMulti28075Select28075#Firma1 Firmenname der Adresse mit dem konkreten Schlüsselwert (bei eigenen Kontaktart-Optionen)

💡 Schlüsselwert finden: Den exakten Namen der Kontaktart bekommst du in onOffice unter Extras → Einstellungen → Administration → Adressen → Feld „Kontaktart" → bei der jeweiligen Option steht der Schlüsselwert dabei (oft indXXXX).


UUID-Vorausladen ohne Feld im Formular

Auch wenn ein Formular keine Adress- oder Immobilien-Felder enthält, kannst du via URL-Parameter einen Datensatz „mitliefern" — die nach Submit geschriebene Aktivität ist dann mit diesem Datensatz verknüpft.

https://formular.deine-domain.de/dokumenten-upload?address[ID]=_Uuidaddress&estate[Id]=_Uuidestate

Use-Case: Ein Dokumenten-Upload-Formular für einen Mieter (Adresse), das aber Immobilien-Bezug behalten soll — die hochgeladene Datei und die Aktivität sind dann mit beiden Datensätzen verknüpft, auch wenn im Formular selbst nur Datei-Upload-Felder sind.

💡 Funktioniert auch für _AgreementLink-Aufrufe und alle Stellen, an denen propform UUID-Parameter erwartet.


Weiter zu Emojis & Symbole für onOffice 👉