With Slack connected, approvers get leave requests as Slack direct messages they can approve or decline on the spot, employees are told about decisions, and everyone can use the /timeleaf command. You can also post a daily "who's out today" digest to a channel.
What you need
- Any plan. Slack works on every plan, including Starter.
- A TimeLeaf admin account.
- Permission to install apps in your Slack workspace (a Slack workspace admin or owner, or a member if your workspace lets members install apps).
- Employees' Slack email addresses matching their TimeLeaf email addresses, because that is how TimeLeaf finds each person in Slack.
Connect Slack
Open the Slack tab
Go to Integrations › Messengers and open the Slack tab. (The Connect Slack → link on Integrations › Connected Apps goes to the same place.)
Add to Slack
Click Add to Slack. This installs TimeLeaf's own Slack app; there is nothing to create in Slack. Choose your Slack workspace and click Allow. The app asks for these permissions:
chat:writeto send messagesim:writeto send direct messagescommandsfor the/timeleafcommandusers:readandusers:read.emailto find each employee in Slack by email
Check it is connected
Back in TimeLeaf, the Slack tab shows Connected with the TimeLeaf Slack app and your Slack workspace's name. Approval requests and decisions now arrive as direct messages. Nothing else is needed.
A Slack workspace can be connected to only one TimeLeaf workspace at a time. Org-wide Enterprise Grid installs are not supported; install TimeLeaf to a single Slack workspace.
To disconnect, click Disconnect on the Slack tab. This removes the TimeLeaf app from your Slack workspace.
Using your own Slack app instead
If you would rather run a Slack app you own, open Use your own Slack app instead on the Slack tab (shown while Slack is not connected) and follow the steps there:
- Create an app "From scratch" at api.slack.com/apps.
- Under OAuth & Permissions, add the Bot Token Scopes
chat:write,commands,users:read,users:read.emailandim:write. - Under Interactivity & Shortcuts, turn Interactivity on and set the Request URL to
https://<your-workspace>.timeleaf.io/api/webhooks/slack. - Under Slash Commands, create
/timeleafwith the same Request URL. - Under Event Subscriptions, turn events on with the same Request URL and subscribe to the bot events
app_uninstalledandtokens_revoked. - Install the app to your workspace, paste the Bot Token (
xoxb-…) and Signing Secret into TimeLeaf, and click Save Slack Configuration.
The tab then shows Connected to Slack (your own app), and messages work the same way.
What Slack does
Approvals. When an employee submits a leave request, the approver gets a direct message with Approve and Decline buttons. The decision is recorded in TimeLeaf straight away, and the employee is told.
Other messages. Timesheet approvals and decisions, shift assignments, on-call handoffs, overtime opportunities, "still working?" prompts and approval cards for changes an AI assistant proposes also arrive as direct messages.
The /timeleaf command. Employees type /timeleaf followed by a command:
| Command | What it does |
|---|---|
check | Show your leave balances |
request | Book leave |
whosout | See who is off (replies only to you) |
schedule | Your upcoming shifts |
clockin / clockout / stillworking | Clock in and out, or confirm you are still working (Professional and above) |
timesheet / submitsheet | See or submit this week's timesheet (Professional and above) |
timebank | Your time bank balance (when the time bank is on) |
overtime | Open overtime opportunities (with the broadcasting add-on) |
pending | Requests waiting for your decision (approvers) |
team | A snapshot of your team today (managers) |
Daily who's-out digest
Off by default.
Invite the app to the channel
In Slack, invite the TimeLeaf app to the channel the digest should post to, and copy the channel's ID.
Add the digest channel
On the Slack tab, click Add Slack Config. Enter a Display Name and the Channel ID, tick Post a daily "who's out today" digest to this channel (invite the app to it first) and choose the Post time (company time zone), up to 22:59. Save.
The digest lists everyone on approved leave that day by name, with "all day" or "part of the day", never the leave type. It posts every day someone is out, weekends included, and posts nothing when everyone is in. There is no token to enter here: the connected app is always used.
Troubleshooting
| Message or problem | What to do |
|---|---|
| "That Slack workspace is already connected to another TimeLeaf workspace." | Disconnect Slack in the other TimeLeaf workspace first, then add it here. |
| "The Slack install link expired or was started by someone else." | Click Add to Slack again and finish within a few minutes, signed in as the same admin. |
| "Slack was approved, but TimeLeaf could not finish connecting it." | Click Finish connecting in the message. |
| "The TimeLeaf Slack app was removed from your Slack workspace." | Someone removed the app in Slack. Click Add to Slack again. |
| "Slack is not available on this workspace yet." | The TimeLeaf Slack app isn't available for your workspace. Use your own Slack app instead, or contact TimeLeaf support. |
| A person gets no direct messages | Their Slack email must match their TimeLeaf email. |
| The digest doesn't post | Invite the app to the channel and check the Channel ID. |