Configure Greenhouse as a data pipeline source

Set up Greenhouse as a data pipeline source to extract recruiting data, such as applications, candidates, jobs, offers, and scorecards, from the Greenhouse Harvest API and sync it to your destination.

Use this guide to review the prerequisites, connect Greenhouse as a data pipeline source, configure the pipeline, and understand the supported objects, sync modes, schema handling, and limitations.

Features supported

The following features are supported when you use Greenhouse as a pipeline source:

  • Cloud connectivity: Connects to the Greenhouse Harvest API over https. An on-prem agent is not required.
  • Custom domains: Supports Greenhouse custom subdomains, such as https://acme.greenhouse.io, in addition to the default https://harvest.greenhouse.io.
  • Object-level selection: Choose which Greenhouse objects to sync to your destination.
  • Sync modes: Supports full sync and incremental sync, configured for each object.
  • Custom fields: Discovers your tenant's Greenhouse custom fields and syncs them as columns on the objects that support them.
  • Schema drift handling: Choose to auto-sync new fields or block new fields when the source schema changes.
  • Field-level data protection: Hash sensitive fields before they reach your destination.
  • Configurable sync frequency: Schedule syncs with a time-based interval or a cron expression.

Prerequisites

Complete the following requirements before you connect Greenhouse as a data pipeline source:

  • A Greenhouse account with access to the Harvest API.

REQUIRED PERMISSIONS

Greenhouse data pipelines read data only. Use the Harvest OAuth scopes field to request read (:list) scopes for the objects you plan to sync when you create the connection. The connection requests the default scopes, which include write scopes, if you leave this field blank. Refer to Recommended scopes for the full list.

The harvest:users:list scope is always included when you select specific scopes.

Select the following Harvest API read scopes in the Harvest OAuth scopes field to sync the supported Greenhouse objects:

Harvest API read scopes
  • harvest:applications:list
  • harvest:application_stages:list
  • harvest:approval_flows:list
  • harvest:attachments:list
  • harvest:candidates:list
  • harvest:close_reasons:list
  • harvest:custom_fields:list
  • harvest:custom_field_options:list
  • harvest:custom_field_departments:list
  • harvest:custom_field_offices:list
  • harvest:departments:list
  • harvest:email_templates:list
  • harvest:interviews:list
  • harvest:job_hiring_managers:list
  • harvest:job_interview_stages:list
  • harvest:job_owners:list
  • harvest:job_posts:list
  • harvest:jobs:list
  • harvest:notes:list
  • harvest:offers:list
  • harvest:offices:list
  • harvest:openings:list
  • harvest:prospect_pools:list
  • harvest:referrers:list
  • harvest:rejection_reasons:list
  • harvest:scorecard_question_answers:list
  • harvest:scorecards:list
  • harvest:sources:list
  • harvest:user_emails:list
  • harvest:users:list

Supported connection types

Greenhouse data pipelines support the OAuth 2.0 authorization code grant, which authenticates against the Greenhouse Harvest v3 API.

API key authentication isn't supported for Greenhouse data pipelines.

Connect to Greenhouse

Complete the following steps to connect Greenhouse as a data pipeline source:

Connect to Greenhouse
1

Select Create > Connection.

2

Search for Greenhouse on the New connection page and select it.

3

Enter a name in the Connection name field.

4

Use the Location drop-down menu to select the project where you plan to store the connection.

5

Optional. Enter your Greenhouse custom domain, such as acme.greenhouse.io, if your organization uses one. The connection uses harvest.greenhouse.io if you leave this field blank.

6

Select Connect and sign in to Greenhouse with an account authorized to use the Harvest OAuth credential. Workato displays a success message when the connection is established.

Configure the pipeline

Complete the following steps to configure Greenhouse as your data pipeline source:

1

Select Create > Data pipeline.

2

Enter a name for the data pipeline in the Data pipeline name field.

3

Use the Location drop-down menu to select the project where you plan to store the data pipeline.

