Implementing ChartHop
...
Applicant tracking systems
Greenhouse

Troubleshooting and FAQ

ďťż

This section covers a series of potential issues you may run into when setting up or configuring the Greenhouse integration app, as well as provides answers to commonly asked questions.

Harvest API key

Why is my Harvest API key not working?

If you're having trouble with your Harvest API key, it's may most likely be due to your setup permissions. Please refer to the table below for a complete list of the necessary permissions.

Type

Permissions

Applications

  • GET: Retrieve Application
  • GET: List Applications

Candidates

  • GET: Retrieve Candidate
  • GET: List Candidates

Users

  • GET: Retrieve User
  • GET: List Users
  • GET: List User Future Job Permissions
  • GET: List User Job Permissions
  • GET: List Pending Approvals
  • PUT: Add a job permission

Offers

  • GET: List Application's Offers
  • GET: Retrieve Application's Current Offer
  • GET: Retrieve Offer
  • GET: List Offers

Departments

  • GET: Retrieve Department
  • GET: List Departments
  • POST: Create a new department
  • PATCH: Update a department

Jobs

  • GET: Retrieve Job
  • GET: List Jobs
  • PATCH: Update Job
  • POST: Create a new job
  • PUT: Replace hiring team

Job posts

  • GET: List Job Posts
  • GET: Retrieve Job Post for Job
  • GET: List Job Posts for Job
  • PATCH: Update job posts

Job stages

  • GET: Retrieve Job Stage
  • GET: List Job Stages
  • GET: List Job Stages for Job

Job openings

  • GET: List Openings For a Job
  • POST: Create openings
  • DELETE: Delete openings
  • PATCH: Edit openings

Offices

  • GET: Retrieve Office
  • GET: List Offices
  • POST: Create a new office
  • PATCH: Update an office

User roles

  • GET: List user roles

If you are still unable to complete this step after attempting the troubleshooting options above, reach out to [email protected].

Permissions

Which roles are able to use the Greenhouse integration?

There are two OOTB access levels in ChartHop specifically designed for Recruiters: 

  1. Recruiting Editor: These users are allowed to view and make changes to open jobs, including target compensation levels and sensitive jobs. They are not allowed to make changes to, or access sensitive data about current employees, other than those they manage. This permission is generally intended for Recruiting roles or those managing the ATS.
  2. Recruiting View: These users are allowed to view sensitive information about open jobs only, including target compensation levels and viewing all sensitive jobs. They are not allowed to make changes to the primary timeline, or access sensitive information about current employees other than those they manage.

Other access levels with the ability to open roles: 

  • Primary Editor: These users are allowed to view all information, and make official, permanent changes to the primary timeline. This access should be restricted tightly and limited to a few authorized individuals in HR, Finance, or similar roles.
  • Owner: These users are allowed full access to everything, including the ability to change user permissions, configure integrations, and alter organization-wide settings. Because of the scope involved, this access should be tightly restricted

Metrics

Where do metrics come from?

ChartHop, once daily, pulls a list of candidates in the ATS, and updates metrics based on the stages that the candidates are in.

For more information about metrics data, reach out to ChartHop’s Professional Services team.

Data sync updates

When do updates for ChartHop to Greenhouse job data flows push over?

Updates for ChartHop to Greenhouse job data flows push over under the following cases:

  • ďťżIf a job in ChartHop has not already been mapped to a Greenhouse Job/Opening, the initial sync occurs when the job is set to Active recruiting status in Primary.
  • If a job in ChartHop has already been mapped to a Greenhouse Job/Opening, updates sync over to Greenhouse regardless of recruiting status.
ďťż

When do ChartHop jobs get created for Greenhouse to ChartHop job data syncs?

ChartHop jobs are created for Greenhouse to ChartHop job data syncs during the following:

  • If a Greenhouse Job/Opening has not been mapped to a job in ChartHop, a new job is created in ChartHop if the Greenhouse Opening is Open and Greenhouse Job status is either Open or Draft.
  • If a Greenhouse Job/Opening has already been mapped to a job in ChartHop, then updates sync over to ChartHop regardless of status until the job is filled. After that, no updates are synced.

How do I safely clean up roles that were accidentally duplicated during the sync?

Contact [email protected] to fix this.

Job data

Why did the job data flow fail?

