Skip to main content
Notifications are workspace integrations. Configure them in Settings → Integrations, select the events to deliver, and send a test before enabling high-volume alerts.

Slack

Create a Slack OAuth app with the redirect URI:
Configure the client ID and secret in the server environment or per workspace in the Slack settings card. Connect the workspace, choose a channel where the Harly bot is a member, and run the test notification. Harly stores credentials and the workspace token encrypted.

Discord

Create an incoming webhook in the destination channel and paste it into the Discord integration card. The URL is encrypted and never returned in status responses. Rotate it in Discord if it has been exposed.

Telegram

Create a bot with BotFather, copy the bot token once, and configure the target chat ID in the Telegram integration. Send a test message before enabling candidate events.

Slack setup in detail

1

Create the OAuth app

Go to api.slack.com/apps and create an app for your workspace. Add the redirect URI:
Copy the Client ID and Client Secret from Basic Information.
2

Add installation variables

For self-hosted single-tenant deployments, add both values to your server environment and restart Harly. Multi-tenant operators can enter encrypted credentials directly in the Slack settings card:
3

Connect the workspace

Open Settings → Integrations → Slack, select Connect, and approve the Slack authorization. Choose the channel where recruiting notifications should appear. The Harly bot must already be invited to that channel; Harly only lists channels where the bot can post.
4

Choose events

Enable the events you want. Most teams enable only the highest-signal events to keep channel volume manageable:
  • Application received
  • Candidate stage change
  • Offer accepted
  • Interview scheduled or canceled
5

Test

Select Send test notification. Confirm the message appears in the configured channel.

Discord setup in detail

1

Create an incoming webhook

In Discord, open the destination channel, go to Settings → Integrations → Webhooks, and create a new webhook. Copy the webhook URL.
2

Paste into Harly

Open Settings → Integrations → Discord and paste the webhook URL. The URL is encrypted at rest and never returned in API responses.
3

Test

Select Send test notification. Confirm the embed appears in the channel.
Rotate the webhook URL in Discord if it has been exposed. Harly does not support webhook URL rotation from the UI.

Telegram setup in detail

1

Create a bot

Open BotFather on Telegram, send /newbot, and follow the prompts. Copy the bot token once.
2

Find the chat ID

Add the bot to the target channel or group, send a test message, and retrieve the chat ID from the Telegram API.
3

Configure in Harly

Open Settings → Integrations → Telegram, paste the bot token and chat ID, and save.
4

Test

Select Send test notification. Confirm the message appears in the chat.

Delivery and safety

Notification delivery is asynchronous and at-least-once. A provider outage must not block candidate mutations. Harly persists Slack deliveries, retries transient failures through the scheduler, honors Slack rate-limit backoff, and dead-letters permanent failures for operator review.
Slack messages contain event summaries, candidate names, and job titles only. Harly does not send resumes, email addresses, phone numbers, personal contact data, or full candidate notes to Slack. Prefer a private channel and links back to Harly.

Troubleshooting

Next steps

Email

Configure outbound and inbound email.

Calendar sync

Connect Google Calendar or Outlook for interview scheduling.