Back to Blog
Guide

Slack: Get Notified When Someone Comes Online (No Built-In Alert)

Slack has no alert for when a coworker becomes active. No preference, Workflow Builder trigger or profile button does it. You can watch their green dot, send a message they will see when they return, or run a short script that checks users.getPresence every minute and DMs you.

Slack Green Team
September 26, 2026
October 7, 2026
5 min read
Share:
slack presence
slack api
notifications
slack status

Slack cannot notify you when someone comes online. There is no preference for it, no button on a member's profile, and no Workflow Builder trigger for a change in presence. Microsoft Teams has this feature, but Slack does not. You have three options. You can glance at the person's dot. You can send the message now, so it reaches them when they return. Or you can run a short script that checks users.getPresence every minute and sends you a DM when the dot turns green. The script is below.

An online alert in Slack is also less reliable than it sounds. In our test on 4 October, simply opening Slack in a browser tab turned the dot green within 3 seconds, with no typing or clicking, and closing the tab turned it grey again within 3 seconds. Green means a Slack window is open, not that the person is free.

Ways to know when someone is active in Slack

OptionAlerts you?SetupNotes
Slack built-in alertNot availableNoneNo preference, profile button or workflow trigger
Watch the green dotNo, you have to lookNoneSidebar, DM header and profile show it live
Send the message nowThey see it on returnNoneTheir reply is your alert
Schedule the messageThey see it at a set timeRight-click the send arrowSee how to delay and schedule Slack messages
Presence script (users.getPresence)Yes, by DMSlack app with users:read and chat:writeChecks once a minute
Microsoft Teams presence notificationsYesBuilt inTeams only, for comparison

For most people the second and third rows are enough. If you wait for a manager to come back, write the message and send it. Slack notifies them when they open it, and their reply tells you they are there.

Status text is a separate signal from presence: an app gets a user_status_changed event within a second of a change, timed on Slack status change notification.

Why Slack has no online alert

Slack's presence model is simple. A user is active while at least one Slack client is connected, and the person has used it in the last 10 minutes. Otherwise the user is away. Slack's developer docs describe it that way, and the details are in Slack active status explained.

Slack does not publish presence changes to the tools that most people build with:

  • • Workflow Builder triggers are messages, emoji reactions, schedules, new channel members, links and webhooks. None of them fire on presence.
  • • The Events API sends no presence events at all.
  • • presence_change events exist only on the older RTM connection, and you must subscribe to each user with presence_sub. Only classic Slack apps can open an RTM connection, and Slack stopped letting anyone create classic apps in 2024, so for a new app that route is closed.
  • Our Slack presence API guide lists each method with its scope and rate limit. The one that works for any app is users.getPresence, which you ask again and again.

    Get a DM when someone becomes active (Python script)

    You need a Slack app in your workspace with a bot token (xoxb-) and two scopes: users:read to read presence and chat:write to send the DM. Creating one takes a few minutes at api.slack.com/apps, as described in Slack bot token: how to get one. Your workspace may require an admin to approve the app.

    Install the official SDK with pip install slack_sdk, then save this as presence_alert.py:

    import os
    import time
    from slack_sdk import WebClient
    
    client = WebClient(token=os.environ["SLACK_BOT_TOKEN"])  # scopes: users:read, chat:write
    WATCH = ["U0123ABCD"]   # member IDs of the people to watch
    ME = "U0999WXYZ"        # your own member ID; the bot DMs you here
    last = {}
    
    while True:
        for uid in WATCH:
            presence = client.users_getPresence(user=uid)["presence"]  # "active" or "away"
            if last.get(uid) == "away" and presence == "active":
                client.chat_postMessage(channel=ME, text=f"<@{uid}> is active in Slack now")
            last[uid] = presence
        time.sleep(60)

    Run it with SLACK_BOT_TOKEN=xoxb-... python presence_alert.py. It sends a DM only on a change from away to active, not every minute. To find a member ID, open the person's profile, select the three dots, then Copy member ID (screenshot of that menu).

    Three limits to know:

  • • users.getPresence is a Tier 3 method, about 50 calls a minute. One call per person per minute stays well under it for a handful of people.
  • • The alert can lag by up to a minute, because the script checks once a minute.
  • • The script must keep running. Close the laptop and it stops. A small server or a scheduled cloud job can run it all day.

Never appear "away" on Slack again

Cloud-based. No downloads. Works 24/7 even when your laptop is off.

We ran the alert loop: how fast it fires

On 4 October we ran the same loop against one account in a test workspace, checking users.getPresence every 15 seconds, and opened and closed Slack in a browser tab while it ran:

Time (seconds)What we didpresenceconnection_count
0No Slack window openaway0
15Still nothing openaway0
34Opened Slack in a browser tab, touched nothing
35Next checkactive1
35The loop saw away to active and posted the DM
66Still open, still no inputactive1

In a second run with checks every 2.5 seconds, the account read active 2.5 seconds after the tab opened and away at the first check after the tab closed. So the alert fires at your next check after the person opens Slack, not when they start working. This is the DM the loop posted:

A Slack DM from the presence loop that reads: @sieun is active in Slack now

Checking with users.getPresence did not itself change the result: the account stayed away with 0 connections through every check while no Slack window was open. We deleted the test DM afterwards.

What a green dot does and does not tell you

The alert fires when one of the person's Slack windows connects, as our test above shows. It does not mean they are free to talk. Someone can be green while doing anything at the computer, or grey after a long call where they touched nothing for 10 minutes.

The dot also turns green for reasons the person may not control. A phone with Slack open on screen keeps them active, and a presence tool such as Slack Green can keep a dot green through set working hours while the person's laptop is shut. So treat the alert as "Slack is open", and write the message anyway.

Watching when a coworker comes online is also the first step of the dot-tracking that monitoring apps sell. Presence-logging tools use the same users.getPresence loop to build an "online hours" report. What employers can see this way is in can Slack be used to monitor employees. Use the script for one colleague you wait on, not to log a team.

How Teams does it, for comparison

Microsoft Teams has a built-in version. In Teams, open Settings > Notifications and activity > Presence, select Manage notifications, and add the people to track. Microsoft's support page says you then "see when people you work with are available or offline." If your company uses both apps, keep Teams and Slack active covers how the two presence systems differ.

Slack online alert questions

Can Slack notify me when someone is active? Not by itself. You need a script or app that checks users.getPresence and messages you.

Can I get a notification when someone comes online in a Slack DM? No. Opening a DM shows their dot, but Slack sends no alert when it changes.

Does Slack tell people I am watching their status? No. users.getPresence does not notify the person you check.

Can I see when someone was last online in Slack? No. Slack shows only the current dot. See does Slack show last seen.

Always Active

Stop Jiggling Your Mouse.

Join hundreds of remote workers who never worry about their Slack status. Set it up once, stay green forever.

Related Articles

Guide

How to See All Your DMs in Slack, Including the Hidden Ones

The DMs tab lists your direct messages with people. App DMs, Slackbot and DMs with deleted accounts sit elsewhere. We compared the tab with the full list the Slack API returned.

Slack Green Team
Guide

Slack Images Not Showing? 5 Causes We Reproduced

We uploaded images to a Slack test channel and then switched each image setting off, ran /collapse, and posted from a bot that was not in the channel. Five causes, each reproduced.

Slack Green Team
Guide

How to Message Yourself on Slack (and What It Notifies)

Your own name under Direct messages opens a private DM with yourself. We sent it a note, a file, a scheduled message and a reminder, and checked which ones raised a badge.

Slack Green Team