InsightHireHelp Center

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

SurfacePathWho can access
Integrations hub/dashboard/settings/integrationsOrg Admin
LinkedIn setup/dashboard/settings/integrations/linkedin/setupOrg Admin
Accurate setup/dashboard/settings/integrations/accurate/setupOrg Admin
Indeed configuration/dashboard/integrations/indeedOrg Admin
Greenhouse/dashboard/integrations/greenhouseOrg Admin
ATS sync dashboard/dashboard/integrations/syncOrg Admin / Recruiter
Outbound webhooksSettings → Integrations (Partner webhooks section)Org Admin
Custom outbound email (SMTP)/admin/email-settingsPlatform / org email admin

The integrations page is split into two rails:

  1. Calendar & meetings — per-recruiter Microsoft Teams and Google Meet OAuth cards.
  2. 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.

SlugNameCategoryTypical status
greenhouseGreenhouseATSEnabled — Assessment + Harvest v3
linkedinLinkedInJob boardEnabled — Apply Connect + Job Posting
workdayWorkdayATSEnabled — enterprise REST
indeedIndeedJob boardPlatform row exists; primary flow is email apply
leverLeverATSComing soon
bambooBambooHRATSComing soon
accurateAccurate BackgroundBackground checksEnabled
meetings_microsoft_teamsMicrosoft TeamsMeetingsFeature flag (hidden from grid)
meetings_google_meetGoogle MeetMeetingsFeature 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.com for 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:

IntegrationOrg storageExamples
LinkedInats_integrations configclientId, clientSecret, organizationId, apiType, tokens
Greenhouseats_integrations configAssessment partner key, optional harvestApiKey
Indeedats_integrations configClient credentials, webhook secret (Apply API path)
Accurateats_integrations configClient ID/Secret, optional webhook secret
Calendaruser_calendar_integrationsPer-user OAuth tokens (Microsoft / Google)
Outbound webhooksorganization_webhooksURL, HMAC secret, subscribed events
Custom emailemail_configurationsSMTP 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 enabled
  • syncStatusPENDING, SYNCING, COMPLETED, or ERROR
  • lastSyncAt — timestamp of last successful sync

Monitor aggregate health on Integrations → Sync (/dashboard/integrations/sync).