TrueSign Gen — Document generation
TrueSign Gen builds the document before getting it signed: a template containing tags is merged with Salesforce data, converted to PDF, then — optionally — sent for signature. All in one click.
Two ways to supply the template, your choice in the Content tab:
- Inline editor (text → PDF) — you write the document straight inside TrueSign and insert tags with the Tag Builder. No Word file needed.
- Word / file upload — you upload a
.docxprepared on your side, useful when the layout is complex or imposed.
The Preview with data button renders the document against a real record from your org, using the very same engine as the final generation — and saves nothing.
A sales rep opens the opportunity and clicks "Generate and sign the quote": product lines, prices and address are resolved from the Word model, the PDF is produced and the send goes out — a single action.
No record data leaves Salesforce to be merged: the engine runs in your org, and so does the PDF conversion. This is the most important architectural difference with DocuSign Gen, which ships the XML of your data to its servers. Direct consequences: nothing to declare as a transfer, no provider outage can stop generation, and no throughput cap (DocuSign limits you to 100 generations per 10 minutes).
1. Tag reference
Every tag is written between double braces, directly in the Word document.
Values
| Tag | Effect |
|---|---|
{{Field}} | A field of the source record |
{{Object.Field}} | A field of a related record — {{Account.Name}} |
{{A.B.C.Field}} | Relationship traversal, up to 5 levels |
{{alias.Field}} | A field of a related list, through its alias (§3) |
A tag that does not resolve is removed from the document — it never leaves {{Field}} in plain sight inside a contract. A field the user is not allowed to read renders empty, without failing the generation.
Conditions
{{if Amount > 10000}}
This order follows the key-account procedure.
{{else}}
Standard processing.
{{endif}}
| Element | Detail |
|---|---|
| Operators | == != > < >= <= contains |
| Combinations | and / or — quoted text is never split ('Research and Development' stays whole) |
{{else}} | Supported — no need to write two mirror conditions |
| Case | Insensitive by default |
| Nesting | Up to 10 levels |
Loops
{{for each lines}}
{{lines.Product}} — {{lines.Quantity}} × {{lines.UnitPrice | currency}}
{{end each}}
Loops nest, and conditions inside them are evaluated row by row: {{if lines.Price > 15}} only shows on the rows concerned.
Repeated table rows
This is the number-one use case for a quote or a product schedule:
- put
{{for each lines}}in the first cell of the table row; - put
{{end each}}in the last cell of the same row; - TrueSign clones the whole row, one per record.
If both tags sit in a single cell, the behaviour stays the classic inline loop — your existing models render exactly as before.
Empty list? The row disappears. If it was the table's only row, the whole table is removed (a table with no row makes the file unreadable by Word).
Formatting
| Tag | Result |
|---|---|
{{Date | date:"dd/MM/yyyy"}} | Date in the chosen format |
{{Amount | currency}} | 24 500,00 € — separators per the model's locale |
{{Amount | currency:"$"}} | Forced symbol |
{{Number | number}} / {{Number | number:2}} | Grouped number, no symbol, chosen decimals |
Images
{{image Logo__c}} {{image Logo__c:6x2}}
The field holds the identifier of a Salesforce file. The image is inserted into the document (dimensions in inches, optional). Word models only. A file the user is not allowed to read is not inserted.
Salesforce formulas
{{formula: IF(Amount > 50000, "Key-account discount", "Standard rate")}}
{{formula: TEXT(YEAR(CloseDate)) & "-" & Account.Name}}
The native Salesforce formula engine evaluates the expression: functions, calculations, conditions, dates, text. Referenced fields are added to the query automatically — no extra cost.
Both DocuSign generation products explicitly exclude formulas and inline calculations in the document; their official workaround is "create a formula field in Salesforce and hide it from the layout". Here, the formula lives in the model.
2. Create a Gen model
TrueSign → Gen Templates → New:
- Source object — the Salesforce object generations will start from.
- Word document — the .docx with its tags.
- Related lists (§3) — the aliases used by loops.
- Options:
| Option | Effect |
|---|---|
| File name | Accepts merge tags — Quote {{Account.Name}} {{CloseDate}} |
| Suffix | Appended to the name (date, source object name) |
| Currency locale | Amount formatting for this model |
| Destination | Record files, library, or both |
| Linked envelope template | To chain generation → signature |
| Automatic launch | Generation fires on click, no intermediate screen |
| Preview before send | The user checks the resolved PDF before confirming |
| Send for signature | Can be disabled — Gen then only produces the document |
| Active | A real circuit breaker: an inactive model does not generate, even when called by a Flow |
The preview replays the real pipeline, including the related lists you have just configured without saving them: what you see is what the document will be.
Generating from a record of a different object than the source object is explicitly refused, with a message — rather than producing an entirely blank document in silence.
3. Related lists — filter, sort, cap
A related list carries an alias (used by {{for each alias}}) and three settings that keep it under control:
| Setting | Example | Detail |
|---|---|---|
| Filter | Title = 'CEO' AND IsActive = true | Operators = != < <= > >= LIKE IN NOT IN, combinable with AND / OR |
| Sort | LastName ASC NULLS LAST | Sortable fields only |
| Cap | 200 | From 1 to 2000 — 2000 by default |
null values and Salesforce date literals (TODAY, LAST_N_DAYS:30…) are accepted in filters.
You write a mini-language that TrueSign parses and rebuilds: every field name is re-validated, every value is typed then bound to the query. An injection attempt is refused. That is the difference with DocuSign, which has you type SOQL directly.
An invalid clause fails the generation with a message — never a silently unfiltered schedule.
The cap is not a nicety: a 50,000-row list with no limit exhausts the transaction's resources.
4. Output and automation
- Word, PDF, CSV or HTML. PDF conversion happens in the org by default. An external conversion engine can be configured; it is then only accepted over
https. - Button on the record page — see Custom buttons.
- Flow action: generation is exposed as an invocable action, usable from any Flow or Next Best Action strategy.
- Generate + send in a single action, through the linked envelope template.
A merged value comes from a record — therefore potentially from a third party (portal entry, web form, import). TrueSign accounts for this:
- CSV — values that would start with
=,+,-,@are neutralized (leading apostrophe, OWASP recommendation) so none is executed as a formula by Excel or Google Sheets. Legitimate negative amounts (-42) stay intact. - HTML — every merged value is escaped: it can never inject markup. The model body itself stays free — your admin writes it.
5. Good practice and known limits
- Word sometimes splits a tag into several invisible pieces (spell-checker, partial formatting). TrueSign re-glues them automatically — a classic problem left untreated elsewhere. If a tag still resists, retype it in one go with no intermediate formatting.
{{formula:}}and{{image}}tags also work inside a repeated table row, as do source-record fields.- The
&character: an&in a merged value ("Black & Decker") can produce an unreadable Word document. A fix is in progress on the product side; meanwhile, avoid that character in data bound for a Word model, or strip it with a formula.
6. Access
Generation requires the TES_GenUser permission set (or TES_Admin). The "Document Generation" Setup entry shows a lock for unauthorized users.
7. AI assistance (optional)
TrueSign Gen can offer writing assistance for your models. It is disabled as long as no key is entered, and can be switched off at any time from the configuration.
What to know before enabling it:
- the assistance sends the model and record context to an external AI service — it is the only case where data leaves your org anywhere in the Gen journey;
- the access key is stored like the other secrets, unreadable outside the package;
- the usage must appear in your processing register if the context transmitted contains personal data.