4

Click Start building.

5

Click the Extract new/updated records from source app trigger. This trigger defines how the pipeline retrieves data from Greenhouse.

Configure the Extract new/updated records from source app triggerConfigure the Extract new/updated records from source app trigger

6

Use the Your Connected Source Apps drop-down menu to select Greenhouse.

7

Choose the Greenhouse connection you plan to use for this pipeline. Alternatively, click + New connection to create a new connection.

8

Click Add object to open the Add new objects panel.

Add Greenhouse objectsAdd Greenhouse objects

9

Search or browse the list of available Greenhouse objects, select the objects you plan to sync, and click Add.

Select Greenhouse objectsSelect Greenhouse objects

10

Optional. Click the settings icon next to an object to configure how the object syncs. Use the Sync mode drop-down menu to select a sync mode. The object defaults to full sync if Greenhouse doesn't provide a timestamp for it. Refer to Sync modes for more information.

Configure the sync mode for an objectConfigure the sync mode for an object

11

Review and customize the schema for each selected object. When you select an object, the pipeline automatically fetches its schema to ensure the destination matches the source.

Expand any object to view its fields. Keep all fields selected to extract all available data, or deselect specific fields to exclude them from data extraction and schema replication.

12

Optional. Configure field-level data protection by expanding an object and choosing how to handle each field:

  • Replicate as is: Data values at the source replicate identically to the destination.
  • Hash: Hash sensitive data values in the field before syncing to your destination.

Workato recommends hashing personally identifiable information (PII) and other sensitive fields. Refer to Sensitive data handling for a list of fields that commonly contain PII.

13

Click Add object again to add more objects. Repeat this step to include additional Greenhouse objects in your pipeline.

14

Use the Choose how to handle schema changes drop-down menu to select a schema drift handling option:

  • Auto-sync new fields: Automatically detects and syncs new fields added in the source.
  • Block new fields: Keeps the schema fixed after the pipeline starts. You must add new fields manually.

Workato recommends Auto-sync new fields because Greenhouse tenants frequently add custom fields.

15

Configure how often the pipeline syncs data from Greenhouse to the destination in the Frequency field. Choose either a standard time-based schedule or define a custom cron expression.

Supported objects

Greenhouse data pipelines sync data from Greenhouse Harvest v3 API resources. The following tables list the supported objects, grouped by category. Each object syncs as a separate table in your destination.

Recruiting data

ObjectSync modesDelete tracking
Application StagesFull sync, incrementalNo
ApplicationsFull sync, incrementalNo
Approval FlowsFull sync, incrementalNo
Candidate EducationsFull sync, incrementalNo
Candidate EmploymentsFull sync, incrementalNo
Candidate TagsFull sync, incrementalNo
CandidatesFull sync, incrementalNo
InterviewsFull sync, incrementalNo
Job Interview StagesFull sync, incrementalNo
Job PostsFull sync, incrementalNo
JobsFull sync, incrementalNo
NotesFull sync, incrementalNo
OffersFull sync, incrementalNo
OpeningsFull sync, incrementalNo
Prospect PoolsFull sync, incrementalNo
ReferrersFull sync, incrementalNo
ScorecardsFull sync, incrementalNo
Tracking LinksFull sync, incrementalNo

Users and organization

ObjectSync modesDelete tracking
DepartmentsFull sync, incrementalNo
OfficesFull sync, incrementalNo
User Job PermissionsFull sync, incrementalNo
User RolesFull sync, incrementalNo
UsersFull sync, incrementalNo

Configuration and reference data

ObjectSync modesDelete tracking
Close ReasonsFull sync, incrementalNo
Custom Field OptionsFull sync, incrementalNo
Custom FieldsFull sync, incrementalNo
Email TemplatesFull sync, incrementalNo
Rejection ReasonsFull sync, incrementalNo
SourcesFull sync, incrementalNo

Demographic and EEOC data

