Transactional Emails

Sender Rule

Events that have no emails linked yet

    • Event: user-successfully-verify-email
    • Data payload sent to customer.io:
      • fromEmailName: Bryan Lee
      • fromEmail: [email protected]
      • userEmail:
        • Table: Users
          • Column: email
      • userFirstName:
        • Table: Users
          • Column: firstName
      • userLastName:
        • Table: Users
          • Column: lastName
    • Event: user-make-application
    • Data payload sent to customer.io:
      • fromEmailName: Bryan Lee
      • fromEmail: [email protected]
      • userEmail:
        • Table: Users
          • Column: email
      • userFirstName:
        • Table: Users
          • Column: firstName
      • userLastName:
        • Table: Users
          • Column: lastName
      • jobTitle:
        • Table: Jobs
          • Column: title
      • companyName:
        • Table: Companies
          • Column: name
    • Event: user-complete-onboarding-without-resume
    • Data payload sent to customer.io:
      • fromEmailName: Bryan Lee
      • fromEmail: [email protected]
      • userEmail:
        • Table: Users
          • Column: email
      • userFirstName:
        • Table: Users
          • Column: firstName
      • userLastName:
        • Table: Users
          • Column: lastName

Emails that are being sent

  1. Event: admin-invite-member-join-group
    • Title: {{event.firstName}} has invited you to join the group {{event.groupName}}!
    • Email Provider: customer.io
    • Template being used: plain html
    • Sender email: [email protected]
    • Recipients: New member
    • Content:
      <div>
          <p>Hi!</p>
      </div>
      <div>
          <p>{{event.firstName}} has just invited you to join the group "{{event.groupName}}".</p>
      </div>
      <div>
          <p>You can either obtain your password from {{event.firstName}}, or reset it at
              <a href="{{event.forgotPasswordLink}}">{{event.forgotPasswordLink}}</a>
          </p>
      </div>
      <div>
          <p>After that, you can then login via
              <a href="{{event.loginLink}}">{{event.loginLink}}</a>
          </p>
      </div>
      <div>
          <p>Thank you!</p>
      </div>
      
    • Data payload sent to customer.io:
      • fromEmailName: Glints (fixed)
      • fromEmail: [email protected] (fixed)
      • firstName:
        • Table: Users
          • Column: firstName
      • groupName:
        • Table: Groups
          • Column: name
      • loginLink:
        • group.features.employersVersion is 'NEW': config.get('company.baseUrl')/${group.subdomain}/login (config refers to api config)
        • otherwise: config.get('glints.baseUrl')/${group.subdomain}/login (config refers to api config) (will be deprecated in the future)
        • Table: Groups
        • Column: subdomain
      • forgotPasswordLink:
        • group.features.employersVersion is 'NEW': config.get('company.baseUrl')/${group.subdomain}/forgot-password (config refers to api config)
        • otherwise: config.get('glints.baseUrl')/${group.subdomain}/forgot-password (config refers to api config) (will be deprecated in the future)
        • Table: Groups
        • Column: subdomain
  2. Event: application-status-change-email

    • Status:
      • NEW:
        • Title: Your Application For ${job.title} Has Been Viewed!
        • Paragraph:
          • Default
            <p>${company.name} has just viewed your application for the opening "${job.title}" (
            <a href=${jobURL}>${jobURL}</a>
            ). Might not seem much, but it's a most definite first 
            step. Watch this space, where you'll be notified should you progress to the next stage.</p>
            
          • If there is/are groups want to screen through each application before they reach the company, company.name will be replaced with groups' name divided by "/"
      • IN_REVIEW:
        • Title: ${company.name} Is Reviewing Your Application!
        • Paragraph:
          • Default:
            <p>${company.name} has viewed your application for the opening "${job.title}" (
            <a href=${jobURL}>${jobURL}</a>
            ) and more excitingly, shortlisted you for further 
            review! We'll keep you posted as soon as there are any further updates.</p>
            
          • If there is/are groups want to screen through each application before they reach the company, company.name will be replaced with groups' name divided by "/"
      • INTERVIEWING:
        • Title: You've Been Shortlisted For Interviews By ${company.name}
        • Paragraph:
          <p>Trying not to get too excited here, but hooray, you've been chosen for interviews for the opening "${job.title}" (
          <a href=${jobURL}>${jobURL}</a>
          ) by ${company.name}! They should be contacting you via this email very soon.</p>
          
      • OFFERED:
        • Title: Congratulations! ${company.name} Is Confirming You!
        • Paragraph:
          <p>We've all shed a tear of joy here at Glints, because ${company.name} is making you an offer for the opening "${job.title}" (
          <a href=${jobURL}>${jobURL}</a>)!</p>
          <p>Watch your inbox closely, for they should be contacting you shortly.</p>
          
      • HIRED:
        • Title: Good Luck on Your New Position at ${company.name}
        • Paragraph:
          <p>We're so proud of you, you have done it. Now run forth, develop your skills and make the world a better 
          place at ${company.name} as a ${job.title}! We're all watching with bated breath.</p>
          
      • REJECTED:
        • Title: Update on Your Application for ${job.title}
        • Paragraph:
          <p>Sometimes the stars just don't align. We regret to inform you that ${company.name} has not found you 
          suitable for the opening "${job.title}" (
          <a href=${jobURL}>${jobURL}</a>).</p>
          <p>In most cases, it's simply a matter of fit. On behalf of ${company.name}, we'd like to thank you for 
          your time, and wish you all the best in your job search. We'll leave it to ${company.name} to contact 
          you personally, if they should choose to.</p>
          <p>We're sure that other companies will find you a great fit -- to continue your search, click here: 
          <a href=${jobsURL}>${jobsURL}</a></p>
          
    • Email Provider: customer.io
    • Shared Data in title and paragraph:

      • company.name:
        • Table: Companies
          • Column: name
      • job.title:
        • Table: Jobs
          • Column: title
      • baseUrl:
        • from glints: ${config.get('candidate.baseUrl')} (config refers to api config)
        • from whitelabel: (config refers to api config)
          config.get('glints.baseUrl').split('://').join(`://${grp.features.subdomain}.`)
          
          • Table: Groups
            • Column features.subdomain (jsonb)
      • jobURL: ${baseUrl}/opportunities/jobs/${job.id}
        • Table: Jobs
          • Column: id
      • jobsURL: ${baseUrl}/opportunities/jobs (fixed)
    • Template being used: plain html

    • Sender email: refer to the data's fromEmail
    • Recipients: Candidate
    • Content:

      <p>Hi {{event.salutation}},</p>
      
      {{event.paragraph}}
      
      <p>To view your updated application statuses for this and all other applications, click here:
          <a href="{{event.applicationsURL}}">{{event.applicationsURL}}</a>
      </p>
      
      <p>As always, if you need any help, feel free to reach out to me!</p>
      
      <p>Cheers,
          <br/> {{event.sign}}
      </p>
      
    • Data payload sent to customer.io:
      • fromEmailName:
        • from glints: Glints (fixed)
        • from whitelabel: related group's name
          • Table: Groups
            • Column: name
      • fromEmail:
        • from glints: [email protected] (fixed)
        • from whitelabel: related group's email
          • Table: Groups
            • Column: features.email(jsonb)
      • sign:
        • from glints: Glints (fixed)
        • from whitelabel: related group's name
          • Table: Groups
            • Column: name
      • subject: title depends on status
      • salutation:
        • Table: Users
          • Column: firstName (if firstName is empty, then use the email)
      • applicationsURL: ${baseUrl}/dashboard/jobs
      • paragraph: paragraph depends on status
  3. Event: company-approve-user-request
    • Title: Yay! Your request for access to {{event.companyName}} on Glints has been approved.
    • Email Provider: customer.io
    • Template being used: plain html
    • Sender email: [email protected]
    • Recipients: TalentHunt
    • Content:
      <p>Hi {{event.salutation}},</p>
      <p>Yay! Your request to join {{event.companyName}} has been approved.</p>
      <p>Click
          <a href="{{event.dashboardUrl}}">here</a> to login to your dashboard and post more jobs or review applicants.</p>
      <p>P.S. Make hiring a team sport! Thought of someone else you would like to invite? Click
          <a href="{{event.teamUrl}}">here</a> to invite them to join</p>
      <p>P.P.S. Sometimes, "post & pray" as a recruitment strategy simply doesn't cut it. Most top talent are passive and not out
          there applying for jobs, which makes it really hard to find them.</p>
      <p>Which is why we launched our
          <a href="{{event.talentHuntUrl}}">Talent Hunt Solution</a>. We want to help companies like you get an edge in hiring to find the right talent faster to
          grow your business. We’ve worked with companies such as DBS & Carousell to find the right candidates, maybe we can help
          {{event.companyName}} too?</p>
      <p>Its free to get started, and you will only pay a success fee after hiring the right person successfully!
          <a href="{{event.talentHuntUrl}}">Check it out</a> or just reply to this email if you are interested to have a chat :)</p>
      
    • Data payload sent to customer.io:
      • fromEmailName: Glints (fixed)
      • fromEmail: [email protected] (fixed)
      • companyName:
        • Table: Companies
          • Column: name
      • salutation:
        • Table: Users
          • Column: firstName (if firstName is empty, then use the email)
      • talentHuntUrl: ${config.get('company.baseUrl')}/talenthunt (config refers to api config)
      • teamUrl: ${config.get('company.baseUrl')}/company/team (config refers to api config)
      • replyToEmail: config.get('talenthunt.manager') (config refers to api config)
      • dashboardUrl: ${config.get('company.baseUrl')}/dashboard (config refers to api config)
  4. Event: company-reject-user-request
    • Title: Oops! Your request for access to {{event.companyName}} on Glints has been rejected.
    • Email Provider: customer.io
    • Template being used: plain html
    • Sender email: [email protected]
    • Recipients: TalentHunt
    • Content:
      <p>Hi {{event.salutation}},</p>
      <p>Oops! Your request to join {{event.companyName}} has been rejected.</p>
      <p>Think it's a mistake? Try speaking to someone from your team.</p>
      <p>If not, create your own company profile here:
          <a href="{{event.url}}">{{event.url}}</a>
      </p>
      
    • Data payload sent to customer.io:
      • fromEmailName: Glints (fixed)
      • fromEmail: [email protected] (fixed)
      • companyName:
        • Table: Companies
          • Column: name
      • salutation:
        • Table: Users
          • Column: firstName (if firstName is empty, then use the email)
      • url: ${config.get('company.baseUrl')}/onboarding (config refers to api config)
  5. Event: job-request-add-group
    • Title: New job to be approved for your group!
    • Email Provider: customer.io
    • Template being used: plain html
    • Sender email: [email protected]
    • Recipients: Group's administrator
    • Content:
      <p>Hi {{event.salutation}},</p>
      <p>{{event.creatorName}} from {{event.companyName}} has just requested to distribute the job "{{event.jobTitle}}" to your group "{{event.groupName}}".</p>
      <p>Approving this request would mean that visitors to your group portal would be able to see this job.</p>
      <p>Simply go to <a href={{event.link}}>{{event.link}}</a> to approve them from the Pending list.</p>
      <p>Thank you!</p>
      
    • Data payload sent to customer.io:
      • fromEmailName: Glints (fixed)
      • fromEmail: [email protected] (fixed)
      • companyName:
        • Table: Companies
          • Column: name
      • salutation:
        • note: group's administrator
        • Table: Users
          • Column: firstName (if firstName is empty, then use the email)
      • creatorName:
        • note: job creator
        • Table: Users
          • Column: firstName (if firstName is empty, then use the email)
      • jobTitle:
        • Table: Jobs
          • Column: title
      • groupName:
        • Table: Groups
          • Column: name
      • link:
        • group.features.employersVersion is NEW: ${config.get('company.baseUrl')}/${group.subdomain}/group/jobs (config refers to api config)
        • others: ${config.get('glints.baseUrl')}/${group.subdomain}/admin-central/jobs (config refers to api config) (will be deprecated in the future)
        • Table: Groups
          • Column: subdomain
          • Column: features.employersVersion (jsonb)
  6. Event: member-request-join-group
    • Title: {{event.memberName}} requests to join your group!
    • Email Provider: customer.io
    • Template being used: plain html
    • Sender email: [email protected]
    • Recipients: Group's administrator
    • Content:
      <p>Hi {{event.salutation}},</p>
      <p>{{event.memberName}} has just requested to join your group "{{event.groupName}}".</p>
      <p>Approving this request would mean that he or she can {{event.msg}}.</p>
      <p>To approve or reject this request, simply go to <a href={{event.link}}>{{event.link}}</a>. They'll be on the Pending List.</p>
      <p>Thank you!</p>
      
    • Data payload sent to customer.io:
      • fromEmailName: Glints (fixed)
      • fromEmail: [email protected] (fixed)
      • salutation:
        • note: group's administrator
        • Table: Users
          • Column: firstName (if firstName is empty, then use the email)
      • memberName: depends on company or individual user
        • Company:
          • Table: Companies
            • Column: name
        • Individual user:
          • Table: Users
            • Column: firstName (if firstName is empty, then use the email)
      • msg: depends on company or individual user
        • Company: <p>Approving this request would mean that he or she can automatically post jobs on ${group.name}.</p>
        • Individual user:<p>Approving this request would mean that he or she can apply directly for your curated jobs.</p>
      • groupName:
        • Table: Groups
          • Column: name
      • link:
        • group.features.employersVersion is NEW: ${config.get('company.baseUrl')}/${group.subdomain}/group/members (config refers to api config)
        • others: ${config.get('glints.baseUrl')}/${group.subdomain}/admin-central/members (config refers to api config) (will be deprecated in the future)
        • Table: Groups
          • Column: subdomain
          • Column: features.employersVersion (jsonb)
  7. Event: send-email-verification-token
    • Title: Last Step in the Hero's Journey: Verify Your Email!
    • Email Provider: customer.io
    • Template being used: plain html
    • Sender email: refers to Data: fromEmail
    • Recipients: New user
    • Content:
      <p>Hey {{event.salutation}}!</p>
      <p>You're amazing for pulling it through thus far, just 1 final step to go!</p>
      <p>All you have to do now is verify your email by clicking:</p>
      <p><a href="{{event.url}}">{{event.url}}</a></p>
      {{event.hero}}
      <p>Cheers,<br>
      {{event.sign}}</p>
      
    • Data payload sent to customer.io:
      • fromEmailName:
        • from glints: Glints (fixed)
        • from whitelabel site: group's name
          • Table: Groups
            • Column: name
      • fromEmail:
        • from glints: [email protected] (fixed)
        • from whitelabel site: group's email
          • Table: Groups
            • Column: features.email (jsonb)
      • salutation:
        • Table: Users
          • Column: firstName (if firstName is empty, then use the email)
      • url: ${baseUrl}?id=${user.id}&token=${emailVerificationToken}
        • baseUrl:
          • from glints:
            • no group:
              • user's role is "CANDIDATE": ${config.get('candidate.baseUrl')}/settings (config refers to api config)
              • otherwise: ${config.get('company.baseUrl')}/settings (config refers to api config)
            • has group:
              • groups.features.employersVersion is "NEW": ${config.get('company.baseUrl')}/${group.subdomain}/settings (config refers to api config)
              • otherwise: ${config.get('glints.baseUrl')}/${group.subdomain}/my-account (config refers to api config) (will be deprecated in the future)
          • from whitelabel site: (config refers to api config)
            ${config.get('glints.baseUrl').split('://').join(`://${grp.features.subdomain}.`)}/settings
            
          • Table: Users
            • Column: id
          • Table: Groups
            • Column: subdomain
            • Column: features.subdomain
          • Table: GroupMembers
            • Column: CandidateId (relates to user.id)
      • hero:
        • from glints: <p>A hero\'s welcome awaits you on the other end.</p>
        • from whitelabel site: empty
      • sign:
        • from glints: The Wizards of Tech at Glints
        • from whitelabel site: group's name
          • Table: Groups
            • Column: name
  8. Event: send-password-reset-token
    • Title: Password Reset: We Got You Homie!
    • Email Provider: customer.io
    • Template being used: plain html
    • Sender email: refers to data's fromEmail
    • Recipients: Recruiter
    • Content:
      <p>Hey {{event.salutation}}!</p>
      <p>Looks like you forgot something eh? Don't worry, we got you!</p>
      <p>Reset your password here:</p>
      <p><a href={{event.url}}>{{event.url}}</a></p>
      <p>Why not name your password after your cat?</p>
      <p>Cheers,<br>
      {{event.sign}}</p>
      
    • Data payload sent to customer.io:
      • fromEmailName:
        • from glints: Glints (fixed)
        • from whitelabel site: group's name
          • Table: Groups
            • Column: name
      • fromEmail:
        • from glints: [email protected] (fixed)
        • from whitelabel site: group's email
          • Table: Groups
            • Column: features.email (jsonb)
      • salutation:
        • Table: Users
          • Column: firstName (if firstName is empty, then use the email)
      • url: ${baseUrl}/forgot-password?id=${user.id}&token=${passwordResetToken}
        • baseUrl:
          • from glints:
            • no group:
              • user's role is "CANDIDATE": config.get('candidate.baseUrl') (config refers to api config)
              • otherwise: config.get('company.baseUrl') (config refers to api config)
            • has group:
              • groups.features.employersVersion is "NEW": config.get('company.baseUrl') (config refers to api config)
              • otherwise: config.get('glints.baseUrl')}/${group.subdomain} (config refers to api config) (will be deprecated in the future)
          • from whitelabel site: (config refers to api config)
            ${config.get('glints.baseUrl').split('://').join(`://${grp.features.subdomain}.`)}/settings
            
          • related schema:
            • Table: Users
              • Column: id
            • Table: Groups
              • Column: subdomain
              • Column: features.subdomain
            • Table: GroupMembers
              • Column: CandidateId (relates to user.id)
      • sign:
        • from glints: The Wizards of Tech at Glints
        • from whitelabel site: group's name
          • Table: Groups
            • Column: name
  9. Event: user-request-join-company
    • Title: Request for access to {{event.companyName}} on Glints
    • Email Provider: customer.io
    • Template being used: plain html
    • Sender email: [email protected]
    • Recipients: Company administrator
    • Content:
      <p>Hi {{event.salutation}},</p>
      <p>{{event.requestee}} has requested for access to {{event.companyName}} on Glints. Team members can post a job under the company
          account, and review applications. You can approve / reject the requests via the buttons below:</p>
      <table>
          <tr>
              <td>
                  <a href="{{event.approve}}">
                      <button style="height: 30px; padding: 0 15px; background-color: #51C3C4; border-color: #51C3C4; font-family: Lato, sans-serif;
           color: white; text-transform: uppercase; font-weight: 700; letter-spacing: 0.1em; font-size: 12px; border-radius: 4px;
           margin-right: 10px; cursor: pointer">
                          Approve
                      </button>
                  </a>
              </td>
              <td>
                  <a href="{{event.reject}}">
                      <button style="height: 30px; padding: 0 15px; background-color: #D26F6D; border-color: #D26F6D; font-family: Lato, sans-serif;
           color: white; text-transform: uppercase; font-weight: 700; letter-spacing: 0.1em; font-size: 12px; border-radius: 4px; cursor: pointer">
                          Reject
                      </button>
                  </a>
              </td>
          </tr>
      </table>
      <p>P.S. Make hiring a team sport! Thought of someone else you would like to invite? Click
          <a href="{{event.url}}">here</a> to invite them to join</p>
      <p>P.P.S. Sometimes, "post & pray" as a recruitment strategy simply doesn't cut it. Most top talent are passive and not out
          there applying for jobs, which makes it really hard to find them.</p>
      <p>Which is why we launched our
          <a href="{{event.talentHuntUrl}}">Talent Hunt Solution</a>. We want to help companies like you get an edge in hiring to find the right talent faster to
          grow your business. We’ve worked with companies such as DBS & Carousell to find the right candidates, maybe we can help
          {{event.companyName}} too?</p>
      <p>Its free to get started, and you will only pay a success fee after hiring the right person successfully!
          <a href="{{event.talentHuntUrl}}">Check it out</a> or just reply to this email if you are interested to have a chat :)</p>
      
    • Data payload sent to customer.io:
      • fromEmailName: Glints (fixed)
      • fromEmail: [email protected] (fixed)
      • salutation:
        • note: company administrator
        • Table: Users
          • Column: firstName(if firstName is empty, then use email)
      • companyName:
        • Table: Companies
          • Column: name
      • approve: ${config.get('company.baseUrl')}/dashboard/admins?token=${token}&status=APPROVED&CompanyId=${company.id}&UserId=${user.id}&email=${user.email} (config refers to api config)
        • Table: Users
          • Column: id
          • Column: email
        • Table: Companies
          • Column: id
      • reject: ${config.get('company.baseUrl')}/dashboard/admins?token=${token}&status=REJECTED&CompanyId=${company.id}&UserId=${user.id}&id=${pendingUserCompany.id}&email=${user.email} (config refers to api config)
        • Table: Users
          • Column: id
          • Column: email
        • Table: Companies
          • Column: id
        • Table: UserCompanies
          • Column: id
      • url: ${config.get('company.baseUrl')}/company/team (config refers to api config)
      • talentHuntUrl: ${config.get('company.baseUrl')}/talenthunt (config refers to api config)
      • requestee: firstName (email) (if firstName is empty, then use the email)
        • Table: Users
          • Column: firstName
          • Column: email
      • replyToEmail: config.get('talenthunt.manager') (config refers to api config)
  10. Event: send-job-posted-email
    • Title: Congratulations! You've posted a job on {{event.brand}}. Here's what you should know.
    • Email Provider: customer.io
    • Template being used: plain html
    • Sender email: [email protected]
    • Recipients: Job creator
    • Content:
      <div>
          <p>Dear {{event.salutation}},</p>
      </div>
      <div>
          <p>Thank you for posting your job on {{event.brand}}.</p>
      </div>
      <div>
          <p>Over the next few days, you will be receiving quality candidates for the "{{event.jobTitle}}" position. </p>
      </div>
      <div>You will be able to view these candidates' information, including their cover letter, work experiences and </div>
      <div>education information. {{event.paragraph}}
          <p></p>
      </div>
      <div>
          <p>If you have any queries, please feel free to reach out to me directly. I look forward to assisting you with your </p>
      </div>
      <div>hiring needs.
          <p></p>
      </div>
      <div>
          <p>P.S. Sometimes, "post &amp; pray" as a recruitment strategy simply doesn't cut it. Most top talent are passive and not
              out there applying for jobs, which makes it really hard to find them.</p>
      </div>
      <div>
          <p>Which is why we launched our
              <a href="{{event.talentHuntUrl}}">Talent Hunt Solution</a>. We want to help companies like you get an edge in hiring to find the right talent faster
              to grow your business. </p>
      </div>
      <div>We’ve worked with companies such as DBS &amp; Carousell to find the right candidates, maybe we can help {{event.companyName}}
          too?
          <p></p>
      </div>
      <div>
          <p>Its free to get started, and you will only pay a success fee after hiring the right person successfully!
              <a href="{{event.talentHuntUrl}}">Check it out</a> or just reply to this email if you are interested to have a chat :)</p>
      </div>
      <div>
          <p>Cheers,
              <br>
          </p>
      </div>
      <div>{{event.brand}}
          <p></p>
      </div>
      
    • Data payload sent to customer.io:
      • fromEmailName: Glints (fixed)
      • fromEmail: [email protected] (fixed)
      • salutation:
        • Table: Users
          • Column: firstName(if firstName is empty, then use email)
      • brand:
        • from glints: Glints
        • otherwise:
          • Table: Groups
            • Column: name
      • job.title:
        • Table: Jobs
          • Column: title
      • companyName:
        • Table: Companies
          • Column: name
      • paragraph
        • if config.get('features.payment') exists (config refers to api config): If you wish to contact these candidates, you can choose to pay S$100 at anytime, and this one-time fee will unlock all candidate applications (current and future applications).
        • otherwise: If you wish to contact these candidates, you can simply go to here:</p><p>${urls}</p>
          • urls:
            • group.features.employersVersion is "NEW": ${config.get('company.baseUrl')}/${group.subdomain}/review/${job.id}/candidates (config refers to api config)
            • otherwise: ${config.get('glints.baseUrl')}/${group.subdomain}/jobs/${job.id}/applications (config refers to api config) (will be deprecated in the future)
            • Table: Jobs
              • Column: id
            • Table: Groups
              • Columns: subdomain
              • Columns: features.employersVersion
      • talentHuntUrl: ${config.get('company.baseUrl')}/talenthunt (config refers to api config)
      • replyToEmail: config.get('talenthunt.manager') (config refers to api config)
  11. Event: send-applicant-qualified-email
    • Title: New Qualified Applicant for ${job.title} under ${job.Groups.map(group => group.name).join('/')}
    • Email Provider: mailgun
    • Template being used: plain html
    • Sender email: [email protected]
    • Recipients: Company owners
    • Content:
      <p>Hi ${salutation},</p>
      <p>Congratulations! The program managers of ${job.Groups.map(group => group.name).join('/')} have just reviewed 
      and approved a new applicant for your opening of ${job.title}, posted for ${job.Company.name}. 
      You may review the application here:</p>
      <p>${urls}</p>
      <p>Thank you!</p>
      
    • Data:
      • from: Glints employers@glints.com
      • to(recipient's email):
        • Table: Users
          • Column: email
      • job title:
        • Table: Jobs
          • Column: title
      • job group:
        • Table: Groups
          • Column: name
      • salutation:
        • Table: Users
          • Column: firstName(if firstName is empty, then use email)
      • company name:
        • Table: Companies
          • Column: name
      • urls:
        • no group: <a href=${reviewCandidateUrl}>${reviewCandidateUrl}</a>
          • reviewCandidateUrl: ${config.get('company.baseUrl')}/review/${job.id}/candidates/${application.id} (config refers to api config)
            • Table: Jobs
              • Column: id
            • Table: Applications
              • Column: id
        • with groups:
          • group.features.employersVersion is "NEW": ${config.get('company.baseUrl')}/${group.subdomain}/review/${job.id}/candidates/${application.id} (config refers to api config)
          • otherwise: ${config.get('glints.baseUrl')}/${group.subdomain}/jobs/${job.id}/applications/${application.id} (config refers to api config) (will be deprecated in the future)
          • Table: Jobs
            • Column: id
          • Table: Applications
            • Column: id
          • Table: Groups
            • Columns: subdomain
            • Columns: features.employersVersion
  12. Event: send-application-received-email
    • Existing group wants to screen through each application before they reach the company:
      • Title: New Application to ${job.title} under ${groupAdmin.Group.name}
      • Email Provider: mailgun
      • Template being used: plain html
      • Sender email: [email protected]
      • Recipients: Group administrator
      • Content:
        <p>Hi ${salutation},</p>
        <p>There is a new application made to ${job.title} posted by ${job.Company.name} under ${groupAdmin.Group.name}. 
        You may review it for ${job.Company.name} at <a href=${reviewCandidateUrl}>${reviewCandidateUrl}</a>.</p>
        <p>Thank you!</p>
        
      • Data:
        • to (recipient's email):
          • Table: Users
            • Column: email
        • job title:
          • Table: Jobs
            • Column: title
        • job group:
          • Table: Groups
            • Column: name
        • salutation:
          • Table: Users
            • Column: firstName(if firstName is empty, then use email)
        • company name:
          • Table: Companies
            • Column: name
        • reviewCandidateUrl:
          • group.features.employersVersion is "NEW": ${config.get('company.baseUrl')}/${groupAdmin.Group.subdomain}/review/${job.id}/candidates/${application.id} (config refers to api config)
          • otherwise: ${config.get('glints.baseUrl')}/${groupAdmin.Group.subdomain}/jobs/${job.id}/applications/${application.id} (config refers to api config) (will be deprecated in the future)
          • Table: Jobs
            • Column: id
          • Table: Applications
            • Column: id
          • Table: Groups
            • Column: subdomain
    • Otherwise
      • Title: Congratulations -You Have a New Applicant!
      • Email Provider: mailgun
      • Template being used: plain html
      • Sender email:
      • Recipients: Company owner
      • cc:
        • Table: Groups
          • Column: features.email
      • Attachments: applicant's resume
        • Location: AWS s3
        • Table: Users
          • Column: resume
      • Content:
        <p>Dear ${salutation},</p>
        <p>Congratulations! You've received an application from ${applicantSalutation} for your ${jobType} job "${job.title}" at ${job.Company.name}.</p>
        ${applicant.firstName ? `
        <p>First Name: ${applicant.firstName}</p>` : ''} ${applicant.lastName ? `
        <p>Last Name: ${applicant.lastName}</p>` : ''} ${year && school ? `
        <p>Education Status: ${year >= 0 ? `Year ${year} in`: 'has graduated from'} ${school}</p>` : ''} ${education && education.Degree
        && education.Degree.name ? `
        <p>Education Level: ${education.Degree.name}</p>`: ''}
        <p>${attachments.length ? `${applicantSalutation}'s resume and application attachments are attached below.`: ''} To find out
            more about ${applicantSalutation}, you can view his/her profile here:</p>
        <p>${urls}</p>
        <p>We encourage you to check out ${applicantSalutation}'s profile as soon as possible, and reply within the next 3 business
            days as the best candidates don't stay on the market for very long.</p>
        <p>Meanwhile, if there's anything we can assist you with, simply hit 'Reply' to let us know!</p>
        <p>P.S. Sometimes, "post & pray" as a recruitment strategy simply doesn't cut it. Most top talent are passive and not out there
            applying for jobs, which makes it really hard to find them.</p>
        <p>Which is why we launched our
            <a href=${talentHuntUrl}>Talent Hunt Solution</a>. We want to help companies like you get an edge in hiring to find the right talent faster to
            grow your business. We’ve worked with companies such as DBS & Carousell to find the right candidates, maybe we can help
            ${job.Company.name} too?</p>
        <p>Its free to get started, and you will only pay a success fee after hiring the right person successfully!
            <a href=${talentHuntUrl}>Check it out</a> or just reply to this email if you are interested to have a chat :)</p>
        <p>Best Regards,
            <br> Glints
        </p>
        
      • Data:
        • replyTo: config.get('talenthunt.manager') (config refers to api config)
        • salutation:
          • note: company owner
          • Table: Users
            • Column: firstName(if firstName is empty, then use email)
        • applicantSalutation:
          • note: applicant
          • Table: Users
            • Column: firstName(if firstName is empty, then use email)
        • jobType:
          • note: will be converted to normal English
          • Table: Jobs
            • Column: type
        • job title:
          • Table: Jobs
            • Column: title
        • company name:
          • Table: Companies
            • Column: name
        • applicant firstName and lastName:
          • Table: Users
            • Column: firstName, lastName
        • year:
          • note: if in school, calculate programmatically
          • Table: Experiences
            • Column: startDate, endDate
        • school:
          • Table: Schools
            • Column: name
        • Education Level:
          • Table: Degrees
            • Column: name
        • urls:
          • group.features.employersVersion is "NEW": ${config.get('company.baseUrl')}/${group.subdomain}/review/${job.id}/candidates/${application.id} (config refers to api config)
          • otherwise: ${config.get('glints.baseUrl')}/${group.subdomain}/jobs/${job.id}/applications/${application.id} (config refers to api config)
          • Table: Jobs
            • Column: id
          • Table: Applications
            • Column: id
          • Table: Groups
            • Column: subdomain
        • talentHuntUrl: ${config.get('company.baseUrl')}/talenthunt (config refers to api config)
    • To Applicant:
      • Title: Whoosh, Your Application Is Sent!
      • Email Provider: mailgun
      • Template being used: plain html
      • Sender email: refers Data from
      • Recipients: Applicant
      • Content:
        <p>Hey ${applicantSalutation},</p>
        <p>Whoosh! Your application to ${job.Company.name} for the opening "${job.title}" has been sent through successfully. Phew!</p>
        ${pigeons} Do check out and apply to more opportunities similar to ${job.title} at
        <a href=${jobsURL}>${jobsURL}</a>
        </p>
        <p>You should also hear from ${job.Company.name} very soon, as we encourage companies to reply within 3 business days of receiving
            your application.</p>
        <p>Meanwhile, if you can't wait to find out what your application status is, login to your ${sign} Dashboard to check it at
            <a href=${applicationsURL}>${applicationsURL}</a>
            . We recommend you do this at least twice a week (weekends are great for this!).</p>
        <p>As usual, if you have any queries, please feel free to reach out to us directly. Just hit 'Reply'!</p>
        <p>Cheers,
            <br> ${sign}
        </p>
        
      • Data:
        • from:
          • from glints: Glints <[email protected]>
          • from whitelabel: ${grp.name} <${grp.features.email}>
            • Table: Groups
              • Column: name
              • Column: features.email (jsonb)
        • to (recipient's email):
          • Table: Users
            • Column: email
        • applicantSalutation:
          • Table: Users
            • Column: firstName(if firstName is empty, then use email)
        • company name:
          • Table: Companies
            • Column: name
        • job title:
          • Table: Jobs
            • Column: title
        • pigeons:
          • from glints: '

            While Glints-branded carrier pigeons ferry your application over, you shouldn\'t stop at this! '

          • from whitelabel: '

            '

        • jobsURL: ${baseUrl}/opportunities/jobs
          • baseUrl:
            • from glints: ${config.get('candidate.baseUrl')} (config refers to api config)
            • from whitelabel: (config refers to api config)
              config.get('glints.baseUrl').split('://').join(`://${grp.features.subdomain}.`)
              
            • Table: Groups
              • Column: features.subdomain (jsonb)
        • applicationsURL: ${baseUrl}/dashboard/jobs
          • note: baseUrl refers to jobsUrl's baseUrl
        • sign
          • from glints: Glints
          • from whitelabel:
            • Table: Groups
            • Column: name
  13. Event: send-application-recommended-email
    • To company owners:
      • Title: New Recommended Applicant for ${job.title} under ${group.name}
      • Email Provider: mailgun
      • Template being used: plain html
      • Sender email: [email protected]
      • Recipients: Company owners
      • Content:
        <p>Hi ${salutation},</p>
        <p>Congratulations! The program managers of ${group.name} have just recommended a new candidate for your opening of ${job.title},
            posted for ${job.Company.name}. You may review the application here:</p>
        <p>${urls}</p>
        <p>Thank you!</p>
        
      • Data:
        • job.title:
          • Table: Jobs
            • Column: title
        • group.name:
          • Table: Groups
            • Column: name
        • salutation:
          • Table: Users
            • Column: firstName(if firstName is empty, then use email)
        • company name:
          • Table: Companies
            • Column: name
        • urls:
          • exist group
            • group.features.employersVersion is "NEW": ${config.get('company.baseUrl')}/${group.subdomain}/review/${job.id}/candidates/${application.id} (config refers to api config)
            • otherwise: ${config.get('glints.baseUrl')}/${group.subdomain}/jobs/${job.id}/applications/${application.id} (config refers to api config) (will be deprecated in the future)
            • Table: Jobs
              • Column: id
            • Table: Applications
              • Column: id
            • Table: Groups
              • Column: subdomain
          • otherwise: <a href=${reviewCandidateUrl}>${reviewCandidateUrl}</a>
            • reviewCandidateUrl: ${config.get('company.baseUrl')}/review/${job.id}/candidates/${application.id} (config refers to api config)
            • Table: Jobs
              • Column: id
            • Table: Applications
              • Column: id
    • To applicant:
      • Title: You've Been Recommended for ${job.title} at ${job.Company.name}!
      • Email Provider: mailgun
      • Template being used: plain html
      • Sender email: [email protected]
      • Recipients: Applicant
      • Content:
        <p>Hi ${applicantSalutation},</p>
        <p>We are pleased to inform you that you have been recommended for ${job.title} at ${job.Company.name}.</p>
        <p>All the best in your job hunting!</p>
        
      • Data:
        • job.title:
          • Table: Jobs
            • Column: title
        • job.Company.name
          • Table: Companies
            • Column: name
        • applicantSalutation
          • Table: Users
            • Column: firstName(if firstName is empty, then use email)
  14. Event: send-recommendation-email
    • Title: We've picked a new candidate for you for "${job.title}"!
    • Email Provider: mailgun
    • Template being used: plain html
    • Sender email: Recommendation's associated creator's email
    • Recipients: Company owners
    • Attachment: candidate's resume
      • File name format(in email): (candidate.lastName_)(candidate.firstName_)resume.extension
      • Location: AWS s3
      • Table: Users
        • Column: resume
    • Content:
      <p>Dear ${salutation},</p>
      <p>Check this out! We've found a new potential candidate for you. The best candidates get snapped up quickly so respond to ${candidateUrl}
          now if you're interested!</p>
      <p>${candidateSalutation} will automatically be skipped and marked as “Unsuitable” if you do not connect within a month.</p>
      <p>Feel free to reach out to us if you have any other questions!</p>
      <p>Cheers,
          <br> ${creatorSalutation}
      </p>
      
    • Data:
      • job.title:
        • Table: Jobs
          • Column: title
      • salutation:
        • note: company owner
        • Table: Users
          • Column: firstName(if firstName is empty, then use email)
      • candidateUrl: (config refers to api config)
        <a href=${`${config.get('company.baseUrl')}/talents/${candidate.id}`}>${candidateSalutation}</a>
        
        • Table: Users
          • Column: id
      • candidateSalutation:
        • note: candidate
        • Table: Users
          • Column: firstName(if firstName is empty, then use email)
      • creatorSalutation
        • note: recommendation's associated creator
        • Table: Users
          • Column: firstName(if firstName is empty, then use email)