In case a job fails to be properly created, you can check for the following:

  1. Confirm that your API and Webhook credentials are correct.
  2. Confirm that your Hiring Manager and Recruiter have accounts in both ChartHop and Greenhouse with the same email address.
  3. Private and Standard Job Admin levels are supported by default. Custom levels are also supported, however, not by default. (we attempt to give Hiring Managers and Recruiters Job Admin levels to their assigned Greenhouse Jobs).
    • Ensure that the default Job Admin: Standard and Job Admin: Private levels have not been removed or renamed.
    • If the customer has a custom Job Admin role level instead in Greenhouse (thereby the default Job Admin levels above do not exist):
      • Ensure that the Job Admin role level they want to give to Hiring Managers includes the word "Hiring Manager" (e.g., could be called "ChartHop Hiring Manager").
      • Ensure that the Job Admin role level they want to give to Recruiters includes the word "Recruiter" (e.g., could be called "ChartHop Recruiter").
  4. Ensure that your departments and teams match between ChartHop and Greenhouse. When matching departments and teams between ChartHop and Greenhouse, the integration attempts to match on both the name, but also any aliases that exist in ChartHop.
  5. Confirm that your Job Templates names are an exact match between ChartHop and Greenhouse.
  6. Check whether you have changed the standard required fields in Greenhouse (e.g., if you have set a non-standard default or custom field to be required for job creation)
    • If you have changed the required fields, contact your ChartHop implementation specialist so that they may ensure that your fields get mapped and passed in correctly.
  7. Confirm your Greenhouse ID matches the greenhouse Job Id/opening ID combination. To find the opening ID, you can export Greenhouse Jobs from the apps page, or reach out to [email protected]. Manually editing the GreenhouseID in ChartHop will change what job it is connected to.

Greenhouse comes with a set of default options for Employment types. If you change the Employment type options in your Greenhouse instance, please contact [email protected] in order to configure them appropriately.

ďťż

Why did the new hire data flow fail?

In the case a hiring fails, you can check the following:

  1. Confirm that an email has been provided for the candidate (either personal or work email).
  2. Ensure that the Greenhouse Job ID field is mapped to the correct job. You can contact [email protected] if you need assistance with this (we do not recommend changing this field manually).
  3. Be aware that we do not support internal transfers. If a marked new hire in Greenhouse already fills another job in ChartHop, we recommend instead manually transferring the internal transfer in ChartHop directly.

Job codes

How does job code matching work by default?

Job code matching works in the following ways:

  1. If a job in ChartHop has a job code attached to it, then when syncing to Greenhouse, the integration attempts to match the jobCode.code to the Greenhouse Job’s Requisition ID.
  2. If a match is found, an opening is created underneath that Greenhouse Job, and the [jobCode.name](<http://jobCode.name>) syncs over to the Greenhouse Job name INSTEAD of the ChartHop Job title
  3. If no match is found, the integration continues to use the default fallback logic (e.g., matching under Title, Title and location, or None).

For example, let’s say there’s a Greenhouse Job with Requisition ID of ENG-SR and title of Sr. Engineer. We create a job code in ChartHop, with the jobCode.code being ENG-SR and [jobCode.name](<http://jobCode.name>) of Senior Engineer:

  • If we attach the job code to a ChartHop Job that has the job title of Engineer II , when syncing over to Greenhouse, the integration creates an opening to match underneath the existing Greenhouse Sr. Engineer job due to a match on the Requisition ID (ENG-SR):
    • Then, the job title in Greenhouse changes to Senior Engineer to match the ChartHop jobCode.name.
    • For this reason, we generally expect users to keep job codes consistent with existing Greenhouse Jobs.
ďťż

Can I match by job code and still map a ChartHop Job Title to a Greenhouse Job Title?

Yes you can! This can be done by disabling the jobcode_name to job.requisition_name field mapper in Greenhouse. For additional help with field mappings, please contact support at [email protected]ďťż

By doing so, the expected behavior is the same as the above, however, ChartHop won’t utilize the job code name and instead uses ChartHop Job Title.

For example, if you have an Operations Associate job in ChartHop with a job code attached that has a job code name of Operations Roles:

  • If ChartHop matches using the jobcode to a Greenhouse Job, then we’ll utilize the ChartHop Job Title Operations associate instead of the job code name of Operations Roles.
  • If ChartHop doesn’t find any matches, it creates a new Greenhouse Job, passing in:
    • The jobcode.code as the Greenhouse Requisition ID
    • The ChartHop Job Title as the Greenhouse Job Title

Job status

Why was the Recruit status for a ChartHop job changed to Pending?

Recruit status can change to Pending for one of three reasons:

  1. The status was manually changed.
  2. The integration received a new hire webhook (pending new hire) for the job.
  3. Changing the Offer Accept Date effectively dates Recruit status changing to Pending on the date selected for the offer acceptance date.

ATS Setup

How should I support the setup for my ATS when there are different Departments or Teams between my ATS and payroll system?

The best practice is to leverage aliases. When aliases are present, if the Department or Team name doesn’t work, ChartHop attempts with aliases, next.

For example, if the Department in Greenhouse is Contractor but the Department in ChartHop is Contract, if there is an alias attached to the ChartHop Department called Contractor, ChartHop will be able to sync into Greenhouse’s Contractor department.

New hire data

What does the new hire data webhook pull in? Can I pull in custom fields?

This can be referenced in the field mappers table, with anything from the candidate or offer endpoints

Webhook field mappers
Webhook field mappers
ďťż

We also support additional custom field mapping to custom fields in Greenhouse that are tied to the offer object in Greenhouse.