Integrations overview
Integration catalog, where to configure connections, and how platform-level vs organization-level settings work.
InsightHire connects to job boards, ATS systems, calendar providers, background-check vendors, and partner platforms. Most customer-facing setup lives under Settings → Integrations (/dashboard/settings/integrations). Org Admins manage credentials; recruiters connect personal calendar accounts from the same page.
Settings path
| Surface | Path | Who can access |
|---|---|---|
| Integrations hub | /dashboard/settings/integrations | Org Admin |
| LinkedIn setup | /dashboard/settings/integrations/linkedin/setup | Org Admin |
| Accurate setup | /dashboard/settings/integrations/accurate/setup | Org Admin |
| Indeed configuration | /dashboard/integrations/indeed | Org Admin |
| Greenhouse | /dashboard/integrations/greenhouse | Org Admin |
| ATS sync dashboard | /dashboard/integrations/sync | Org Admin / Recruiter |
| Outbound webhooks | Settings → Integrations (Partner webhooks section) | Org Admin |
| Custom outbound email (SMTP) | /admin/email-settings | Platform / org email admin |
The integrations page is split into two rails:
- Calendar & meetings — per-recruiter Microsoft Teams and Google Meet OAuth cards.
- ATS & sourcing — platform catalog grid (LinkedIn, Greenhouse, Accurate, etc.) plus outbound partner webhooks.
Integration catalog
The catalog is driven by platform_integration_settings rows that InsightHire platform admins enable per deployment. Customers only see integrations where enabled: true. The API exposes this via ats.enabledIntegrations.
| Slug | Name | Category | Typical status |
|---|---|---|---|
greenhouse | Greenhouse | ATS | Enabled — Assessment + Harvest v3 |
linkedin | Job board | Enabled — Apply Connect + Job Posting | |
workday | Workday | ATS | Enabled — enterprise REST |
indeed | Indeed | Job board | Platform row exists; primary flow is email apply |
lever | Lever | ATS | Coming soon |
bamboo | BambooHR | ATS | Coming soon |
accurate | Accurate Background | Background checks | Enabled |
meetings_microsoft_teams | Microsoft Teams | Meetings | Feature flag (hidden from grid) |
meetings_google_meet | Google Meet | Meetings | Feature flag (hidden from grid) |
Feature-flag slugs (culture_fit_scoring, meetings_microsoft_teams, meetings_google_meet, etc.) are stored in the same table but hidden from the integrations grid. They gate dedicated surfaces (Culture settings, calendar cards) instead.
Platform config vs organization config
InsightHire uses two layers:
Platform level (InsightHire ops)
Managed in the platform admin console. Controls:
- Catalog visibility — which integrations appear in the customer grid (
enabled,comingSoon). - Feature grants — per-tenant toggles for calendar, live interviews, compliance modules, etc.
- Shared credentials — optional env fallbacks (
ACCURATE_CLIENT_ID,MICROSOFT_CLIENT_ID,LINKEDIN_CLIENT_SECRET, etc.) used when an org has not supplied its own keys. - Inbound email domain — default
in.insighthire.comfor Indeed-style email apply.
Platform settings do not replace org credentials for ATS OAuth flows. They act as kill switches and optional shared infrastructure.
Organization level (customer tenant)
Stored in ats_integrations (and related tables). Each org admin connects their vendor:
| Integration | Org storage | Examples |
|---|---|---|
ats_integrations config | clientId, clientSecret, organizationId, apiType, tokens | |
| Greenhouse | ats_integrations config | Assessment partner key, optional harvestApiKey |
| Indeed | ats_integrations config | Client credentials, webhook secret (Apply API path) |
| Accurate | ats_integrations config | Client ID/Secret, optional webhook secret |
| Calendar | user_calendar_integrations | Per-user OAuth tokens (Microsoft / Google) |
| Outbound webhooks | organization_webhooks | URL, HMAC secret, subscribed events |
| Custom email | email_configurations | SMTP or API provider settings |
Sensitive fields (passwords, API secrets) are never returned to the browser after save.
Subscription requirements
ATS import integrations (Greenhouse, Lever, Workday, BambooHR, Indeed API path) require Professional+ plan access. The API enforces this via enforceATSAccess on create and sync operations.
Calendar and outbound webhooks depend on platform feature grants rather than plan tier alone.
Connection lifecycle
flowchart TD
A[Platform admin enables integration slug] --> B[Org admin opens Settings → Integrations]
B --> C{Integration type}
C -->|OAuth ATS| D[Complete vendor OAuth / paste credentials]
C -->|Calendar| E[Recruiter connects personal Microsoft or Google account]
C -->|Webhooks| F[Org admin registers HTTPS endpoint + secret]
D --> G[Record in ats_integrations]
E --> H[Record in user_calendar_integrations]
F --> I[Record in organization_webhooks]
G --> J[Sync / webhook ingestion]
H --> K[Schedule live interviews with auto meeting links]
I --> L[Emit signed events to partner URL]Sync status
Connected ATS integrations expose:
isActive— connection enabledsyncStatus—PENDING,SYNCING,COMPLETED, orERRORlastSyncAt— timestamp of last successful sync
Monitor aggregate health on Integrations → Sync (/dashboard/integrations/sync).

