Linking Greenhouse as a source

Let AI connect your sources for you

Skip the manual setup — run this in your project and the wizard auto-detects your databases and APIs and connects them to PostHog.

Learn more
PostHog Wizard hedgehog

Contents

Alpha release

This source is currently in alpha. The interface and available tables may change.

Enter your Greenhouse Harvest credentials to automatically pull your Greenhouse recruiting data into the PostHog data warehouse. New sources use Harvest v3 with OAuth authentication by default.

Adding a data source

  1. Go to the sources tab of the data pipeline section in PostHog.
  2. Click + New source and then click Link next to Greenhouse.
  3. In Greenhouse, create a Harvest V3 (OAuth) credential under Configure → Dev Center → API Credential Management. Grant it the list scopes for the resources you want to sync (for example harvest:candidates:list). The authorizing user must be a site admin.
  4. Back in PostHog, paste the Client ID and Client secret from the credential into the corresponding fields and click Next.
  5. Select the tables you want to sync, set the sync method and frequency, then click Import.

Once the syncs are complete, you can start using Greenhouse data in PostHog.

Using Harvest v1 (API key)

Harvest v1 is deprecated

Greenhouse removes the Harvest v1 API on August 31, 2026. Existing v1 sources continue to work until then. To migrate, create a Harvest V3 (OAuth) credential in Greenhouse and set up a new source with the client ID and client secret.

Existing sources using Harvest v1 authenticate with an API key instead of OAuth. To create a v1 source, enter your Harvest API key in the API key (Harvest v1) field. You can create a Harvest API key in Greenhouse under Configure → Dev Center → API Credential Management and grant it read (GET) access to the resources you want to sync.

Available tables

TableDescriptionSync method
candidatesCandidates in your Greenhouse accountIncremental
applicationsCandidate applicationsIncremental
jobsJobsIncremental
job_postsJob postsIncremental
offersOffersIncremental
scorecardsInterview scorecardsIncremental
scheduled_interviewsScheduled interviewsIncremental
usersGreenhouse usersIncremental
departmentsDepartmentsFull refresh
officesOfficesFull refresh
sourcesCandidate sourcesFull refresh
rejection_reasonsRejection reasonsFull refresh
close_reasonsClose reasonsFull refresh

Incremental tables sync only new or updated records on each run. Full refresh tables reload all data on each sync.

Configuration

OptionTypeRequired
Client ID (Harvest v3)textNo
Client secret (Harvest v3)passwordNo
API key (Harvest v1)passwordNo

Supported tables

TableDescriptionSync methodIncremental fieldPrimary key
candidates

A person who has applied to or been sourced for a job in Greenhouse.

Incremental, Full refreshupdated_at, created_at
applications

A candidate's application to a specific job in Greenhouse.

Incremental, Full refreshlast_activity_at, created_at
jobs

A job (role) being recruited for in Greenhouse.

Incremental, Full refreshupdated_at, created_at
job_posts

A public posting of a job to a job board or career site.

Incremental, Full refreshupdated_at, created_at
offers

An offer extended to a candidate for a job in Greenhouse.

Incremental, Full refreshupdated_at, created_at
scorecards

An interviewer's evaluation of a candidate for an interview.

Incremental, Full refreshupdated_at, created_at
scheduled_interviews

A scheduled interview event for a candidate's application.

Incremental, Full refreshupdated_at, created_at
users

A Greenhouse user account (recruiter, hiring manager, or admin).

Incremental, Full refreshupdated_at, created_at
departments

A department that jobs can be assigned to in Greenhouse.

Full refresh
offices

An office location that jobs can be assigned to in Greenhouse.

Full refresh
sources

A source that candidates can be attributed to (e.g. a job board or referral).

Full refresh
rejection_reasons

A configurable reason an application can be rejected for.

Full refresh
close_reasons

A configurable reason a job opening can be closed for.

Full refresh

Community questions

Was this page useful?