What an offer must include
The role and level (for example, Middle Frontend Developer), the team or product, the work format (office, hybrid, remote) and hours.
Salary with currency and period (per month, before or after taxes — as is usual for you), the probation period and its terms.
Start date, who the manager is, a contact for questions and the date you expect an answer by.
Worth adding
Paid leave and sick leave, equipment (laptop, monitor), training or conferences, salary reviews — if you really have them.
2–4 lines about the duties: what the person will do in the first months. It removes the «what exactly will I be doing» question.
What not to put in a developer's offer
A grid of percentages of profit or sales — it makes sense for media buyers and sales people, and only confuses a developer.
Vague wording like «competitive salary» instead of a number and «remote possible» instead of a clear format.
An example offer text
Hi, [Name]! We're glad to offer you the Middle Frontend Developer position in the product team.
Format: remote, full time. Salary: [amount] USD per month. Probation: 2 months on the same terms.
You'll work on the product interface in React and TypeScript together with the designer and the backend team. We provide a laptop.
Start date: [date]. We'd be glad to have your answer by [date]. Questions — [recruiter's name], [contact].
How to send it so the offer isn't lost
Send a personal link or an email, not a file in a messenger among other messages. Set a reply deadline and agree on a short call to go over questions.
Watch whether the candidate opened the offer: if not within a day, write to them. If they opened it and are silent, they most likely have questions, and it's better to ask first.
How it works in HR CRM
HR CRM has an offer base for Frontend and Backend without a percentage grid. [Name] is filled in on its own, the candidate gets a personal link or an email from your Gmail, and you see when the offer was viewed, accepted or declined. A signed offer moves the candidate to «Hired».
Try it free for 30 days