On this page0
Unfamiliar word? See Glossary: words used in these docs. Looking for the tasks in order? Begin at Start Here.
Reference
Included in: Team and Advanced. Which Plan Includes What
Managing Offer Templates
Write an offer letter once, with placeholders, and every offer sent from it is filled in with that candidate’s details.
Where Templates Live
Open HR & Talent › Templates (the page is headed Hiring templates) and pick the Offer letters tab (the page also has All and Interview guides). You need permission to manage recruitment to see it. From there you can create, edit, duplicate and delete templates, click a placeholder to insert it into the body, or ask the AI assistant for a first draft to edit. A Coverage for open roles table at the top shows which open roles each template covers.
Global Or Per-Job
Standard Terms Are Always Added
Supporting Documents
Key Terms Box Is Automatic
How The PDF Is Rendered
- Font. The letter is set in a standard Latin font. Western European letters (é, ü, ñ) are kept as they are. Letters outside that set that have a plain form lose their accent: Ł becomes L, ş becomes s, č becomes c.
- Symbols. An arrow such as → becomes a hyphen and a greater-than sign, unusual hyphens become a plain hyphen, and emoji and other pictographs are dropped. A currency symbol the font lacks is shown as its ISO currency code.
- Other scripts are refused, not guessed. If the candidate name, job title, company name or template contains text in a script the font cannot draw (Hebrew, Cyrillic, Greek, Arabic, Chinese, Japanese or Korean, for example), sending the offer is refused. Use Latin characters in those fields, or record the offer as signed outside Zonitix Sign with Mark as signed manually.
If something here is not working as you expect, start with When something goes wrong.
The plain explanation is above. This part is for IT and developers: the exact settings, permission names, API addresses and data fields behind it. Closed: select the heading above to open it. While it is closed, your browser’s find-on-page (Ctrl+F or Cmd+F) does not search this part.
Placeholders
These are the only placeholders that are filled in. Capitalisation and spaces inside the braces do not matter. Any other {{…}} token is removed when the letter is rendered to PDF — so a misspelt placeholder disappears rather than showing up raw. Use the names below exactly. What happens to [bracketed] text and to characters outside the letter’s font is under How the PDF is rendered below.
| Placeholder | Filled with |
|---|---|
| {{CandidateName}} | The candidate's first and last name |
| {{JobTitle}} | The title of the job the offer is for |
| {{StartDate}} | The start date entered on the offer |
| {{Salary}} | The salary entered on the offer, formatted in its currency (see below) |
| {{ManagerName}} | The job's hiring manager, or "your manager" if none is set |
| {{CompanyName}} | Your company name from branding settings ({{Company}} works too) |
| {{Level}} | The level entered on the offer |
| {{PayPeriod}} | Reads as "annually" or "per hour", matching the offer's Pay period (Annual or Hourly); empty on an older offer with no pay period |
| {{SignOnBonus}} | The sign-on bonus entered on the offer, formatted in its currency |
| {{TargetBonus}} | The target bonus, shown as a percentage |
Where the salary comes from. {{Salary}} uses the salary entered on the offer itself (stored encrypted). If none was entered, it falls back to the job’s salary-range text, and failing that to the words “as discussed”. Optional terms that were not entered (level, bonuses) resolve to nothing.
The screen is at /dashboard/recruitment/templates.
Pay period through the API. The offer form offers Annual and Hourly only. The renderer also understands a monthly period if one is stored through the API (Monthly salary, “per month”); any other stored value is labelled Base pay with the value spelled out beside the figure.
PDF Rendering: Bracketed Text And The Refusal Code
- Bracketed text. Bracketed text containing the word “contact”, such as
[Company Contact Information], becomes “our HR team”. Any other[bracketed]text is removed. - Unsupported script. When a field contains text in a script the font cannot draw, sending the offer is refused with HTTP 422 and the code
OFFER_LETTER_UNSUPPORTED_SCRIPT.