What does the Greenhouse integration sync?
Marxel imports your open, draft and closed Greenhouse jobs, each job's applications and the candidate's CV. Webhooks bring in new and changed applications and jobs, and a scheduled sync catches anything a webhook missed. Marxel can write a screening note to Greenhouse, move the candidate to the Greenhouse stage you pick for each screening result, and reject the application in Greenhouse when you reject in Marxel.
Do recruiters need to maintain the pipeline in both?
No. Greenhouse stays the source of truth. Candidates arrive in Marxel without a manual import. Once you map stages, Marxel picks up stage moves made in Greenhouse for candidates in its pipeline. Marxel writes its results back to Greenhouse.
From Greenhouse to Marxel
- Jobs that are open, draft or closed. Open jobs are live in Marxel. Draft and closed jobs arrive closed.
- The job description from the job post, and the notes on the job as briefing notes. Marxel drafts criteria from both. Nothing is screened until you confirm them.
- Each job's applications. Prospects are not imported.
- The candidate's CV, from the resume attachment on the application.
- The application's current Greenhouse stage, which updates the candidate's Marxel pipeline stage when you map it.
- Deletions. When a candidate is deleted, merged away or anonymized in Greenhouse, or an application is deleted, Marxel deletes its copy.
From Marxel to Greenhouse
- A screening note on the application: the summary, the Best match (Strong, Good, Partial or Low) and a link to the full review in Marxel. Turn on with Post screening notes.
- A stage move to the Greenhouse stage you choose for each screening result. Turn on with Move candidates between stages.
- A rejection. When you reject a candidate in Marxel, Marxel rejects the application in Greenhouse with the reason you set for that job, or moves it to the stage you mapped for rejections.
Before you start
- A Marxel organization admin account
- Greenhouse access to approve the Marxel connection and create webhooks in Dev Center
Connect Greenhouse
Greenhouse connects with OAuth. There is no API key to copy.
- 1. Open Organization settings, Integrations.
- 2. Find Greenhouse and select Connect. Marxel sends you to Greenhouse.
- 3. Approve the connection in Greenhouse. Marxel then checks it can read jobs, job posts, applications, candidates and resume attachments before it saves the connection.
Marxel asks Greenhouse for these Harvest scopes:
harvest:jobs:listharvest:job_posts:listharvest:applications:listharvest:candidates:listharvest:attachments:listharvest:application_stages:listharvest:job_interview_stages:listharvest:notes:listharvest:notes:createharvest:applications:moveharvest:applications:rejectharvest:rejection_reasons:list
Credential handling
Marxel encrypts the Greenhouse access and refresh tokens before storing them, and refreshes the access token when it expires.
Add Greenhouse webhooks
Webhooks tell Marxel about new and changed applications and jobs straight away. Without them, changes wait for the scheduled sync.
- 1. On the connected Greenhouse card in Marxel, select Set up beside the webhook. Select Generate secret and copy the secret and the endpoint URL.
- 2. In Greenhouse, open Dev Center and create webhooks that post to the Marxel endpoint. Add application events, such as a new application or a stage change, and job events.
- 3. To keep deletions in step, also add the Delete candidate, Merge candidate, Candidate anonymized and Delete application events.
- 4. Use the same secret key on every Greenhouse webhook, then select Save setup in Marxel.
How Marxel checks webhooks
Greenhouse signs each request body with SHA-256 using your secret key. Marxel rejects any request whose signature does not match. Marxel stores the secret encrypted and does not show it again. To rotate it, generate a replacement in the same modal.
Sync jobs and candidates
- 1. Open the Greenhouse card menu in Marxel and select Sync jobs.
- 2. Marxel imports open, draft and closed jobs, then each job's applications and CVs.
- 3. After that, webhooks trigger a targeted sync for the affected job, and a scheduled sync runs as a backstop.
Pipeline monitoring. Select Configure beside stage movement and map Greenhouse stages to Marxel pipeline stages such as Phone screen, Interview 1 or Offer. When a candidate in your Marxel pipeline moves in Greenhouse, Marxel updates their stage on the next sync. Greenhouse stays authoritative, and unmapped stages are ignored.
Write results back to Greenhouse
- 1. On the connected Greenhouse card, turn on Post screening notes. Marxel adds a note to the application with the summary, the Best match and a link to the full review. The note uses Greenhouse's admin-only visibility.
- 2. Select Configure beside stage movement and choose a Greenhouse stage for each of the four screening results on every synced job.
- 3. Turn on Move candidates between stages. Marxel only allows this once every synced job has all four stages mapped.
- 4. Optionally, set a Greenhouse rejection reason for each job. Rejecting a candidate in Marxel then rejects the application in Greenhouse with that reason. A job without a reason moves the application to its mapped rejection stage instead.
Start with notes only. Check a few screened candidates in Greenhouse, then turn on stage moves when the mapping matches how your team hires.
Troubleshooting
The connection fails after you approve it
Marxel checks it can read jobs, job posts, applications, candidates and resume attachments. If Greenhouse did not grant one of those, the connection is not saved. Connect again and approve every requested scope.
Candidate updates do not arrive
Check that each Greenhouse webhook posts to the endpoint shown in Marxel and uses the same secret key saved in Marxel. Until webhooks work, the scheduled sync still picks up changes.
Stage moves cannot be turned on
Run Sync jobs, then map all four screening results to a Greenhouse stage on every synced job. Marxel keeps stage moves off until the mapping is complete.
Rejecting moves the candidate instead of rejecting
Rejecting in Greenhouse needs the applications reject and rejection reasons scopes. Connections approved before Marxel asked for them keep moving rejected candidates to the mapped stage. Disconnect and connect Greenhouse again to grant them, then set a rejection reason for the job.
Ready to connect?
Keep this guide open while you connect Greenhouse and add the webhooks.
Open integrations