> ## Documentation Index
> Fetch the complete documentation index at: https://docs.harly.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Integrations overview

> Understand installation credentials, workspace connections, sync behavior, and provider recovery in Harly.

Harly separates provider setup into two layers:

1. **Installation credentials** live in the server environment and enable an
   OAuth or API client.
2. **Workspace connections** are created by an owner or administrator in
   **Settings → Integrations** and are stored encrypted in PostgreSQL.

This means one Harly installation can serve multiple workspaces without
sharing a user's refresh token between them.

## Integration map

| Need                            | Providers                                 | Setup                                 |
| ------------------------------- | ----------------------------------------- | ------------------------------------- |
| Calendar                        | Google Calendar, Microsoft Outlook        | OAuth client + workspace connection   |
| Video interviews                | Zoom, Microsoft Teams, Google Meet, Jitsi | Provider connection or meeting URL    |
| Email outbound                  | Resend, SMTP                              | Workspace sender and mailbox settings |
| Email inbound (reply threading) | Postmark, Resend inbound                  | MX records + inbound webhook          |
| Mailbox sync (send and receive) | IMAP                                      | Workspace mailbox connection          |
| Notifications                   | Slack, Discord, Telegram                  | OAuth or incoming webhook             |
| E-signature                     | DocuSeal, Harly Signing                   | Optional provider connection          |
| Files                           | Local volume, S3-compatible storage       | Deployment configuration              |

## Connection lifecycle

<Steps>
  <Step title="Create provider credentials">
    Create the provider application with the redirect URI and scopes shown in
    the provider guide. Keep the client secret server-side, never in source
    control or client-facing code.
  </Step>

  <Step title="Add installation variables">
    Add the values to the web process's secret manager and restart Harly.
    Confirm the integration card in **Settings → Integrations** no longer
    reports missing credentials.
  </Step>

  <Step title="Connect the workspace">
    Open **Settings → Integrations**, connect the account, select a calendar or
    channel where requested, and run the provider test.
  </Step>

  <Step title="Exercise failure recovery">
    Disconnect and reconnect a test account, verify a sample event or message,
    and record the owner for future token rotation.
  </Step>
</Steps>

<Warning>
  A provider connection is not the source of truth for a Harly record. Harly
  saves the interview, application, or message first and reports sync warnings
  when the provider is unavailable. Never create a duplicate record to work
  around a sync warning. Use the retry action on the existing record instead.
</Warning>

## Integration-specific guides

<CardGroup cols={2}>
  <Card title="Email" icon="envelope" href="/integrations/email">
    Resend, SMTP, inbound replies, and mailboxes.
  </Card>

  <Card title="Google Calendar and Meet" icon="calendar" href="/integrations/google-calendar">
    OAuth setup, callback registration, and common errors.
  </Card>

  <Card title="Microsoft Outlook and Teams" icon="microsoft" href="/integrations/microsoft">
    Entra app registration and calendar sync.
  </Card>

  <Card title="Video providers" icon="video" href="/integrations/video">
    Zoom, Teams, Meet, and Jitsi.
  </Card>

  <Card title="Notifications" icon="bell" href="/integrations/notifications">
    Slack, Discord, and Telegram.
  </Card>

  <Card title="Signatures" icon="file-signature" href="/integrations/signatures">
    DocuSeal and Harly Signing.
  </Card>

  <Card title="Storage" icon="folder" href="/integrations/storage">
    Local volume and S3-compatible providers.
  </Card>

  <Card title="JOIN.com candidate import" icon="users" href="/integrations/join">
    Import candidate applications from JOIN with a one-time API token.
  </Card>

  <Card title="Greenhouse import" icon="database" href="/integrations/greenhouse">
    Import candidate profiles with a scoped Harvest API key.
  </Card>

  <Card title="Workable import" icon="database" href="/integrations/workable">
    Import profiles with a Workable token and the r\_candidates scope.
  </Card>

  <Card title="Ashby import" icon="database" href="/integrations/ashby">
    Import candidate profiles with Ashby endpoint permissions.
  </Card>

  <Card title="Lever import" icon="database" href="/integrations/lever">
    Import Lever opportunities with read-only API access.
  </Card>
</CardGroup>

## Troubleshooting pattern

1. Open **Settings → Integrations** and check the provider status indicator.
2. Verify the public origin and exact redirect URI match what is registered in
   the provider.
3. Confirm the web process received the current secret variables after the
   last restart.
4. Reconnect the workspace account if the provider returned `invalid_grant`.
5. Inspect the application or interview warning and retry the sync from its
   record rather than creating a duplicate external event.

For detailed symptoms and fixes, see [troubleshooting](/operations/troubleshooting).
