propform can generate PDF documents after a form is submitted — e.g. anti-money laundering documentation, notary instructions, handover reports, booking confirmations — and save them in onOffice, attach them to an email, or do both.
propform uses the onOffice PDF Designer for PDF creation. Upon submission, propform instructs onOffice to render the selected template and saves the result in the desired record.
> ⚠️ Important API limitation: Currently, only the PDFExposé API call is available; there is no PDFBrief. Money laundering documents, emergency orders, etc. are therefore also created as “Exposé” — but in terms of content, they are completely normal PDF documents. propform has been asking onOffice for a dedicated letter API call for years, but it has not yet been implemented.
The template must be explicitly “activated” — otherwise the API user cannot read it:
You have to set the logo size, page margins and fonts individually in every new template — which is a hassle. Create a master template with your standard setup (logo at the top, margins, fonts), and copy it each time instead of creating a new one from scratch.
If the PDF outputs the form values as a list, it quickly looks messy as continuous text. Better: table layout.
When configuring the email in propform → click ‘Add form fields as macros’ under Body → propform writes all field macros in sequence into the email body.
Copy this block (Ctrl+C) and paste it into the PDF template. This way, you already have all the macros with the correct spelling — saving you the trouble of searching for them manually.
_xVertragspartner)Result: a clean, readable PDF with two columns.
In Form settings → “Create and save file”, configure the following:
| Setting | What |
|---|---|
| PDF template | select from the onOffice template dropdown |
| Storage location | Address or property (or both) |
| Document type | optional — e.g. “Money laundering document”, “Reservation”, “Handover report” |
| File name | Plain text with macros, e.g. Geldwaesche_Doku_<_Vorname>_<_Name> |
| PDF protection | optional, prevents subsequent editing |
In the email configuration → tick the box for “Attach files submitted via form”. Files that have been created also count as “submitted files” and are automatically included.
> 💡 Workflow: Submit → File is created in the background (1–3 seconds) → File is added to the record → Email is sent to the recipient with the file attached.
The fields/templates are updated daily in the morning. If you have just created a new template in onOffice:
For more on this “refresh trick”, see Fields are not displayed.
## Pre-macros for PDF templates
In PDF templates generated via email, macro resolution takes place on the recipient’s end — not on the requester’s. This results in empty fields if the recipient is an internal colleague.
| Pre-macro | Meaning ||
|---|---||
| _Kaeufer / _Buyer | accesses the buyer linked in the form |
| _Eigent / _Owner | accesses the owner linked in the form |
| _Mieter / _Renter | accesses the tenant linked in the form |
> ⚠️ Notation: The pre-macro and field name are written without an underscore in between — i.e. _KaeuferVorname, not _Kaeufer_Vorname.
Example in PDF:
Käufer: _KaeuferVorname _KaeuferName
Anschrift: _KaeuferStrasse, _KaeuferPlz _KaeuferOrt
Eigentümer: _EigentVorname _EigentName
This ensures the correct data is retrieved — regardless of the email recipient.
📖 More on address links: Linking multiple records and Values are not transferred to the PDF.
If the PDF is to contain signatures, ID scans or other images from file fields, use the file path macros:
_dateipfadAdressfeld(unterschrift_kaeufer;400;variabel;mail;html)
Parameters (order is important, separated by semicolons):
variabel (proportional)px or mmmail or htmlFor property file fields: _dateipfadObjektfeld(...) with the same syntax.
For notarial contracts or handover protocols with multiple buyers/owners: use the file path macro within the address loop — a separate file field for each buyer:
Vertragspartner:
_buyerbrek_1_
- _BuyerVorname _BuyerName
Unterschrift: _ifEmpty(unterschrift_kaeufer;"";"_dateipfadAdressfeld(unterschrift_kaeufer;400;variabel;mail;html)")
_buyererek_1_
> 🔒 Always wrap _ifEmpty(...): If a buyer has not yet signed (file field empty), the macro would otherwise output a placeholder. With the _ifEmpty wrapper, the space simply remains empty — the PDF looks neat.
As a file field only stores one file, you need two separate file fields for the front and back of the ID card (e.g. ausweis_vorne and ausweis_hinten). Then embed both in the PDF one after the other — ideally using a table, each with a width of 600 px.
If the “Create and save file” button is on but no template is selected: nothing happens silently. No error message, no PDF.
Solution: Always select a template explicitly. If you don’t want a PDF temporarily, it’s better to switch the button off.
_Name, _Vorname, _Strasse)_objektart, _ort, _plz)Incorrect spelling → field remains empty in the PDF. More under Values are not transferred to the PDF.
If the template does not appear in the dropdown in propform, check:
More under My form is not writing any data Point 6.