How to connect Greenhouse to Kendor
Este artículo aún no está traducido, así que se muestra en inglés.
Create Harvest V3 API credentials in Greenhouse, paste them under Integrations, add one web hook, and choose the stages that send a screen or book a live coding interview.
You connect Greenhouse with one set of API credentials and one web hook. Create the credentials in Greenhouse, paste them into Integrations → Greenhouse in Kendor, add the web hook Kendor shows you, then choose which stages send a screen or book a live coding interview. From then on, moving an application into one of those stages invites the candidate, and Kendor leaves a note on the application at each step.
Before you start
- Your organization is on the Pro or Enterprise plan, which includes the Greenhouse integration.
- You're an Owner in Kendor. Editors and Viewers see the Greenhouse card as Only owners can manage Greenhouse.
- You're a Site Admin in Greenhouse, so you can create API credentials and web hooks.
Create API credentials in Greenhouse
- In Greenhouse, open Configure → Dev Center → API Credential Management.
- Choose Create New API Credentials and pick the type Harvest V3 (OAuth).
- Under Manage scopes, tick these three:
| Scope in Greenhouse | What Kendor uses it for |
|---|---|
Jobs: List jobs |
Lists your open jobs when you set up stage rules. |
Job Interview Stages: List job interview stages |
Lists each job's stages, in order. |
Notes: Create notes |
Writes Kendor's notes on the application. |
- Copy the client ID and the client secret. Greenhouse shows the secret only once.
Paste the credentials into Kendor
- Open Integrations in the sidebar, under Organization.
- On the Greenhouse card in Applicant tracking, choose Connect.
- Paste the Client ID and the Client secret, and choose Connect.
Kendor signs in to Greenhouse with the credentials and checks that they can list jobs and stages. If Greenhouse refuses them, the reason appears under the form, for example Greenhouse rejected the client id or secret. The secret is stored encrypted; afterwards Kendor shows only the last four characters of the client ID.
Greenhouse user ID for notes is optional. Notes are written as the integration user Greenhouse made for the credentials. To have them appear as a person instead, enter that person's numeric Greenhouse user ID. They must be a Site Admin.
Add the web hook
Greenhouse can't create web hooks through its API, so you add this one by hand. The Webhook row under Setup shows an Endpoint URL and a Secret key to copy; use Show secret to see the full key.
- In Greenhouse, open Configure → Dev Center → Web hooks.
- Create a web hook with When set to Candidate has changed stage.
- Paste the Endpoint URL and the Secret key from Kendor, and save.
Greenhouse signs every request with the secret key, and Kendor rejects any request whose signature doesn't match. Each organization has its own URL and key. The Webhook row turns green once the first invite has come through it.
Choose the stages that send a screen or a live coding interview
Under Stages that send a screen or a live coding interview, pick a Job, one of its Stages, and in Kendor screen or interview a live screen or a live coding interview (listed as Live coding · …), then choose Add rule. Pick any job to match a stage by its name on every job instead. A rule for one job wins over an any job rule for the same stage name.
When an application enters a matching stage, Kendor emails the candidate at the first email address on their Greenhouse profile, a work address first: the screen, or a link to book the live coding interview. Greenhouse may send the same change twice; Kendor invites the candidate, or makes the session, only once per stage.
Book a live coding interview
A rule that points at a live coding interview books the candidate in instead of sending a screen. Under Hours the candidate can book, set:
- Days: the weekdays to offer. At least one.
- From and To: the hours on each of those days.
- Time zone: the zone those hours are in. It starts as your browser's.
- Days ahead: how far ahead to offer times, from 1 to 30 days.
The rule starts as weekdays, 09:00 to 17:00, 14 days ahead. Its line reads, for example, Mon, Tue, Wed, Thu, Fri · 09:00–17:00 Europe/Berlin · next 14 days.
When an application enters the stage, Kendor creates a session of the live coding interview that the candidate books themselves. The interview's panel runs it, or whoever created the interview if it has no panel. The candidate gets an email to pick a time, and the booking page only offers times that don't clash with the panel's other Kendor sessions; Kendor doesn't read anyone's calendar. If nothing is booked before the last offered time has passed, the invite expires and Kendor notes it on the application.
The session then appears under Calendar like any other, and its page shows From Greenhouse with the job and stage, and what Greenhouse last heard.
If Kendor can't make the session, it leaves a note on the application instead, and moving the application into the stage again tries again:
| Note | Fix |
|---|---|
Kendor: no live coding session made, because the stage rule's hours offer no time in the next … days. |
Widen the rule's days or hours, or offer more days ahead. |
Kendor: no live coding session made. … |
The reason follows, for example the live coding interview was archived or has no code. Fix it in Kendor. |
What Kendor writes back
Kendor adds one note to the application at each step, visible to everyone who can see the candidate:
| When | Note |
|---|---|
| Invited | Kendor: invited to Backend screen. The candidate got an email with their link. |
| Submitted | Kendor: Backend screen: submitted in 48 min, ready to review. with a review link |
| Graded | Kendor: Backend screen: Passed, score 84/100, took 48 min. with a review link |
| Decided | Kendor: Backend screen: Advanced by the reviewer. |
An invite that's cancelled, or that runs out before the candidate starts, gets a note saying so. Each note is written once.
A live coding interview booked by a stage rule leaves these notes instead, with times in UTC since people read them in any time zone:
Kendor: invited to the live coding interview API pairing. The candidate got an email to book a time.
Kendor: live coding interview API pairing booked for 2026-10-14 07:00 UTC.
Kendor: live coding interview API pairing held (52 min), ready to review.
Review: https://…
Kendor: live coding interview API pairing: Advanced by the panel.
Review: https://…
Each new time the candidate books adds another booked note. A session that ends without being held gets one closing note instead, such as the session was cancelled, the candidate declined the session, the candidate didn't join or no time was booked before the offered hours ran out.
A candidate Greenhouse sent to a screen can later reach a live coding session without a rule, for example when you invite them from their profile. Matched by email, that session's notes go onto the same application: one when the session is held, with its length and the review link, and one when the panel decides.
In Kendor, the candidates roster and the candidate's profile show which Greenhouse job and stage a candidate came from, and what Kendor last told Greenhouse. If Greenhouse refuses a note, Recent invites from Greenhouse shows it as Not written yet; retrying, and Kendor retries for a day.
Kendor doesn't write Greenhouse custom fields: Greenhouse replaces an application's custom fields as a set, and writing ours could clear yours.
Replace or disconnect
- Replace credentials swaps in a new client ID and secret. The web hook URL and key stay the same.
- Disconnect removes the credentials and your stage rules, and Kendor stops writing to Greenhouse. Delete the web hook in Greenhouse too. Invites already sent stay valid.
If you connect again after disconnecting, Kendor issues a new web hook URL and key, so update the web hook in Greenhouse.