Product

Slack 봇 토큰과 Incoming Webhook URL은 어디서 가져오나

Slack API 앱을 만들고, Bot User OAuth Token과 Incoming Webhook URL을 발급받는 방법을 단계별로 정리합니다.

Slack에 메시지를 전송할 때도 결국 토큰이나 웹훅 URL이 필요합니다.

Slack은 MCP 서버로도 자주 연결되지만, 직접 API를 쓰거나 워크플로우를 만들 때는 직접 값을 가져와야 합니다. 이 글은 두 가지 경로를 모두 정리합니다.

어떤 방식을 쓸까

선택지는 두 가지입니다.

  • Bot User OAuth Token: 봇이 여러 채널을 읽고 쓸 수 있습니다. 유연하지만 권한 설정이 필요합니다.
  • Incoming Webhook URL: 특정 채널로만 메시지를 전송할 때 쓰입니다. 빠르게 붙이기 좋습니다.

알림용이라면 웹훅이, 대화형 자동화라면 봇 토큰이 더 맞습니다.

앱 만들기

  1. Slack API 페이지로 갑니다.
  2. Create New AppFrom scratch를 선택합니다.
  3. 앱 이름과 대상 workspace를 정하고 Create App을 누릅니다.

이제 토큰과 웹훅을 각각 설정할 수 있습니다.

Bot User OAuth Token 발급하기

  1. 왼쪽 메뉴 OAuth & Permissions로 갑니다.
  2. Scopes 아래 Bot Token Scopes에서 필요한 scope를 추가합니다.
    • 메시지를 전송할 때: chat:write
    • 채널 목록 조회: channels:read
    • 사용자 정보 조회: users:read
  3. 페이지 상단 Install to Workspace를 누릅니다.
  4. 권한을 확인하고 Allow를 누릅니다.
  5. Bot User OAuth Token이 표시되면 xoxb-로 시작하는 문자열을 복사합니다.

이 토큰으로 chat.postMessage 등의 API를 호출할 수 있습니다.

봇을 채널에 초대하기

chat:write 권한이 있어도 채널에 들어가 있지 않으면 메시지를 전송할 수 없습니다.

  1. 대상 채널에서 /invite @앱이름을 입력합니다.
  2. 초대가 완료되면 봇이 해당 채널에 참여한 것입니다.

또는 OAuth URL에 chat:write.public scope를 추가하면 공개 채널에 자동으로 메시지를 전송할 수 있습니다.

Incoming Webhook URL 발급하기

  1. 왼쪽 메뉴 Incoming Webhooks로 갑니다.
  2. Activate Incoming WebhooksOn으로 바꿉니다.
  3. Add New Webhook to Workspace를 누릅니다.
  4. 대상 채널을 선택하고 Allow를 누릅니다.
  5. 생성된 URL을 복사합니다.

이 URL에 JSON payload를 POST하면 해당 채널로 메시지가 전송됩니다.

정리하면

시작 문자열용도
Bot User OAuth Tokenxoxb-...다양한 API 호출
User OAuth Tokenxoxp-...사용자 권한 기반 작업
Webhook URLhttps://hooks.slack.com/...단일 채널 메시지 전송

주의할 점

Bot token과 User token은 용도가 다릅니다. 봇이 자동화를 할 때는 xoxb-로 시작하는 Bot token을 사용해야 합니다.

또한 scope를 추가할 때마다 Reinstall to Workspace가 필요할 수 있습니다. 권한이 추가되면 토큰도 갱신되는 경우가 있으니, 토큰이 갑자기 안 먹히면 재설치부터 확인하세요.

마지막으로 웹훅 URL은 외부에 노출되면 누구나 해당 채널에 메시지를 전송할 수 있습니다. .env로 관리하고 필요하면 Slack에서 URL을 재발급받으세요.