Skip to main content
Connectors

Greenhouse connector

Set up the Greenhouse connector in Kaivo: authentication, configuration, the 36 BigQuery tables it syncs, and answers to common questions.

Written By Lauri Raivio

Last updated 16 days ago

Kaivo is a fully managed data platform that syncs your Greenhouse data into a Google BigQuery warehouse and keeps it up to date automatically. There is no pipeline to build and no infrastructure to run, so you can spend your time analysing your HR data instead of moving it.

What is the Greenhouse connector

Sync your Greenhouse candidates, applications, and interviews into BigQuery with Kaivo to report on hiring alongside the rest of your data.

CategoryHR
AuthenticationAPI key
SetupSelf-service

Getting started with the Greenhouse connector

  1. Sign up for Kaivo and create a workspace.
  2. Connect your Greenhouse account.
  3. Choose which tables to sync.
  4. Wait for the initial sync to finish.
  5. Query your data in BigQuery or your favourite AI or BI tool.

Authenticating Greenhouse

Authenticate with your API Key.

FieldDescription
API Key

Your Greenhouse Harvest API key.

Tables and columns synced from Greenhouse

Kaivo syncs 36 tables from Greenhouse into a dedicated dataset in your BigQuery warehouse. Click any table to see its columns and types.

ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • activity_feed__activities (12 columns)
  • activity_feed__emails (14 columns)
  • activity_feed__emails__cc (4 columns)
  • activity_feed__notes (14 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
applied_atSTRINGTimestamp when the candidate applied.
candidate_idINT64Unique identifier for the candidate.
credited_to__employee_idSTRINGUnique identifier for the employee.
credited_to__first_nameSTRINGFirst name of the employee.
credited_to__idINT64ID of the employee.
credited_to__last_nameSTRINGLast name of the employee.
credited_to__nameSTRINGFull name of the employee.
current_stage__idINT64ID of the current stage.
current_stage__nameSTRINGName of the current stage.
idINT64Unique identifier for the application.
job_post_idINT64
last_activity_atSTRINGTimestamp of the last activity on the application.
locationSTRINGLocation related to the application.
prospectBOOLStatus of the application prospect.
prospect_detail__prospect_owner__idINT64Unique identifier for the prospect owner.
prospect_detail__prospect_owner__nameSTRINGName of the prospect owner.
prospect_detail__prospect_poolSTRINGPool the prospect belongs to.
prospect_detail__prospect_stageSTRINGStage of the prospect.
prospective_departmentSTRINGProspective department for the candidate.
prospective_officeSTRINGProspective office for the candidate.
rejected_atSTRINGTimestamp when the application was rejected.
rejection_reason__type__idINT64ID of the rejection reason type.
rejection_reason__type__nameSTRINGName of the rejection reason type.
rejection_reason__idINT64ID of the rejection reason.
rejection_reason__nameSTRINGName of the rejection reason.
source__idINT64ID of the application source.
source__public_nameSTRINGPublic name of the application source.
statusSTRINGStatus of the application.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • applications__answers (4 columns)
  • applications__attachments (4 columns)
  • applications__jobs (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
application_idINT64Unique identifier for the application associated with the demographic answer
created_atTIMESTAMPTimestamp indicating when the demographic answer was created
demographic_answer_option_idINT64Unique identifier for the selected answer option for the demographic question
demographic_question_idINT64Unique identifier for the demographic question answered
free_form_textSTRINGAny additional free form text provided as part of the answer
idINT64Unique identifier for the demographic answer record
updated_atTIMESTAMPTimestamp indicating when the demographic answer was last updated
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
application_idINT64Unique identifier for the job application.
created_atTIMESTAMPDate and time when the application interview data was created.
end__date_timeTIMESTAMPEnd date and time of the interview.
external_event_idSTRINGID of the external event associated with the interview.
idINT64Unique identifier for the interview data.
interview__idINT64Unique identifier for the interview type.
interview__nameSTRINGName or title of the interview.
locationSTRINGLocation where the interview takes place.
organizer__employee_idSTRINGEmployee ID of the organizer.
organizer__first_nameSTRINGFirst name of the organizer.
organizer__idINT64Unique identifier for the organizer.
organizer__last_nameSTRINGLast name of the organizer.
organizer__nameSTRINGFull name of the organizer.
start__date_timeTIMESTAMPStart date and time of the interview.
statusSTRINGStatus of the interview (e.g., scheduled, completed).
updated_atTIMESTAMPDate and time when the application interview data was last updated.
video_conferencing_urlSTRINGURL for the video conferencing platform used for the interview.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • applications_interviews__interviewers (9 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
versionINT64Version of the approval request
approval_statusSTRINGThe status of the approval (e.g. pending, approved, rejected)
approval_typeSTRINGThe type of approval required for the request
idINT64Unique identifier of the approval request
job_idINT64Identifier of the job associated with this approval request
offer_idINT64Identifier of the offer associated with this approval request
requested_by_user_idINT64User ID who requested this approval
sequentialBOOLFlag indicating whether the approvals are required in a sequential order
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • approvals__approver_groups (10 columns)
  • approvals__approver_groups__approvers (6 columns)
  • approvals__approver_groups__approvers__email_addresses (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
can_emailBOOLIndicates if candidate can be emailed
companySTRINGCompany where the candidate is associated
coordinatorSTRINGCoordinator assigned to the candidate
created_atSTRINGDate and time of creation
first_nameSTRINGCandidate's first name
idINT64Candidate's ID
is_privateBOOLIndicates if the candidate's data is private
last_activitySTRINGDetails of the last activity related to the candidate
last_nameSTRINGCandidate's last name
photo_urlSTRINGURL of the candidate's profile photo
recruiterSTRINGRecruiter assigned to the candidate
titleSTRINGCandidate's title (e.g., Mr., Mrs., Dr.)
updated_atSTRINGDate and time of last update
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • candidates__addresses (4 columns)
  • candidates__application_ids (4 columns)
  • candidates__applications (30 columns)
  • candidates__applications__answers (4 columns)
  • candidates__applications__attachments (4 columns)
  • candidates__applications__jobs (4 columns)
  • candidates__attachments (4 columns)
  • candidates__educations (4 columns)
  • candidates__email_addresses (4 columns)
  • candidates__employments (4 columns)
  • candidates__phone_numbers (4 columns)
  • candidates__social_media_addresses (4 columns)
  • candidates__tags (4 columns)
  • candidates__website_addresses (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64Unique identifier for the close reason.
nameSTRINGThe name or description of the close reason.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
descriptionSTRINGDescription of the custom field.
activeBOOLIndicates whether the custom field is currently active or not.
api_onlyBOOLDenotes if the custom field is used only in API requests.
expose_in_job_board_apiBOOLSpecifies if the custom field should be exposed in the job board API.
field_typeSTRINGType of the custom field (text, dropdown, etc.).
idINT64Unique identifier of the custom field.
nameSTRINGName of the custom field.
name_keySTRINGKey associated with the name of the custom field.
priorityINT64Priority of the custom field.
privateBOOLIndicates if the custom field is for private use only.
require_approvalBOOLSpecifies if approval is required for changes to the custom field.
requiredBOOLDenotes whether the custom field is required or not.
template_token_stringSTRINGToken string used in templates for the custom field.
trigger_new_versionBOOLIndicates if a new version should be triggered upon changes to the custom field.
value_typeSTRINGType of values accepted by the custom field.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • custom_fields__custom_field_options (7 columns)
  • custom_fields__departments (4 columns)
  • custom_fields__offices (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
external_idSTRINGUnique identifier for the greenhouse record in an external system
idINT64Unique identifier for the greenhouse record
nameSTRINGName of the degrees data
priorityINT64Priority level of the degrees data for sorting
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
activeBOOLIndicates if the demographic answer option is currently active or not.
demographic_question_idINT64The ID of the demographic question associated with this answer option.
free_formBOOLSpecifies if the answer option allows for a free-form text input.
idINT64Unique identifier for the demographic answer option.
nameSTRINGThe name or label of the demographic answer option.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • demographics_answer_options__translations (5 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
application_idINT64The unique identifier of the application associated with the demographic answer
created_atTIMESTAMPThe date and time when the demographic answer was created
demographic_answer_option_idINT64The identifier of the answer option chosen for the demographic question
demographic_question_idINT64The identifier of the demographic question to which the answer belongs
free_form_textSTRINGAny additional free-form text provided as part of the answer
idINT64The unique identifier of the demographic answer
updated_atTIMESTAMPThe date and time when the demographic answer was last updated
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
activeBOOLIndicates whether this demographic answer option is active or not.
demographic_question_idINT64The unique identifier of the demographic question associated with this answer option.
free_formBOOLSpecifies if the answer option allows for free-form input in addition to predefined options.
idINT64The unique identifier of this demographic answer option.
nameSTRINGThe name or label of the demographic answer option.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • demographics_answers_answer_options__translations (5 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
descriptionSTRINGA brief description of the demographics question set
activeBOOLIndicates if the demographics question set is currently active
idINT64Unique identifier for the demographics question set
titleSTRINGTitle of the demographics question set
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
activeBOOLSpecifies if the question is active or not.
demographic_question_set_idINT64Unique identifier of the demographic question set to which this question belongs.
idINT64Unique identifier of the question.
nameSTRINGName of the question.
requiredBOOLIndicates if this question is mandatory to answer.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • demographics_question_sets_questions__translations (5 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
activeBOOLSpecifies if the demographic question is currently active or not.
demographic_question_set_idINT64The ID of the demographic question set this question belongs to.
idINT64The unique identifier for the demographic question.
nameSTRINGThe name or title of the demographic question.
requiredBOOLIndicates if the demographic question is required to be answered.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • demographics_questions__translations (5 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
external_idSTRINGExternal ID of this department.
idINT64Unique ID of this department.
nameSTRINGName of the department.
parent_department_external_idSTRINGExternal ID of the parent department of this department.
parent_idINT64Unique ID of the parent department of this department.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • departments__child_department_external_ids (4 columns)
  • departments__child_ids (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64Unique identifier for the discipline
nameSTRINGName of the discipline
priorityINT64Priority level of the discipline
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
application_idINT64Unique identifier for the job application
candidate_idINT64Unique identifier for the candidate applying for the job
disability_status__descriptionSTRINGDescription of the candidate's disability status
disability_status__idINT64Unique identifier for the disability status
gender__descriptionSTRINGDescription of the candidate's gender
gender__idINT64Unique identifier for the gender
race__descriptionSTRINGDescription of the candidate's race
race__idINT64Unique identifier for the race
submitted_atSTRINGTimestamp when the data was submitted
veteran_status__idINT64Unique identifier for the veteran status
veteran_status__messageSTRINGMessage related to the candidate's veteran status
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRINGType or category of the email template (e.g., welcome email, newsletter).
descriptionSTRINGBrief description of the email template and its purpose.
bodySTRINGThe main content body of the email template.
created_atSTRINGTimestamp indicating when the email template was created.
defaultBOOLFlag indicating if the template is the default one to use.
fromSTRINGEmail address or name of the sender for the email template.
html_bodySTRINGHTML formatted content of the email template.
idINT64Unique identifier for the email template.
nameSTRINGName or title of the email template.
updated_atSTRINGTimestamp indicating when the email template was last updated.
userSTRINGUser associated with the email template (creator or owner).
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • email_templates__cc (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
application_idINT64The unique identifier for the job application associated with the interview
created_atTIMESTAMPThe date and time when the interview was created
end__date_timeTIMESTAMPThe end date and time of the interview
external_event_idSTRINGThe identifier for the external event related to the interview
idINT64The unique identifier for the interview
interview__idINT64The unique identifier for the interview
interview__nameSTRINGThe name or title of the interview
locationSTRINGThe physical or virtual location of the interview
organizer__employee_idSTRINGThe employee identifier of the organizer
organizer__first_nameSTRINGThe first name of the organizer
organizer__idINT64The unique identifier for the organizer
organizer__last_nameSTRINGThe last name of the organizer
organizer__nameSTRINGThe full name of the organizer
start__date_timeTIMESTAMPThe start date and time of the interview
statusSTRINGThe status of the interview (e.g., scheduled, completed)
updated_atTIMESTAMPThe date and time when the interview was last updated
video_conferencing_urlSTRINGThe URL for the video conferencing platform used for the interview
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • interviews__interviewers (9 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
activeBOOLFlag indicating if the job post is active or not.
contentSTRINGContent or description of the job post.
created_atSTRINGDate and time when the job post was created.
demographic_question_set_idINT64ID of the demographic question set associated with the job post.
externalBOOLFlag indicating if the job post is external or not.
first_published_atSTRINGDate and time when the job post was first published.
idINT64Unique identifier of the job post.
internalBOOLFlag indicating if the job post is internal or not.
internal_contentSTRINGInternal content or description of the job post.
job_idINT64ID of the job associated with the job post.
liveBOOLFlag indicating if the job post is live or not.
location__idINT64Unique identifier of the location.
location__job_post_location_type__idINT64Unique identifier of the location type.
location__job_post_location_type__nameSTRINGName of the location type.
location__nameSTRINGName of the location.
location__office_idINT64ID of the office associated with the location.
titleSTRINGTitle or headline of the job post.
updated_atSTRINGDate and time when the job post was last updated.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • job_posts__questions (9 columns)
  • job_posts__questions__values (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
created_atTIMESTAMPThe timestamp when the job stage was created
idINT64The unique identifier of the job stage
job_idINT64The identifier of the job associated with the job stage
nameSTRINGThe name of the job stage
priorityINT64The priority level of the job stage
updated_atTIMESTAMPThe timestamp when the job stage was last updated
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • job_stages__interviews (9 columns)
  • job_stages__interviews__default_interviewer_users (4 columns)
  • job_stages__interviews__interview_kit__questions (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
closed_atSTRINGThe date and time the job was closed
confidentialBOOLIndicates if the job details are confidential
copied_from_idINT64The ID of the job from which this job was copied
created_atSTRINGThe date and time the job was created
custom_fields__employment_typeSTRINGType of employment associated with the job
idINT64Unique ID of the job
is_templateBOOLIndicates if the job is a template
keyed_custom_fields__employment_type__typeSTRINGData type of the employment type field
keyed_custom_fields__employment_type__nameSTRINGName of the employment type field
keyed_custom_fields__employment_type__valueSTRINGValue of the employment type field
nameSTRINGName of the job
notesSTRINGAdditional notes or comments about the job
opened_atSTRINGThe date and time the job was opened
requisition_idSTRINGID associated with the job requisition
statusSTRINGCurrent status of the job
updated_atSTRINGThe date and time the job was last updated
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • jobs__departments (8 columns)
  • jobs__departments__child_department_external_ids (4 columns)
  • jobs__departments__child_ids (4 columns)
  • jobs__hiring_team__coordinators (4 columns)
  • jobs__hiring_team__hiring_managers (4 columns)
  • jobs__hiring_team__recruiters (4 columns)
  • jobs__hiring_team__sourcers (4 columns)
  • jobs__offices (10 columns)
  • jobs__offices__child_ids (4 columns)
  • jobs__offices__child_office_external_ids (4 columns)
  • jobs__openings (10 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
application_idINT64The unique identifier for the job application.
close_reason__idINT64The unique identifier for the close reason.
close_reason__nameSTRINGThe name or description of the close reason.
closed_atTIMESTAMPThe date and time when the job opening was closed.
custom_fields__employment_typeSTRINGType of employment for the job.
custom_fields__maximum_budgetSTRINGThe maximum budget assigned for the job.
idINT64The unique identifier for the job opening.
keyed_custom_fields__budget__typeSTRINGThe type of budget value.
keyed_custom_fields__budget__nameSTRINGThe name or description of the budget.
keyed_custom_fields__budget__valueSTRINGThe value of the budget.
keyed_custom_fields__employment_type__typeSTRINGThe type of employment value.
keyed_custom_fields__employment_type__nameSTRINGThe name or description of the employment type.
keyed_custom_fields__employment_type__valueSTRINGThe value of the employment type.
opened_atTIMESTAMPThe date and time when the job opening was created.
opening_idSTRINGThe unique identifier for the job opening.
statusSTRINGThe current status of the job opening.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
created_atTIMESTAMPThe date and time when the job stage was created
idINT64The unique identifier for the job stage
job_idINT64The unique identifier of the job associated with this stage
nameSTRINGThe name of the job stage
priorityINT64The priority level of this job stage
updated_atTIMESTAMPThe date and time when the job stage was last updated
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • jobs_stages__interviews (9 columns)
  • jobs_stages__interviews__default_interviewer_users (4 columns)
  • jobs_stages__interviews__interview_kit__questions (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
versionINT64Version of the offer data
application_idINT64Unique identifier for the application associated with the offer
candidate_idINT64Unique identifier for the candidate associated with the offer
created_atSTRINGTimestamp indicating when the offer was created
custom_fields__employment_typeSTRINGType of employment associated with the offer
idINT64Unique identifier for the offer
job_idINT64Unique identifier for the job associated with the offer
keyed_custom_fields__employment_type__typeSTRINGType of the custom employment field
keyed_custom_fields__employment_type__nameSTRINGName of the custom employment field
keyed_custom_fields__employment_type__valueSTRINGValue of the custom employment field
opening__application_idINT64Unique identifier for the opening application
opening__close_reasonSTRINGReason for closing the opening
opening__closed_atSTRINGTimestamp indicating when the opening was closed
opening__idINT64Unique identifier for the opening
opening__opened_atSTRINGTimestamp indicating when the opening was opened
opening__opening_idSTRINGUnique identifier for the opening associated with the offer
opening__statusSTRINGStatus of the opening
resolved_atSTRINGTimestamp indicating when the offer was resolved
sent_atSTRINGTimestamp indicating when the offer was sent
starts_atSTRINGTimestamp indicating when the offer starts
statusSTRINGStatus of the offer
updated_atSTRINGTimestamp indicating when the offer was last updated
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
external_idSTRINGUnique identifier for this office in the external system
idINT64Unique identifier for this office in the API system
location__nameSTRINGName of the location where the office is situated
nameSTRINGName of the office
parent_idINT64ID of the parent office, if this office is a branch office
parent_office_external_idSTRINGExternal ID of the parent office in the external system
primary_contact_user_idINT64User ID of the primary contact person for this office
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • offices__child_ids (4 columns)
  • offices__child_office_external_ids (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
activeBOOLIndicates whether the prospect pool is active or not.
idINT64Unique identifier for the prospect pool.
nameSTRINGThe name of the prospect pool.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • prospect_pools__prospect_stages (5 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
type__idINT64Unique identifier for the type of rejection reason.
type__nameSTRINGThe name of the type of rejection reason.
idINT64Unique identifier for the rejection reason.
nameSTRINGThe name of the rejection reason.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64Unique identifier for the school.
nameSTRINGName of the school.
priorityINT64Priority level of the school.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
application_idINT64The unique identifier of the job application associated with the scorecard data.
candidate_idINT64The unique identifier of the candidate for whom the scorecard is created.
created_atSTRINGThe timestamp when the scorecard was created.
idINT64The unique identifier of the scorecard.
interviewSTRINGDetails about the interview related to the scorecard.
interview_step__idINT64The unique identifier of the interview step.
interview_step__nameSTRINGThe name or title of the interview step.
interviewed_atSTRINGThe timestamp when the candidate was interviewed.
interviewer__employee_idSTRINGThe unique identifier of the employee who conducted the interview.
interviewer__first_nameSTRINGThe first name of the interviewer.
interviewer__idINT64The unique identifier of the interviewer.
interviewer__last_nameSTRINGThe last name of the interviewer.
interviewer__nameSTRINGThe full name of the interviewer.
overall_recommendationSTRINGThe overall recommendation for the candidate based on the scorecard evaluation.
submitted_atSTRINGThe timestamp when the scorecard was submitted.
submitted_by__employee_idSTRINGThe unique identifier of the employee who submitted the scorecard.
submitted_by__first_nameSTRINGThe first name of the employee who submitted the scorecard.
submitted_by__idINT64The unique identifier of the employee who submitted the scorecard.
submitted_by__last_nameSTRINGThe last name of the employee who submitted the scorecard.
submitted_by__nameSTRINGThe full name of the employee who submitted the scorecard.
updated_atSTRINGThe timestamp when the scorecard was last updated.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • scorecards__attributes (7 columns)
  • scorecards__questions (6 columns)
  • scorecards__ratings__definitely_not (4 columns)
  • scorecards__ratings__mixed (4 columns)
  • scorecards__ratings__no (4 columns)
  • scorecards__ratings__strong_yes (4 columns)
  • scorecards__ratings__yes (4 columns)
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
type__idINT64The unique identifier for the type of the source.
type__nameSTRINGThe name of the type of the source.
idINT64The unique identifier for the source.
nameSTRINGThe name of the source.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64The unique identifier for the tag.
nameSTRINGThe name of the tag.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
idINT64Unique identifier for the user permission data
job_idINT64Identifier for the job associated with the user permission data
user_role_idINT64Identifier for the user role associated with the user permission data
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
typeSTRINGThe type or category of the user role.
idINT64The unique identifier for the user role.
nameSTRINGThe name of the user role.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.
ColumnTypeDescription
_kaivo_idSTRINGPrimary key that uniquely identifies the row. Auto-generated by Kaivo.
created_atSTRINGThe date and time when the user account was created.
disabledBOOLIndicates whether the user account is disabled.
employee_idSTRINGEmployee identifier for the user.
first_nameSTRINGThe first name of the user.
idINT64Unique identifier for the user.
last_nameSTRINGThe last name of the user.
nameSTRINGThe full name of the user.
primary_email_addressSTRINGThe primary email address of the user.
site_adminBOOLIndicates whether the user is a site administrator.
updated_atSTRINGThe date and time when the user account was last updated.
_kaivo_extracted_atTIMESTAMPTimestamp that shows when the row was extracted. Auto-generated by Kaivo.

Nested subtables

Repeating fields are split into their own tables, listed here with their column counts.

  • users__departments (8 columns)
  • users__departments__child_department_external_ids (4 columns)
  • users__departments__child_ids (4 columns)
  • users__emails (4 columns)
  • users__linked_candidate_ids (4 columns)
  • users__offices (10 columns)
  • users__offices__child_ids (4 columns)
  • users__offices__child_office_external_ids (4 columns)

How the Greenhouse sync works

After the first load, Kaivo keeps your BigQuery warehouse up to date for you. Where Greenhouse supports it, each sync pulls only new and changed records so it stays fast; otherwise it refreshes the whole table. Every record keeps its original ID, so you won't get duplicate rows.

Frequently asked questions

How long does the initial sync take for Greenhouse?

It depends on how much history is in your Greenhouse account. Most initial syncs finish within minutes, while large accounts can take a few hours. After that, syncs only fetch new and changed records, so they're much faster.

Can I sync only some tables or columns?

Yes. You pick which tables to sync when you set up the connection and can change the selection later. Tables you don't select are never copied to your warehouse.

What happens when Greenhouse's schema changes?

New fields are never added automatically. You choose which fields to sync, so data you haven't selected (sensitive personal data, for example) never lands in your warehouse. When a new field appears, it becomes available for you to add. What happens to removed or renamed fields depends on a table's sync mode: full-refresh tables always match what's currently in Greenhouse, so dropped fields disappear, while incremental tables keep their existing columns and history, so an old field stays and newly added fields fill in over time.

How do I handle GDPR or data deletion requests?

Your data lives in your own Kaivo-managed BigQuery warehouse, so the most direct option is to delete or anonymise specific records right in BigQuery. If you delete data in Greenhouse instead, full-refresh tables drop it on the next sync, while incremental tables keep it, so you would remove the row in BigQuery or ask us to run a full refresh. To remove everything, delete the Greenhouse connector in Kaivo and all of its synced data is deleted with it.

Common use cases for Greenhouse data

Pipeline funnel

Track applications by stage to measure your hiring funnel and conversion.

Time to hire

Analyse applications and interviews to measure time to hire and where candidates stall.

Source effectiveness

Report on where candidates come from to see which sources produce hires.

Department reporting

Break hiring down by department to monitor open roles and progress.

Use Greenhouse data in your AI and BI tools

Once Greenhouse data lands in your Kaivo-managed BigQuery warehouse, you can explore it with AI tools or any BI tool that connects to BigQuery. Here's how the most common destinations work with Greenhouse data.

Claude

Use Kaivo's MCP server to give Claude secure, workspace-scoped access to your data. Setup guide →

Power BI

Microsoft's BI tool with a native BigQuery connector. Supports direct query and scheduled refresh. Setup guide →

Data Studio

Free Google BI tool with native BigQuery support. One-click connection to your Kaivo warehouse; great for SMB teams on Google Workspace. Setup guide →

Tableau

The premium analytics standard, with native BigQuery integration. Setup guide →

Google Sheets

Use Connected Sheets to query BigQuery directly from a spreadsheet, with no SQL. Setup guide →

Excel

Connect via Power Query's BigQuery connector. Setup guide →

Metabase

Open-source BI tool with strong BigQuery support. Setup guide →

See our pricing page for Greenhouse connector pricing and plan details.

Was this helpful?

Still need help? Share an idea