A member's presence changed

Facts

Works with

RTM

Single-user presence change event:

{
    "type": "presence_change",
    "user": "U024BE7LH",
    "presence": "away"
}

Multiple-user batch presence change event:

{
    "type": "presence_change",
    "users": ["U024BE7LH", "U012EA2U1"],
    "presence": "away"
}

The presence_change event is sent to connections for a workspace when a user changes presence status and the app has subscribed using presence_sub. Clients can use this to update their local list of users' presence.

RTM API Presence is now only available via subscription. As of January 2018, presence_change events are not dispatched without presence subscriptions established with presence_sub. Relatedly, current user presence status is no longer communicated in rtm.start. Learn more.

If a user updates their presence manually, the manual_presence_change event will also be sent to all connected clients for that user.

There are two forms of this event. When only one user's presence is being communicated, you'll receive a user field with a single user ID present within. This form is deprecated.

Pass the batch_presence_aware=1 parameter to rtm.start or rtm.connect to instruct the Slack message server to batch your presence messages and send a users attribute instead, containing an array of users changing to the same status.

Sometimes you'll get a single event for a single user but if you use batch_presence_aware=1, that single user event will be single item in the users array.

In case you missed that: if you send batch_presence_aware=1 then the shape of presence_change events changes. Instead of a string-based user field, you'll get users, an array.

If you're writing a library that supports presence_change events, you should be prepared to handle both kinds of presence events.

When an event occurs, we will send an HTTP POST request to your Request URL. The outer payload is uniform across all Events API methods, and contains fields like team_id and event. Learn more