Leave Request Email Notification Templates
Copy-ready email notification templates for leave management: request submitted, approved, rejected, reminders, and digests, with subject and body for each event.

A new HR admin asked us to look at the default leave-management emails her team had been sending for two years. The subject lines were all "Vacation Request" or "Notification." The body had a thank-you line, two paragraphs of legalese, and a button labelled "View." Managers were ignoring half of them. Employees did not know if their request had been approved unless they opened the dashboard. The fix was not a different tool. It was better templates.
This article is for the HR admin who wants the leave notifications going out of BreezeLeave to actually get read. Below are subject lines and body templates for the five events that matter (request submitted, approved, rejected, reminder, digest), with notes on what to keep and what to remove for each company.
The five email types worth configuring
BreezeLeave can send a notification for almost every event in the leave lifecycle. Most teams should turn most of them off. The five that consistently earn the inbox slot:
- Request submitted. Goes to the approver. The single highest-stakes email because it gates whether the employee gets a decision.
- Request approved. Goes to the employee. Confirmation that the time off is locked in.
- Request rejected. Goes to the employee. Almost always needs a reason field that becomes part of the body.
- Approver reminder. Goes to the approver after a configurable delay (24 or 48 hours). Stops requests from sitting in limbo.
- Weekly digest. Goes to HR. One email per week with pending requests, recent approvals, and balance changes worth a glance.
Other events (request cancelled, balance adjusted, rule changed) are useful as audit-log entries but rarely earn an email. Configure them as in-app only.

