Hailey HR – Gotchas

Service ID: haileyhr

Modern HR platform for managing employees, company data and time off.

⚠️

4 gotchas across 2 resources

These are connector-specific behaviors and limitations to be aware of when integrating.

Employees3 gotchas

allemployeesAll

Hailey HR supports "parallel employments" (multiple active Employment records per employee). department_id, department_name, division, division_id, company_id, company_name, title, team, manager.id, and employment_role.type reflect the primary employment. employment_start_date/employment_end_date reflect overall company tenure instead — see "Get Employee" for per-employment detail via jobs[]. An employee can also hold multiple titles and belong to multiple teams at once (titleIds/teamIds arrays). We only return the first of each as title/team, since the unified schema allows a single value for both.

addemployeesAdd

Hailey HR does not allow duplicate email addresses across employees. Creating an employee with an emails value already in use by another employee returns an error.

oneemployeesOne

Hailey HR supports "parallel employments" (an employee can hold more than one active Employment at once, each ranked by priority, 1 = primary). Fields sourced from the primary employment: department_id, department_name, division, division_id, company_id, company_name, title, team, manager.id, employment_role.type, probation_period.end_date, and employment-level values in custom_fields. employment_start_date/employment_end_datereflect overall company tenure (earliest start / latest-or-open end across ALL employments), not the primary one. Every employment — primary or not — is listed injobs[], flagged via is_primary, with its own start_date/end_date`.

An employee can also hold multiple titles and belong to multiple teams at once (titleIds/teamIds arrays). We only return the first of each as title/team, since the unified schema allows a single value for both.

Salaries carry a history[] of effective-dated amounts — a raise adds a new dated entry rather than replacing the old one. compensations[].rate/effective_date reflect the entry with the most recent date that has already passed, not just the last entry added.

alltimeOffRequestsAll

HaileyHR returns time off as one entry per calendar day, with no request-level identifier and no date range. Unify surfaces each day as its own time-off request, so start_date always equals end_date. A multi-day booking therefore appears as one request per day rather than a single spanning request. Day-based entries report units days (a full day = 1, a half day = 0.5); entries booked in minutes report units hours (minutes / 60). Unify does not merge consecutive days into a span: HaileyHR provides no request boundary, so calendar-adjacency alone cannot tell two separate same-reason bookings apart from one longer booking.

Pagination is not supported. HaileyHR's /TimeOff returns the full company dataset in a single response with no native paging, and there is no stable per-request identifier to page on. The limit and cursor parameters are not honored — retrieve the full list in one call.