11min

Syncing data to/from Greenhouse

In this section, we cover the process for setting up data syncs between ChartHop and Greenhouse.

1. Syncing details

With the Greenhouse app enabled, ChartHop's open jobs list becomes the single source of truth for open jobs. Recruiters, hiring managers, financial planners, and team leads can all look at ChartHop for a realtime view of which roles are open and how recruiting is going, without needing access to Greenhouse.

When a new open job in ChartHop is set to Active recruiting status, a req will automatically be created in Greenhouse. That same opening will be closed in Greenhouse if the open job is set back to an inactive status.

Setting a job as active will automatically create the req in Greenhouse
Setting a job as active will automatically create the req in Greenhouse

After the ChartHop job is created and set to Active, if you wish to have your job set as either Draft or Open in Greenhouse, be sure to configure those settings in your linked job template.

Greenhouse jobs and openings are matched to ChartHop open roles either through the use of explicit job id and opening id values, or via the location and name of the open role.

By default, ChartHop jobs are matched to Greenhouse jobs by job code. If no job codes exist, or Match Jobs By Job Code is disabled in the Greenhouse app settings, the initial mappings will, instead, be determined by your Group Job Openings settings (e.g., Title, Title and Location, or None). Once the initial mappings are set, they will be explicitly tied through the job id and opening id values.

ChartHop stores both the job id and opening id in the greenhouseId custom field, separated by a slash.

For example, if greenhouseId has a value of 123/456, that means job id has a value of 123 and opening id has a value of 456.

Creating a job generates the greenhouseId denoted as jobid/openingid
Creating a job generates the greenhouseId denoted as jobid/openingid

If an open job in ChartHop does not have a greenhouseId field set, the app will match jobs by comparing name and location.

For example, an open role in ChartHop with the name 'Software Engineer', in New York, will be matched with a job in Greenhouse with the same name and location. If such a job does not exist in Greenhouse, it will be created automatically.

Once an open role is hired in Greenhouse, the job opening in ChartHop is set to pending status, and the hired candidate is scheduled as a hire for that job on their start date.

2. Initial housekeeping

If you're using a fresh Greenhouse account without any open roles, or you plan to purge open roles from Greenhouse and start over in ChartHop, you can skip this section.

If you've been using a Greenhouse account with open roles that need to remain intact, you can still use ChartHop as the system of record for open roles. To do this, you will need to export open roles from Greenhouse, import them into ChartHop manually, then the sync can take over with automatic updates.

The export process described below requires that the Greenhouse ATS app be installed and configured beforehand.

Select the Export Greenhouse Jobs button
Select the Export Greenhouse Jobs button

Follow the steps below to import your open roles from Greenhouse to ChartHop. You will only need to do this once:

  1. Select the Export Greenhouse Jobs button on the Greenhouse app page, and save the CSV. Open it in Excel or Google Sheets.

  2. Remove any roles that are not on your hiring plan, for example: test jobs and inactive roles
  3. Ensure that every role has a value for Manager. You should also set target comp (base and variable) for the roles if possible.
  4. Save the edited file as a CSV, and upload it from the Import CSV page under the hiring plan tab

Once the upload is complete, all open jobs in ChartHop will mirror open jobs in Greenhouse. From this point forward, use ChartHop as the system of record for open roles.

3. Synced data

Once the Greenhouse ATS app has been properly set up, ChartHop will be able to pull Greenhouse data into your ChartHop Org.

The table below lists all fields that are synced from Greenhouse to ChartHop during a sync. In the first column, we list the name of the field in ChartHop, and in the second column, we list the name of the field in Greenhouse.

ChartHop field

Greenhouse field

Transform type

req

opening.opening_id

one-to-one

recruit

opening.status

map

createdate

opening.opened_at

one-to-one

title

job.name

one-to-one

employment

job.custom_fields.employment_type

map

sensitive

job.confidential

boolean

department

job.departments

groups

location

job.offices

groups

hiremgr

job.hiring_team.hiring_managers[0].id, job.hiring_team.hiring_managers[0].name

person

recruiter

job.hiring_team.recruiters[0].id, job.hiring_team.recruiters[0].name

person

name.first

candidate.first_name

one-to-one

name.last

candidate.last_name

one-to-one

contact.homeemail

candidate.email_addresses[?(@.type == 'personal' || @.type == 'other')].value.first()

one-to-one

contact.workemail

candidate.email_addresses[?(@.type == 'work')].value.first()

one-to-one

contact.mobilephone

candidate.phone_numbers[0].value

one-to-one

startdate

offer.starts_at

one-to-one

currency

offer.custom_fields.salary.unit

first

base

offer.custom_fields.salary.value, offer.custom_fields.salary

first

variable

offer.custom_fields.bonus.value, offer.custom_fields.bonus, offer.custom_fields.variable_compensation.value, offer.custom_fields.variable_compensation, offer.custom_fields.variable.value, offer.custom_fields.variable

first

grantshares

offer.custom_fields.stock_option.value, offer.custom_fields.stock_option, offer.custom_fields.equity.value, offer.custom_fields.equity

first

userid

user.id

one-to-one

name

user.name

one-to-one

email

user.primary_email_address

one-to-on

4. Synced data reconciliation

You may run into data inconsistencies between your ATS and ChartHop due to conditions such as sync failures or changes in custom field mapping. To handle such cases, you can enable the Greenhouse app's Reconciliation feature.

When enabled, the reconciliation performs an evaluation, and amends any discrepancies in open jobs between ChartHop and Greenhouse along with the fields (e.g., Department, Hiring Manager, or mapped custom fields) to existing mapped jobs.

Select the Sync Greenhouse Jobs button to manually trigger a reconcilliation
Select the Sync Greenhouse Jobs button to manually trigger a reconcilliation

If the Run Daily option is enabled, reconciliations are triggered on a daily basis. You can manually trigger a sync by selecting the Sync Greenhouse Jobs button located at the base of the Greenhouse app settings page.

ÔĽŅ