user/get
Retrieve detailed information for a single Slack user by their user ID. Returns identity fields, bot status, account status, display name, email address, and avatar URL.
When to Use
- Look up the email address for a user identified only by their Slack user ID (e.g. from a message event).
- Verify a user account is active (not deleted) before sending a direct message or kicking off a user-targeted workflow.
- Retrieve the display name for personalization in automated notification messages.
- Check whether a user ID belongs to a bot before including it in a human-only processing pipeline.
- Fetch the avatar URL to populate a profile card or dashboard widget.
Configuration
Connection
| Field | Required | Description |
botToken | Required | Slack Bot Token starting with xoxb-. Requires both users:read and users:read.email OAuth scopes to return email address. |
Operation Fields
| Field | Required | Description |
userId | Required | The Slack user identifier, always starting with U (e.g. U01ABCDEFGH). Retrieved from message events, channel member lists, or other Slack API responses. |
Sample Configuration
{
"operation": "user/get",
"connection": {
"botToken": "{{ $credentials.slackBot.token }}"
},
"userId": "{{ $trigger.slackEvent.user }}"
}
Validation Errors
| Error Code | Cause | Resolution |
user_not_found | No user with the given ID exists in the workspace. | Confirm the user ID is correct. Bot user IDs (starting with B) are not valid for users.info — use the bot's associated user ID instead. |
missing_scope | Token lacks users:read or users:read.email scope. | Add the required scopes under OAuth & Permissions in your Slack App and reinstall. |
invalid_auth | Bot token is invalid or revoked. | Regenerate the bot token and update the credential. |
Output
Success Port
| Field | Type | Description |
userId | string | Slack user ID (echoed from input). |
userName | string | Slack username (handle), unique within the workspace. |
isBot | boolean | true if the user is a bot or app. false for human users. |
deleted | boolean | true if the account has been deactivated. Deactivated users still exist in the API but cannot receive messages. |
realName | string | User's full real name as set in their Slack profile. |
displayName | string | User's display name as shown in Slack messages. |
email | string | User's workspace email address. Only populated when users:read.email scope is present. |
statusText | string | User's current status text (e.g. "In a meeting"). |
statusEmoji | string | Emoji associated with current status (e.g. :calendar:). |
avatarUrl | string | URL of the user's avatar image (512px version). |
status | string | "success" on successful retrieval. |
errorCode | string | Empty on success. Slack API error code on failure. |
payload | object | Raw Slack API response with full profile fields. |
Error Port
Activated when the user is not found or the token lacks the required scopes. Check isBot and deleted on the success path before proceeding to user-targeted operations.
Sample Output
{
"userId": "U01ALICE123",
"userName": "alice.johnson",
"isBot": false,
"deleted": false,
"realName": "Alice Johnson",
"displayName": "Alice",
"email": "alice.johnson@acme.com",
"statusText": "In a meeting",
"statusEmoji": ":calendar:",
"avatarUrl": "https://avatars.slack-edge.com/2026-01-01/U01ALICE123_512.jpg",
"status": "success",
"errorCode": "",
"payload": {
"ok": true,
"user": {
"id": "U01ALICE123",
"name": "alice.johnson",
"deleted": false,
"is_bot": false,
"profile": {
"real_name": "Alice Johnson",
"display_name": "Alice",
"email": "alice.johnson@acme.com",
"status_text": "In a meeting",
"status_emoji": ":calendar:",
"image_512": "https://avatars.slack-edge.com/2026-01-01/U01ALICE123_512.jpg"
}
}
}
}
Expression Reference
| Expression | Result |
{{ $output.getUser.email }} | User's email address for cross-system lookup or notification routing. |
{{ $output.getUser.displayName }} | Display name for personalizing messages (e.g. "Hi Alice,"). |
{{ $output.getUser.isBot }} | Boolean — use in a condition to filter bots from human user workflows. |
{{ $output.getUser.deleted }} | Boolean — check before sending DMs to avoid sending to deactivated accounts. |
{{ $output.getUser.avatarUrl }} | Avatar image URL for profile card or dashboard. |
{{ $output.getUser.userId }} | User ID for use in downstream Slack API nodes. |
Node Policies & GuardRails
| Policy Area | Recommendation |
| Bot Filtering | Always check isBot when processing messages from channels. Bot user IDs should be excluded from human-targeted operations like DMs and on-call routing. |
| Deleted Users | Check deleted: true before sending messages or assigning tasks. Deactivated accounts still appear in Slack API responses but cannot interact. |
| Email Scope | The users:read.email scope is separate from users:read. If email returns empty, confirm this scope is added and the app has been reinstalled after scope changes. |
| PII Handling | Email addresses and real names are PII. Do not log these fields to unencrypted outputs. Mask or exclude from workflow logs. |
| Caching | User identity rarely changes. Cache results for 10–30 minutes in high-frequency workflows to reduce API calls and avoid rate limits. |
Examples
Look Up Email from Slack ID for CRM Sync
When a Slack event provides a user ID, look up the email and use it to match the user in a CRM system.
{
"operation": "user/get",
"userId": "{{ $trigger.slackEvent.user }}"
}
// Then in CRM lookup: search by {{ $output.getUser.email }}
Guard Against Bot Messages
In a support ticket workflow, verify the message sender is a human before creating a ticket.
{
"operation": "user/get",
"userId": "{{ $trigger.message.user }}"
}
// Branch condition: {{ $output.getUser.isBot }} === false AND {{ $output.getUser.deleted }} === false
Personalize Notification Message
Retrieve display name before sending a personalized DM to the user.
{
"operation": "user/get",
"userId": "{{ $input.targetUserId }}"
}
// Then in message/send: "Hi {{ $output.getUser.displayName }}, your report is ready."