Donut is a people-platform that runs inside Slack. It helps companies onboard new hires, build connections across teams, and recognize great work — through automated onboarding journeys, intros (peer matching), and shoutouts. Donut is used by HR, People Ops, and onboarding teams to give every new employee a warm, consistent start without manual coordination.
Donut's integration with Greenhouse Recruiting allows users to automatically import new hires from Greenhouse into Donut and enroll them into the right onboarding journeys. When a candidate accepts an offer in Greenhouse, Donut imports the new hire's details (name, email, start date), their job's department, office, and hiring team, and uses that data to auto-enroll them into onboarding programs and assign onboarding roles — so onboarding kicks off the moment a hire is finalized, with no manual data entry.
Configure the Greenhouse integration
Donut connects to Greenhouse using the Greenhouse Harvest v3 API with the OAuth 2.0 authorization-code flow. The person who connects the integration authorizes Donut from within Greenhouse, so no API key needs to be created or copied. The authorizing user must be a Greenhouse Site Admin with access to all of the organization's data (because Donut requests org-wide list permissions during authorization).
Prerequisites
- A Donut account on a plan that includes the ATS / onboarding feature, with the Greenhouse integration enabled for your workspace.
- A Greenhouse user with the Site Admin permission level and access to all data.
In Donut, navigate to the HRIS & ATS page and press the Connect HRIS or ATS button.
Click Connect Greenhouse. Donut redirects you to Greenhouse's authorization screen.
On the Greenhouse authorization screen, review the permissions Donut is requesting and confirm you are signed in as a Site Admin. Click Authorize (or Allow) to grant access.
Greenhouse redirects you back to Donut. Donut validates the connection and begins the initial import. The Greenhouse connection card shows a status of Validated → Processing Greenhouse connection… → Connected. Everything looks good once the first sync completes.
Data Donut accesses (read-only)
Donut does not add, edit, or delete any data in your Greenhouse account. The integration is read-only and requests only list permissions on the following Harvest v3 resources:
| Greenhouse resource | Permission(s) requested | Used by Donut for |
| Applications | List applications | Linking a new hire to their job and tracking offer/application status |
| Candidates | List candidates | New hire's name, email address(es), and title |
| Custom Fields | List custom fields | Reading the job's Employment Type field definition |
| Custom Field Options | List custom field options | Resolving Employment Type option values for auto-enroll rules |
| Departments | List departments | Auto-enrolling hires by department |
| Job Hiring Managers | List job hiring managers | Identifying the hiring manager on a job's hiring team |
| Job Owners | List job owners | Identifying recruiters, coordinators, and sourcers on a job's hiring team |
| Job Posts | List job posts | Job post information used alongside hiring team data for enrollment |
| Jobs | List jobs | Job name/status, hiring team, office and department associations |
| Offers | List offers | Detecting accepted offers and the hire's start date |
| Offices | List offices | Auto-enrolling hires by office/location |
| Sources | List sources | Where the candidate was sourced from |
| User Emails | List user emails | Resolving hiring-team member email addresses |
| Users | List users | Email addresses for hiring-team members so they can be assigned onboarding roles |
Field mapping (Greenhouse → Donut)
| Greenhouse field | Donut field |
Candidate first_name
|
First name |
Candidate last_name
|
Last name |
Candidate email_addresses
|
|
Candidate title
|
Title |
Offer starts_on
|
Start date |
Offer status (e.g., Accepted) |
Used to determine that a candidate is a confirmed new hire |
Application status (in_process, hired, rejected, converted) |
Onboarding eligibility / status |
Application source_id → Source name
|
Source |
Job name
|
Job / role name |
Job department_id → Department name
|
Department (auto-enroll dimension) |
Job office_ids → Office name
|
Office / location (auto-enroll dimension) |
Job custom field employment_type
|
Employment type (auto-enroll dimension) |
| Job owners (recruiter, coordinator, sourcer) | Recruiter, Coordinator, Sourcer onboarding roles |
| Job hiring managers | Manager relationship in onboarding journeys (assigned via manager role settings, not via greenhouse_role) |
User first_name / last_name / primary_email
|
Hiring-team member identity used to assign onboarding roles |
| User email addresses (from User Emails endpoint) | Resolving hiring-team member email addresses for onboarding role assignment |
Use the Greenhouse integration
Once connected, the integration runs automatically — Donut keeps employee data up to date as new hires move through Greenhouse. The two most common workflows are below.
Auto-enroll new hires into onboarding journeys
After the integration is connected, Donut continuously imports candidates who have an accepted offer in Greenhouse and treats them as new hires. Admins set up auto-enroll rules in Donut that map Greenhouse attributes — department, office, employment type, and role — to specific onboarding journeys, so each hire is automatically enrolled into the right program when they're added in Greenhouse.
Assign onboarding roles from the Greenhouse hiring team
Donut imports each job's hiring team from Greenhouse and can automatically assign onboarding roles based on the job posting's hiring manager. In an onboarding journey's role-selection settings, choose "Automatically assigned to this Greenhouse Role" and pick the Greenhouse role to map.
Additional resources
For additional information not covered here, reach out to Donut support at support@donut.ai or visit the Donut Help Center.
- Syncing Greenhouse ATS with Donut — Donut's own help-center walkthrough.
Frequently asked questions
"The Connect button sends me to Greenhouse but authorization fails." — The authorizing user must be a Greenhouse Site Admin with access to all data. If a non-Site Admin authorizes, the integration will enter an Error state.
"The connection shows an error after authorizing." — Donut validates all requested permissions after connecting. If any permission is missing, the integration enters an Error state indicating which permissions need to be granted. Re-connect with the correct Site Admin account to resolve.
"How often does Donut sync?" — Donut syncs with Greenhouse every 4 hours. New hires with accepted offers are also pushed in near real time, so onboarding enrollment typically begins within minutes of a hire.
"What happens if we disconnect Greenhouse?" — Disconnecting removes the integration and all auto-enrollment rules. No future hires will be auto-enrolled from Greenhouse. Any onboarding sessions and memberships that were already created remain active — people already enrolled stay enrolled. If you need data deleted, contact support@donut.ai.
"Can I reconnect after disconnecting?" — Yes. You can reconnect at any time by following the setup steps above. A new authorization is required.
"What happens if the connection expires?" — Donut automatically refreshes the connection using a refresh token. If the refresh token expires (after 24 hours of inactivity), you'll need to re-authorize by clicking Connect Greenhouse again.