Template 1: request submitted (to the approver)
The goal of this email is one decision in under thirty seconds. The approver should see who, when, how many days, and the balance impact without opening another tab.
Subject
Approve: {{employee_name}} is requesting {{day_count}} days off ({{start_date}} to {{end_date}})
Body
{{employee_name}} has requested {{leave_type}} from {{start_date}} to {{end_date}} ({{day_count}} working days).
Their current balance is {{current_balance}} days. After this request, it would be {{balance_after}} days.
Reason given: {{request_note}}
Approve or reject from the request page. The audit log records your decision.
Three details make this template work. The subject line starts with the action ("Approve"). The day count and dates are in the subject, so a scan in the inbox is enough to know the size of the request. The body shows the balance after the request, which is the number approvers actually want.
Template 2: request approved (to the employee)
Short. Confirmatory. The employee needs to see that the time is locked in and what their new balance looks like.
Subject
Approved: your {{leave_type}} from {{start_date}} to {{end_date}}
Body
{{approver_name}} approved your request for {{leave_type}} from {{start_date}} to {{end_date}}.
That is {{day_count}} working days. Your remaining balance is {{balance_after}} days.
The dates have been added to the shared team calendar. Your direct team has been notified.
The "team has been notified" line is the bit that closes the loop. It tells the employee they do not need to send a separate message to their team. If your Google Calendar sync is on, mention that the event is on their personal calendar too.
Template 3: request rejected (to the employee)
Rejection emails are the ones that go wrong most often. The reason field is non-negotiable; a rejected request with no explanation is the fastest way to make people stop trusting the system.
Subject
Update on your {{leave_type}} request ({{start_date}} to {{end_date}})
Body
{{approver_name}} reviewed your request for {{leave_type}} from {{start_date}} to {{end_date}} and could not approve it.
Reason given: {{rejection_reason}}
Your balance is unchanged ({{current_balance}} days). You can submit an updated request for different dates from your dashboard.
Avoid "Rejected" in the subject line. "Update on your request" is accurate and softer. The body should always include the reason and the unchanged balance; both reduce the follow-up emails that land in HR.
Template 4: approver reminder (to the manager)
The reminder is the most overlooked of the five. It is also the one that turns a 3-day approval delay into a 4-hour one.
Subject
Reminder: {{employee_name}}'s request is waiting (submitted {{age_hours}} hours ago)
Body
{{employee_name}} is still waiting for a decision on their {{leave_type}} request from {{start_date}} to {{end_date}}.
{{day_count}} working days requested. Balance after approval would be {{balance_after}} days.
If you are away, the request will escalate to {{escalation_name}} in {{escalation_hours}} hours.
Setting the reminder cadence is a per-company decision. A 24-hour reminder works for most teams; a 48-hour reminder is better when managers travel often. The escalation line at the end of the body is what stops the request from getting stuck when the approver is out. Pair this template with the right vacation request notification setup so reminders do not turn into noise.
Template 5: weekly digest (to HR)
The digest is what HR opens on Monday morning. One email, three or four sections, no surprises.
Subject
Weekly leave digest for {{week_of}}
Body
Pending requests older than 48 hours: {{stale_count}}.
Approved this week: {{approved_count}} requests across {{employee_count}} employees.
Balance adjustments: {{adjustment_count}} entries. See the audit log for details.
Upcoming team out: {{upcoming_out_count}} people on approved leave in the next two weeks.
Coverage flags: {{coverage_flag_count}} dates with more than 20% of any team off at once.
The digest is the email that replaces "let me check the dashboard" with "I already know the state." If your HR team has a Monday review meeting, the digest should arrive 30 minutes before it.
Configuration choices, per company
BreezeLeave supports SendGrid and custom SMTP for sending these emails. The choice is mostly about deliverability and brand control.
| Setting | SendGrid (default) | Custom SMTP |
|---|---|---|
| From address | BreezeLeave-hosted address | Your domain |
| Setup time | Minutes | DNS and SMTP credentials needed |
| Deliverability | Reputation-backed | Depends on your domain reputation |
| Best fit | Quick start, small teams | Enterprise with brand or compliance needs |
Per-user opt-out is supported for every template. Employees can turn off non-critical emails (digest, reminders) without affecting decision emails like approval or rejection. The list of supported events lives on the features page under notifications.
Variables you can use in any template
BreezeLeave templates accept a fixed set of variables that get filled at send time. The most useful ones for leave-management emails:
| Variable | Renders as | Useful in |
|---|---|---|
| {{employee_name}} | Full name of the requester | Submitted, approved, rejected, reminder |
| {{approver_name}} | Name of the manager who decided | Approved, rejected |
| {{leave_type}} | Vacation, sick, personal, etc. | All templates |
| {{start_date}}, {{end_date}} | Localized date strings | All templates |
| {{day_count}} | Working days, excludes holidays | Submitted, approved, rejected |
| {{current_balance}} | Balance at send time | Submitted, rejected, reminder |
| {{balance_after}} | Balance if the request is approved | Submitted, approved, reminder |
| {{request_note}} | Employee's note on the request | Submitted |
| {{rejection_reason}} | Approver's reason text | Rejected |
Variables render in the email subject and body. Missing variables fall back to an empty string, so test every template with a sample request before rolling it out to the whole company.
Three rules to apply to every template
The templates above are starting points. The three rules that make any leave-notification template better:
- Put the decision in the subject line. "Approve: Sara needs 5 days off" beats "Vacation Request" every time. The reader's eye is in the inbox; meet it there.
- Show the balance impact, not just the request. Approvers want to know "after this, the employee has 12 days left," not just "5 days requested." Saves a click and a question.
- Keep the body shorter than a tweet's worth. Five to seven lines is the upper limit for a transactional email. Anything longer gets skimmed and the action gets missed.
What to test before rolling templates company-wide
New templates should be sent to a test inbox before the whole company gets them. The checks worth running each time:
- Render in three clients. Gmail web, Outlook desktop, and an iOS Mail client cover most of what employees use. Long subject lines and HTML quirks show up here.
- Confirm every variable resolves. Submit a real test request and approve it. Each placeholder in the body should render with a sensible value.
- Check the from-name and reply-to. "BreezeLeave on behalf of Your Company" reads as a transactional email; a reply-to that goes to a monitored inbox is better than no-reply.
- Test opt-out. A user who turns off the digest should still receive their own approval emails. Send a test to a user with mixed preferences to confirm.
Five minutes of testing per template saves the "everyone got the same broken email" Slack thread on rollout morning.
Configure your templates and move on
Email notification templates are a settings page that, once configured, runs in the background for the rest of the year. The five templates above cover roughly 95% of the events your team needs to know about. Spend an hour customizing them to your company voice, then leave them alone.
BreezeLeave supports SendGrid and custom SMTP, per-user opt-out, and configurable subject and body for every event. Configure email notifications and templates from the notifications page in your settings.
