Skip to content

feat: email notifications for job offers and interview scheduling - #4919

Open
iamkhanraheel wants to merge 13 commits into
frappe:developfrom
iamkhanraheel:feat/recruitment_email_notifications
Open

feat: email notifications for job offers and interview scheduling#4919
iamkhanraheel wants to merge 13 commits into
frappe:developfrom
iamkhanraheel:feat/recruitment_email_notifications

Conversation

@iamkhanraheel

@iamkhanraheel iamkhanraheel commented Jul 14, 2026

Copy link
Copy Markdown
Collaborator

Job Offer

  • Added a Send Offer Letter action on Job Offer to send a personalised offer letter email to the candidate; the button changes to Resend Offer Letter after the first send
  • Email is sent from the Hiring Sender Email configured in HR Settings Recruitment tab, keeping hiring communication separate from the default service email
  • A default offer letter email template is included and can be customised before sending
JobOfferEmail.mov

Interview Confirmation Email

  • Added a Send Confirmation action on the Interview form (under the Actions) to send a confirmation email to the candidate and all interviewers; the button changes to Resend Confirmation after the first send
  • Added a Schedule & Notify option to the Schedule Interview dialog on Job Applicant; when checked, the confirmation email is sent immediately after the interview is scheduled
  • Configurable via HR Settings: toggle on/off and customise the email template
  • In-app desk notification is also sent to interviewers

Schedule Interview & send confirmation later 👇

InterviewSchedule.Confirm.mov

Schedule & send confirmation at same time 👇

InterviewConfirmation.mov

Interview Reminder & Feedback Reminder

  • Improved email content for both interview & Feedback reminder templates.
  • Feedback reminder now also sends an in-app desk notification to pending interviewers

Closes: #3305

- Custom button on submitted Job Offer (relabels to Resend after first send)
- Dialog with Email Template and Print Format selectors + Preview
- Default "Job Offer Letter" email template
@iamkhanraheel
iamkhanraheel marked this pull request as ready for review July 17, 2026 13:55
@greptile-apps

greptile-apps Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Confidence Score: 4/5

Safe to merge with the caveat that in-app desk notifications for interviewers will silently target Employee IDs rather than Frappe user names — emails go out correctly, but notification logs may not reach the right users.

The core email flows are sound and the prior Communication-based false-positive resend bug is fixed. The remaining concern is that make_notification_logs in send_interview_confirmation (and send_daily_feedback_reminder) receives [d.interviewer …] — Employee docnames — while the function expects Frappe user login names. Notifications will be created for non-existent users or the wrong users in those paths.

hrms/hr/doctype/interview/interview.py — the make_notification_logs calls need the Employee ID resolved to user_id before being passed in.

Reviews (8): Last reviewed commit: "fix(job_offer): remove hardcoded chrome ..." | Re-trigger Greptile

Comment thread hrms/hr/doctype/interview/interview.py Outdated
Comment thread hrms/hr/doctype/interview/interview.py
@greptile-apps

greptile-apps Bot commented Jul 17, 2026

Copy link
Copy Markdown
Contributor

Want your agent to iterate on Greptile's feedback? Try greploops.

Comment thread hrms/hr/doctype/interview/interview.py
@iamkhanraheel
iamkhanraheel force-pushed the feat/recruitment_email_notifications branch from 3943009 to 14d275f Compare July 17, 2026 14:34
Comment thread hrms/hr/doctype/job_offer/job_offer.py Outdated
Comment thread hrms/hr/doctype/job_applicant/job_applicant.js
Comment thread hrms/hr/doctype/job_offer/job_offer.py Outdated
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Need to configure system so that Job Offer emails are sent through a different email address rather than the default service email

1 participant