# Linking Greenhouse as a source - Docs

![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_9608fcca70)

![](https://res.cloudinary.com/dmukukwp6/image/upload/texture_tan_dark_a92b0e022d)

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.

`npx @posthog/wizard warehouse`

[Learn more](/wizard.md)

![PostHog Wizard hedgehog](https://res.cloudinary.com/dmukukwp6/image/upload/wizard_3f8bb7a240.png)

**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](https://app.posthog.com/data-management/sources) 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

| Table | Description | Sync method |
| --- | --- | --- |
| candidates | Candidates in your Greenhouse account | Incremental |
| applications | Candidate applications | Incremental |
| jobs | Jobs | Incremental |
| job_posts | Job posts | Incremental |
| offers | Offers | Incremental |
| scorecards | Interview scorecards | Incremental |
| scheduled_interviews | Scheduled interviews | Incremental |
| users | Greenhouse users | Incremental |
| departments | Departments | Full refresh |
| offices | Offices | Full refresh |
| sources | Candidate sources | Full refresh |
| rejection_reasons | Rejection reasons | Full refresh |
| close_reasons | Close reasons | Full refresh |

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

## Configuration

| Option | Type | Required |
| --- | --- | --- |
| Client ID (Harvest v3) | text | No |
| Client secret (Harvest v3) | password | No |
| API key (Harvest v1) | password | No |

## Supported tables

| Table | Description | Sync method | Incremental field | Primary key |
| --- | --- | --- | --- | --- |
| candidates | A person who has applied to or been sourced for a job in Greenhouse. | Incremental, Full refresh | updated_at, created_at | — |
| applications | A candidate's application to a specific job in Greenhouse. | Incremental, Full refresh | last_activity_at, created_at | — |
| jobs | A job (role) being recruited for in Greenhouse. | Incremental, Full refresh | updated_at, created_at | — |
| job_posts | A public posting of a job to a job board or career site. | Incremental, Full refresh | updated_at, created_at | — |
| offers | An offer extended to a candidate for a job in Greenhouse. | Incremental, Full refresh | updated_at, created_at | — |
| scorecards | An interviewer's evaluation of a candidate for an interview. | Incremental, Full refresh | updated_at, created_at | — |
| scheduled_interviews | A scheduled interview event for a candidate's application. | Incremental, Full refresh | updated_at, created_at | — |
| users | A Greenhouse user account (recruiter, hiring manager, or admin). | Incremental, Full refresh | updated_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

Ask a question

### Was this page useful?

HelpfulCould be better