A user joined a public channel, private channel or MPDM.

Facts

Works with

RTMEvents API
{
    "type": "member_joined_channel",
    "user": "W123ABC456",
    "channel": "C123ABC456",
    "channel_type": "C",
    "team": "T123ABC456",
    "inviter": "U123456789"
}

The member_joined_channel event is sent to all WebSocket connections and event subscriptions when users join all channel types including public and private channels, except direct messages between two users. For direct messages, there can only ever be two users, and members cannot be added. It's also triggered upon creating a new channel.

The provided user value is a user ID belonging to the user that joined the channel.

The channel value is the ID for a public channel or private channel (AKA group).

The channel_type value is a single letter indicating the type of channel used in channel:

  • C - typically a public channel
  • G - private channels (or groups) return this channel_type

Since March 2021, both public and private channels created have a prefix of C. If you need to know the channel type, refer to conversations.info.

The team identifies which workspace the user is from.

If the user was invited, the message will include an inviter property containing the user ID of the inviting user. The property will be absent when a user manually joins a channel, or a user is added by default (e.g. the #general channel). Also, the property is not available when a channel is converted from a public to private, where the channel history is not shared with the user.

This example illustrates an absent inviter property, a result of a channel converting from public to private:

{
    "type": "member_joined_channel",
    "user": "W123ABC456",
    "channel": "G123ABC456",
    "channel_type": "G",
    "team": "T123ABC456"
}

This event is supported as a bot user subscription in the Events API. Workspace event subscriptions are also available for tokens holding at least one of the channels:read or groups:read scopes. Which events your app will receive depends on the scopes and their context. For instance, you'll only receive member_joined_channel events for private channels if your app has the groups:read permission.

Even bot users receive this delightful event via Bot User subscription, when joining a channel.

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