The EEOC and Demographic Answers objects contain protected class data. These objects are excluded from sync by default and don't appear in the Add new objects panel.

ObjectSync modesDelete tracking
Demographic Answer OptionsFull syncNo
Demographic AnswersFull sync, incrementalNo
Demographic Question SetsFull sync, incrementalNo
Demographic QuestionsFull syncNo
EEOCFull sync, incrementalNo

Sync modes

Greenhouse data pipelines support full sync and incremental sync. The sync mode is configured for each object when you add it to your pipeline.

Full sync

Full sync reads all available records from Greenhouse on every sync and overwrites the destination table. Records deleted in Greenhouse are removed from the destination on the next sync because the destination table reflects the full current state of the source.

Incremental sync

Incremental sync reads only the records created or updated after the previous sync. The pipeline tracks each record's updated_at timestamp and requests only records updated after the latest timestamp from the previous run. Objects that don't provide an updated_at timestamp sync with full sync.

Incremental sync doesn't capture records deleted in Greenhouse. Deleted records remain in the destination table.

Delete tracking

The Greenhouse Harvest v3 API doesn't provide a delete feed, so Greenhouse data pipelines don't track deletes. To remove deleted records from your destination, sync the object with full sync.

Schema and data type handling

Custom fields

Greenhouse data pipelines discover your tenant's custom fields and add them as columns on the objects that support custom fields: Jobs, Applications, Candidates, Offers, and Openings. Custom field columns are named after the field's Greenhouse name_key value.

Greenhouse supports the following custom field types: short text, long text, yes/no, single select, multi-select, date, URL, currency, number, and user.

Nested objects and arrays

Fields that contain nested objects or arrays sync to the destination as JSON strings.

Timestamps

Greenhouse timestamps are ISO 8601 UTC strings, such as 2024-01-15T10:30:00.000Z. Some fields return date-only values in YYYY-MM-DD format, such as the Offers object's sent_on field. The pipeline preserves the original values.

Sensitive data handling

Greenhouse objects contain significant personally identifiable information (PII), and some objects contain protected class data or compensation data. The following objects commonly contain sensitive fields:

ObjectSensitive fields
Candidatesfirst_name, last_name, phone_numbers, email_addresses, addresses, social_media_addresses, photo_url
Candidate EducationsEducation history
Candidate EmploymentsEmployment history
Applicationsanswers (free-text responses), cover_letter_text
Usersname, first_name, last_name, primary_email_address, emails, employee_id
Offerscustom_fields (frequently contains salary and compensation data)
Scorecardsnotes (free-text interviewer evaluations)
NotesFree-text note content
Interviewsorganizer, interviewers (internal employee PII)
EEOCgender, race, disability_status, veteran_status (protected class data)
Demographic Answersfree_form_text (protected class data)

To protect PII before it reaches your destination, use the Hash option in field-level data protection during pipeline configuration. Refer to the Configure the pipeline steps for more information. Workato recommends hashing the Offers object's custom_fields field to prevent compensation data from reaching your destination unprotected.

Candidate anonymization

Greenhouse sets a candidate's anonymized_at timestamp and clears the candidate's PII fields when the candidate is anonymized, for example, after a GDPR or CCPA erasure request. The pipeline preserves the anonymized_at value in the destination. Anonymized candidate records sync with null PII fields, which is expected behavior.

Limitations

The following limitations apply when you use Greenhouse as a data pipeline source.

Private candidates

Greenhouse doesn't return private candidates to API users who aren't authorized to view them. The pipeline can't detect or warn about private candidates missing from the sync. If private candidates are missing from your destination, verify the permissions of the Greenhouse account that authorized the connection.

Confidential jobs

Jobs marked confidential in Greenhouse may return null values for fields such as name and requisition_id, depending on the permissions of the account that authorized the connection. The pipeline syncs these records with null values and preserves the confidential field.

Minimum sync frequency

The minimum supported sync interval is 15 minutes. You can't trigger syncs more frequently than this.

Last updated: