Connect Slack so your team can ask CloudThinker questions in channels and receive alerts and review summaries where they already work.
Connect Slack once and anyone in a mapped channel can mention @CloudThinker to ask about your cloud, then keep talking in the thread. The same connection delivers notifications, such as alerts and code review summaries, to the channels you choose.
A CloudThinker organization Owner or Admin. Other roles can view the Slack page but can’t connect or change it.
A Team, Scale, or Enterprise plan. On the Free plan the Slack card shows Requires Team plan or above and an Upgrade Plan button. See pricing.
Permission to install apps in your Slack workspace. If your Slack workspace uses app approval, a Slack Workspace Owner or app manager has to approve CloudThinker.
CloudThinker hosted at app.cloudthinker.io. A self-hosted install shows Not available on self-host on the Slack card.
Each Slack workspace can connect to one CloudThinker organization.
A channel the bot is in but that has no mapping still runs requests, in the organization Owner’s default workspace and with that workspace’s connections. There’s no setting to make unmapped channels refuse requests. Check the mapping right after every invite, and remove the bot from channels that shouldn’t reach your infrastructure.
1
Open the Slack integration
Go to Admin Settings → Integrations, find the Slack card, and click Go to configure.
2
Click Connect with Slack
Slack opens its authorization screen. Pick the Slack workspace and click Allow.Connecting replaces any Slack workspace this organization connected before.Success state: you return to the Slack page with a Slack connected successfully message, and the Setup card shows your Slack workspace name and Team ID under Connect to Slack.
3
Invite the bot to a channel
In Slack, open the channel your team will use and run:
/invite @CloudThinker
CloudThinker maps the channel to a CloudThinker workspace automatically. It picks the organization Owner’s default workspace, or the oldest workspace if the Owner has none.Success state: the channel appears under Configure channel-workspace mappings on the Slack page.
4
Check which workspace each channel uses
Under Configure channel-workspace mappings, open the Select workspace menu on each channel row and pick the workspace whose connections that channel should use.Success state: a Channel mapping updated message appears and the row shows the new workspace.
5
Send a test message
In the channel, mention the bot with a question:
@CloudThinker What drove our cloud spend up last week?
Success state: CloudThinker replies in a thread under your message. Reply in that thread to follow up. You don’t need to mention the bot again.
In a regular channel every request runs as one account; only war rooms match the sender by email.
CloudThinker doesn’t match Slack users to CloudThinker accounts in regular channels, and Slack has no account linking. Unlike Google Chat, which runs each request as the sender, every request runs as one account: whoever created the mapped workspace, or the organization Owner for a workspace the organization owns, with that account’s access. A Slack user needs no CloudThinker account to ask a question. CloudThinker records the Slack sender’s name and Slack user ID on each message in the conversation.Incident war rooms are the exception. A war room is a Slack channel that Resolve creates for one incident (see Add a Slack war room). There, CloudThinker matches the sender by email and runs the request as that CloudThinker user, or refuses it if there’s no match with access. War-room questions also appear in Admin Settings → Audit Logs under the sender’s name.Because of this, treat channel membership as access. Map a channel only to a workspace that everyone in the channel may use.
Every request starts with @CloudThinker. After that, you write the same requests you’d type in the web app.Talk to agents in plain language. The full pattern is:
@agent #connection your request
@agent(optional) — leave it out and CloudThinker answers, or mention one of your workspace’s custom agents.
#connection(optional) — the connection to use, such as your AWS account or a Kubernetes cluster.
/(optional) — run a skill or a command.
Your request — what you need, in your own words. Add any context inline.
@CloudThinker Which EC2 instances ran under 10% CPU for the last 14 days?@CloudThinker Summarize open critical security findings for production@CloudThinker Why did checkout latency spike at 14:00 UTC today?
What to expect in the thread:
You see
What it means
is typing…
CloudThinker is working on the request
A reply in the thread
The answer. The full conversation also appears in the CloudThinker web app
Permission required to use a tool, with View in CloudThinker
The request needs an action that your Approvals setup holds for a person. You can’t approve in Slack: open the link and an allowed approver approves or rejects it in the web app
CloudThinker answers mentions in channels and replies in its own threads. To start a new topic, mention @CloudThinker in a new message. Private channels work the same way once you invite the bot. CloudThinker doesn’t answer direct messages: its Home tab in Slack tells you to mention it in a channel. CloudThinker reads the text of your message only, so paste the content you want it to read instead of attaching a file.
Slack is also a destination for workspace notifications. Each CloudThinker workspace has its own Slack channel, so switch to the right workspace in the workspace switcher at the top of the sidebar first.
1
Open notification settings
On the Slack page, under Configure notifications, click Go to notification settings. You can also go to More → Workspace settings → Notifications.
2
Pick a default channel for the workspace
Under Delivery channels, find the Slack card (it reads Pick a channel until one is set). Click its settings icon (Change Slack channel), then search for and select a channel under Slack Notification Channel. You can pick any public channel, or a private channel the bot was invited to.
3
Override per notification type (optional)
Under What to notify me about, turn on the Slack cell for an event, then click the → #channel chip next to it to send that event to a different channel. The Alerts and Keepers rows also have a severity picker. See Notifications for the full list of types.Success state: the next matching event posts in the chosen channel.
Messages that mention @CloudThinker, and replies in threads CloudThinker started. When you call it into an existing thread, it can read that thread for context
What CloudThinker stores
Your requests and its replies, saved as a conversation in the mapped workspace, plus the link between each Slack thread and that conversation
CloudThinker requests these Slack bot scopes:
Scope
Why
app_mentions:read
Receive messages that mention @CloudThinker
channels:history, groups:history
Read replies in its threads, and the thread you call it into, in public and private channels
channels:read, groups:read
List channels for the mapping table and the notification picker
channels:manage
Create incident war-room channels and invite responders
chat:write
Post replies and notifications
chat:write.public
Post notifications in a public channel without joining it first
files:write
Post files CloudThinker produces, such as reports, in the thread
users:read
Show the sender’s display name on the conversation
users:read.email
Match a war-room sender to a CloudThinker account by email
Change Select workspace on its row in Configure channel-workspace mappings
Stop routing a channel
In Slack, run /remove @CloudThinker in the channel. That also deletes the row. Don’t remove only the row: the bot stays in the channel, and the channel falls back to the default workspace
Reconnect for new permissions
If the page shows Slack needs one more permission, click Reconnect Slack. Existing messages and notification channels keep working
Disconnect
Click Disconnect from Slack at the bottom of the Slack page. CloudThinker uninstalls the app from Slack and deletes every channel mapping, the links between Slack threads and conversations, and the Slack notification settings. Reconnecting starts from scratch
Slack denied or cancelled the authorization, or your Slack workspace requires admin approval. Ask a Slack Workspace Owner or app manager to approve CloudThinker in Slack’s app management, then click Connect with Slack again.
Slack workspace already connected
That Slack workspace is already connected to another CloudThinker organization. A Slack workspace can connect to only one. Disconnect it from the other organization first, or use a different Slack workspace.
Not authorized
Only organization Owners and Admins can configure Slack. Ask one of them to connect it, or to change your organization role.
The bot doesn't reply
Check that the bot is in the channel (/invite @CloudThinker) and that you mentioned it in a new message. A message without the mention gets a reply only inside a thread CloudThinker already started.If CloudThinker replies No workspace is configured for this channel, it couldn’t find a workspace to use: the organization has no active workspace, or the channel’s row points to a workspace outside this organization. Open the Slack page and set a workspace on the channel’s row.
The answer uses the wrong account or cluster
The channel is mapped to a different workspace than you expected. Check its row under Configure channel-workspace mappings and change Select workspace.
You don't have access to this incident in CloudThinker
Incident war-room channels only run requests from people who have a CloudThinker account in that workspace with access to incidents and chat. CloudThinker matches you by email, so use the same email in Slack and CloudThinker, or ask a workspace Admin for access.
Notifications don't arrive
Check that a Slack Notification Channel is set for the workspace, that the notification type is on, and that the event meets the severity threshold. For a private channel, invite the bot first.
{"docsConfig":{"theme":"mint","$schema":"https://mintlify.com/docs.json","name":"CloudThinker","colors":{"primary":"#0c93c0","light":"#2897c1","dark":"#0c93c0"},"logo":{"light":"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/light.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=a56a571509d1cd246f5b0e68db015e5f","dark":"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/dark.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=4252f33496bbaa527e5408338963a31e"},"favicon":"https://mintcdn.com/cloudthinker/PoYnb4baZ54aMMQW/favicon.ico?fit=max\u0026auto=format\u0026n=PoYnb4baZ54aMMQW\u0026q=85\u0026s=6570e99ed2a763d9632c8f933fe9c164","background":{"color":{"light":"#eef0f3","dark":"#000000"}},"navbar":{"links":[{"href":"https://discord.com/invite/sRBWRWtaNR","label":"Community"},{"href":"https://cloudthinker.io/blogs","label":"Blog"},{"href":"https://cloudthinker.io/contact","label":"Contact us"}],"primary":{"type":"button","label":"Open app","href":"https://app.cloudthinker.io"}},"footer":{"socials":{"x":"https://x.com/cloudthinkerio?s=21","linkedin":"https://www.linkedin.com/company/cloud-thinker","github":"https://github.com/cloudthinker-ai","discord":"https://discord.com/invite/sRBWRWtaNR","youtube":"https://www.youtube.com/@cloudthinkerai"}},"seo":{"indexing":"navigable"},"fonts":{"family":"Poppins"},"contextual":{"options":["copy","view","chatgpt","claude"],"display":"header"},"metadata":{"timestamp":false},"styling":{"latex":true},"navigation":{"languages":[{"language":"en","href":""},{"language":"vi","href":"vi"},{"language":"ja","href":"ja"},{"language":"ko","href":"ko"}]}},"deployment":{"deploymentMetadataValue":{"subdomain":"cloudthinker","hasAudioNarration":false,"actualSubdomain":"cloudthinker","customDomains":["docs.cloudthinker.io"],"gitSource":{"type":"github","owner":"nhat-tranvan","repo":"docs","deployBranch":"main","contentDirectory":"","isPrivate":false,"mountPath":"","label":""},"chroma":{"liveDeploymentHistoryId":"6ae8c897885ca613095404a9","collectionId":"573e940e-d4af-4ec9-bbd8-bbe393b421c6","schemaVersion":"v3","latestBuiltDeploymentHistoryId":"6ae8c897885ca613095404a9"},"feedback":{"thumbs":true,"edits":true,"issues":true,"agentFeedback":true},"entitlements":{},"buildId":"6ae8c897885ca613095404a9","clientVersion":"0.0.4045","searchFilterCounts":[{"language":"vi","tag":"Nền tảng","count":130},{"language":"vi","tag":"Kết nối","count":100},{"language":"default","tag":"Platform","count":67},{"language":"en","tag":"Platform","count":63},{"language":"ja","tag":"プラットフォーム","count":63},{"language":"ko","tag":"플랫폼","count":63},{"language":"vi","tag":"Sản phẩm","count":54},{"language":"default","tag":"Connections","count":52},{"language":"en","tag":"Connections","count":49},{"language":"ja","tag":"接続","count":48},{"language":"ko","tag":"연결","count":48},{"language":"vi","tag":"Tài nguyên","count":39},{"language":"default","tag":"Products","count":33},{"language":"vi","tag":"Học","count":30},{"language":"en","tag":"Products","count":29},{"language":"ja","tag":"プロダクト","count":29},{"language":"ko","tag":"제품","count":29},{"language":"default","tag":"Resources","count":26},{"language":"vi","tag":"Bắt đầu","count":26},{"language":"vi","tag":"Observability \u0026 Monitoring","count":24},{"language":"vi","tag":"Resolve","count":20},{"language":"default","tag":"Learn","count":18},{"language":"default","tag":"Agentic Infrastructure Operations - Engineer Edition","count":18},{"language":"vi","tag":"Agentic Infrastructure Operations - Engineer Edition","count":18},{"language":"vi","tag":"Databases","count":16},{"language":"en","tag":"Get started","count":15},{"language":"ja","tag":"はじめに","count":15},{"language":"ko","tag":"시작하기","count":15},{"language":"default","tag":"Review","count":13},{"language":"en","tag":"Resources","count":13},{"language":"ja","tag":"リソース","count":13},{"language":"ko","tag":"리소스","count":13},{"language":"default","tag":"Get started","count":12},{"language":"en","tag":"Monitoring","count":12},{"language":"en","tag":"Learn","count":12},{"language":"en","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"ja","tag":"Observability \u0026 Monitoring","count":12},{"language":"ja","tag":"学ぶ","count":12},{"language":"ja","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"ko","tag":"Observability \u0026 Monitoring","count":12},{"language":"ko","tag":"배우기","count":12},{"language":"ko","tag":"Agentic Infrastructure Operations - Leadership Edition","count":12},{"language":"en","tag":"Resolve","count":11},{"language":"ja","tag":"Resolve","count":11},{"language":"ko","tag":"Resolve","count":11},{"language":"default","tag":"Resolve","count":9},{"language":"en","tag":"Enterprise","count":9},{"language":"default","tag":"Set up","count":8},{"language":"ja","tag":"Databases","count":8},{"language":"ko","tag":"Databases","count":8}]},"assistantConfig":{},"basePath":"","hasChatPermissions":false,"hasWebMcpPermissions":false,"toggles":[{"name":"kill-isr","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-mintlify-slack","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"agent-integrations-settings","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-pr-grouping","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"custom-prefix","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"analytics-v7","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"user-flows-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"no-publish-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-onboarding","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"llms-txt-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving-live","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"stripTemperatureMiddleware","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"support-platform-pylon-zendesk","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"snapshot-serving","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"instant-rollback","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications-server","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"granular-notifications","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automations-fable","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fixed-ai-action-pricing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"automation-resolve-merge-conflict","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"scoped-publishing","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"mintql","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"page-level-analytics","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"editor-version-history-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-page-v2","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"full-page-search","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workspace-projects","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"assistant-v5","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"byok-sep-25","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"fork-pr-previews","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"revalidation-jwt","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"vite-origin","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"billing-updated-9-15","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-sso-scim","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"hobby-abuse-scan","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"dashboard-inbox","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-signup","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"turbopuffer-dual-write","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"workos-enabled","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"approve-review-flow","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false},{"name":"sso-setup-deadline-banner","enabled":true,"variant":{"name":"disabled","enabled":false,"feature_enabled":true},"impressionData":false}],"googleFontsInlined":true},"customCss":[{"filePath":"style.css","content":".ct-landing a,a.ct-featured{text-decoration:none!important}a.ct-featured{display:block;margin:1.25rem 0 1rem;padding:1.75rem 1.75rem 1.5rem;border:1px solid rgba(12,147,192,.45)!important;border-radius:16px;background:radial-gradient(120% 160% at 0 0,rgba(12,147,192,.14),transparent 55%),#fff;box-shadow:0 12px 32px -16px rgba(12,147,192,.45);transition:border-color .15s ease,transform .15s ease,box-shadow .15s ease}a.ct-featured:hover{border-color:#0c93c0!important;transform:translateY(-1px);box-shadow:0 16px 40px -16px rgba(12,147,192,.6)}.dark a.ct-featured{border-color:rgba(40,151,193,.45)!important;background:radial-gradient(120% 160% at 0 0,rgba(40,151,193,.16),transparent 55%),#05070a;box-shadow:0 12px 32px -16px rgba(40,151,193,.35)}.dark a.ct-featured:hover{border-color:#2897c1!important}.ct-featured-head{display:flex;align-items:center;gap:.75rem;margin-bottom:.875rem}.ct-featured-icon{display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border-radius:999px;background:rgba(12,147,192,.12);color:#0a7aa0}.dark .ct-featured-icon{background:rgba(40,151,193,.14);color:#5bb8e0}.ct-eyebrow{font-size:.75rem;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:#0a7aa0}.dark .ct-eyebrow{color:#5bb8e0}.ct-hero h1,.ct-title{font-weight:600;color:#0b1a2b}.ct-title{font-size:1.375rem;line-height:1.3}.dark .ct-card .ct-card-head span,.dark .ct-card h3,.dark .ct-hero h1,.dark .ct-section>h2,.dark .ct-step h3,.dark .ct-title{color:#f5f5f7}.ct-body{margin:.5rem 0 0!important;font-weight:400!important;font-size:1rem;max-width:46rem;color:#5b6577;line-height:1.6}.dark .ct-body,.dark .ct-hero .ct-promise,.dark .ct-hero p.ct-lead,.dark .ct-section>p.ct-section-lead{color:#a1a1a6}.ct-cta{display:inline-block;margin-top:1rem;font-weight:600;color:#0a7aa0}.dark .ct-cta{color:#5bb8e0}.ct-illustration{margin:1.5rem 0}.ct-illustration img{max-width:720px;margin:0 auto}.ct-iso-scene{margin:1.5rem 0 2rem;border:1px solid rgba(12,147,192,.18);border-radius:16px;background:#fff;overflow:hidden}.dark .ct-iso-scene{border-color:rgba(40,151,193,.22);background:#000}.ct-illustration img,.ct-iso-scene .ct-iso-svg{display:block;width:100%;height:auto}.ct-landing{max-width:1120px;margin:0 auto;padding:3rem 1.5rem 5rem}.ct-landing a{border-bottom-width:0}.ct-kicker{font-size:.8125rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#0c93c0}.dark .ct-card .ct-tagline,.dark .ct-hero .ct-promise strong,.dark .ct-kicker{color:#2897c1}.ct-hero{text-align:center;padding:1.5rem 0 1rem}.ct-hero h1{margin:.75rem 0 0;font-size:clamp(2.25rem,5vw,3.75rem);line-height:1.05;letter-spacing:-.03em;-webkit-text-fill-color:currentColor;background:0 0}.ct-hero .ct-promise{margin:1rem auto 0;font-size:clamp(1.125rem,2.2vw,1.5rem);color:#5b6577}.ct-hero .ct-promise strong,.ct-section>h2{color:#0c93c0;font-weight:600}.ct-hero p.ct-lead{max-width:44rem;margin:1rem auto 0;font-size:1.0625rem;line-height:1.65;color:#5b6577}.ct-actions{display:flex;flex-wrap:wrap;gap:.75rem;justify-content:center;margin-top:1.75rem}.ct-btn{display:inline-flex;align-items:center;gap:.5rem;padding:.7rem 1.25rem;border-radius:999px;font-weight:600;font-size:.95rem;transition:transform .15s ease,background .15s ease}.ct-btn:hover{transform:translateY(-1px)}.ct-btn-primary{background:#0c93c0;color:#fff!important}.ct-btn-primary:hover{background:#0a7aa0}.ct-btn-ghost{border:1px solid rgba(12,147,192,.35)!important;color:#0b1a2b!important}.dark .ct-btn-ghost{color:#f5f5f7!important;border-color:rgba(40,151,193,.4)!important}.ct-landing .ct-iso-scene{margin-top:2.5rem}.ct-section{margin-top:4.5rem}.ct-section>h2{margin:.4rem 0 0;font-size:1.75rem;letter-spacing:-.02em;color:#0b1a2b;-webkit-text-fill-color:currentColor;background:0 0}.ct-section>p.ct-section-lead{margin:.5rem 0 0;color:#5b6577;max-width:46rem}.ct-steps{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1rem;margin-top:1.5rem}.ct-step{display:block;padding:1.25rem;border-radius:14px;border:1px solid rgba(12,147,192,.18)!important;background:#fff;transition:border-color .15s ease,transform .15s ease}.dark .ct-step{background:#05070a;border-color:rgba(40,151,193,.22)!important}.ct-step:hover{border-color:#0c93c0!important;transform:translateY(-1px)}.ct-step-num{display:inline-flex;width:1.75rem;height:1.75rem;border-radius:999px;align-items:center;justify-content:center;font-size:.85rem;font-weight:700;color:#fff;background:#0c93c0}.ct-card h3,.ct-step h3{margin:.75rem 0 .25rem;font-size:1.05rem}.ct-card p,.ct-step p{margin:0;font-size:.925rem;line-height:1.55;color:#5b6577}.dark .ct-card p,.dark .ct-landing td,.dark .ct-step p{color:#a1a1a6}.ct-grid{display:grid;gap:1rem;margin-top:1.5rem}.ct-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}.ct-grid-5{grid-template-columns:repeat(5,minmax(0,1fr))}.ct-card{display:flex;flex-direction:column;padding:1.25rem;border-radius:14px;border:1px solid rgba(12,147,192,.18);background:#fff}.dark .ct-card{background:#05070a;border-color:rgba(40,151,193,.22)}.ct-card .ct-card-head{display:flex;align-items:center;gap:.6rem}.ct-card .ct-card-head span,.ct-card h3,.ct-step h3{font-weight:600;color:#0b1a2b}.ct-card .ct-tagline{margin-top:.75rem;font-size:1.05rem;font-weight:600;line-height:1.35;color:#0c93c0}.ct-card .ct-links{margin-top:auto;padding-top:1rem;display:flex;gap:1rem;font-size:.9rem;font-weight:600}.ct-card .ct-links a{color:#0c93c0!important}.dark .ct-card .ct-links a,.dark .ct-card-head .ct-arrow,.dark .ct-landing td a{color:#2897c1!important}a.ct-card{transition:border-color .15s ease,transform .15s ease}a.ct-card:hover{border-color:#0c93c0!important;transform:translateY(-1px)}.ct-strip{display:flex;flex-wrap:wrap;gap:.6rem;margin-top:1.25rem}.ct-strip a{display:inline-flex;align-items:center;gap:.45rem;padding:.55rem .95rem;border-radius:999px;border:1px solid rgba(12,147,192,.25)!important;font-size:.9rem;font-weight:500;color:#0b1a2b!important}.dark .ct-strip a{color:#f5f5f7!important;border-color:rgba(40,151,193,.3)!important}.ct-strip a:hover{border-color:#0c93c0!important}@media (max-width:900px){.ct-grid-3,.ct-grid-5,.ct-steps{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:560px){.ct-landing{padding:2rem 1rem 4rem}.ct-grid-3,.ct-grid-5,.ct-steps{grid-template-columns:minmax(0,1fr)}}.ct-landing table{width:100%;margin-top:1.25rem;border-collapse:collapse;font-size:.925rem}.ct-landing th{text-align:left;font-weight:600;padding:.7rem .9rem;border-bottom:1px solid rgba(12,147,192,.3)}.ct-landing td{vertical-align:top;padding:.8rem .9rem;border-bottom:1px solid rgba(12,147,192,.12);color:#5b6577;line-height:1.55}.ct-landing td:first-child{font-weight:600;color:#0b1a2b;width:22%}.dark .ct-landing td:first-child{color:#f5f5f7}.ct-landing td a{color:#0c93c0!important;font-weight:600}.ct-product{padding:1.1rem 1.2rem}.ct-product .ct-tagline{margin-top:.55rem;font-size:1rem}.ct-product p{margin-top:.3rem}.ct-powered{margin-top:.6rem;font-size:.75rem;font-weight:600;letter-spacing:.02em;color:#8a94a6}.dark .ct-powered{color:#86868b}.ct-card-head .ct-arrow{margin-left:auto;font-weight:500!important;color:#0c93c0!important;transition:transform .15s ease}a.ct-product:hover .ct-arrow{transform:translateX(3px)}html:not(.dark) .ct-card,html:not(.dark) .ct-iso-scene,html:not(.dark) .ct-step{background:#f6f7f9}html:not(.dark) .ct-iso-scene{border-color:rgba(12,147,192,.12)}html:not(.dark) #content-area,html:not(.dark) .prose,html:not(.dark) body{color:#2b3240}html:not(.dark) .prose :where(h1, h2, h3, h4, strong){color:#1c2230}html:not(.dark) .ct-card .ct-card-head span,html:not(.dark) .ct-card h3,html:not(.dark) .ct-hero h1,html:not(.dark) .ct-section>h2,html:not(.dark) .ct-step h3{color:#1c2230}"}],"page":{"pagePath":"guide/slack-integration","slug":"/guide/slack-integration","pageMetadata":{"title":"Slack Integration","sidebarTitle":"Slack","description":"Connect Slack so your team can ask CloudThinker questions in channels and receive alerts and review summaries where they already work.","icon":"/images/icons/slack.svg","href":"/guide/slack-integration"},"description":{"compiledSource":"\"use strict\";\nconst {jsx: _jsx} = arguments[0];\nconst {useMDXComponents: _provideComponents} = arguments[0];\nfunction _createMdxContent(props) {\n const _components = {\n p: \"p\",\n ..._provideComponents(),\n ...props.components\n };\n return _jsx(_components.p, {\n children: \"Connect Slack so your team can ask CloudThinker questions in channels and receive alerts and review summaries where they already work.\"\n });\n}\nfunction MDXContent(props = {}) {\n const {wrapper: MDXLayout} = {\n ..._provideComponents(),\n ...props.components\n };\n return MDXLayout ? _jsx(MDXLayout, {\n ...props,\n children: _jsx(_createMdxContent, {\n ...props\n })\n }) : _createMdxContent(props);\n}\nreturn {\n default: MDXContent\n};\n","frontmatter":{},"scope":{}},"pageType":"default","mdx":{"mdxSource":{"compiledSource":"\"use strict\";const{Fragment:_Fragment,jsx:_jsx,jsxs:_jsxs}=arguments[0];const{useMDXComponents:_provideComponents}=arguments[0];function _createMdxContent(props){const _components={a:`a`,code:`code`,em:`em`,li:`li`,p:`p`,pre:`pre`,span:`span`,strong:`strong`,tbody:`tbody`,td:`td`,th:`th`,thead:`thead`,tr:`tr`,ul:`ul`,..._provideComponents(),...props.components},{Accordion,AccordionGroup,Card,CardGroup,CodeBlock,Frame,Heading,OptimizedImage,Step,Steps,Table,Warning}=_components;if(!Accordion)_missingMdxReference(`Accordion`,true);if(!AccordionGroup)_missingMdxReference(`AccordionGroup`,true);if(!Card)_missingMdxReference(`Card`,true);if(!CardGroup)_missingMdxReference(`CardGroup`,true);if(!CodeBlock)_missingMdxReference(`CodeBlock`,true);if(!Frame)_missingMdxReference(`Frame`,true);if(!Heading)_missingMdxReference(`Heading`,true);if(!OptimizedImage)_missingMdxReference(`OptimizedImage`,true);if(!Step)_missingMdxReference(`Step`,true);if(!Steps)_missingMdxReference(`Steps`,true);if(!Table)_missingMdxReference(`Table`,true);if(!Warning)_missingMdxReference(`Warning`,true);return _jsxs(_Fragment,{children:[_jsxs(_components.p,{children:[`Connect Slack once and anyone in a mapped channel can mention `,_jsx(_components.code,{children:`@CloudThinker`}),` to ask about your cloud, then keep talking in the thread. The same connection delivers `,_jsx(_components.a,{href:`/guide/notifications`,children:`notifications`}),`, such as alerts and code review summaries, to the channels you choose.`]}),`\n`,_jsx(Heading,{level:`2`,id:`prerequisites`,children:`Prerequisites`}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[`A CloudThinker organization `,_jsx(_components.strong,{children:`Owner`}),` or `,_jsx(_components.strong,{children:`Admin`}),`. Other roles can view the Slack page but can’t connect or change it.`]}),`\n`,_jsxs(_components.li,{children:[`A Team, Scale, or Enterprise plan. On the Free plan the Slack card shows `,_jsx(_components.strong,{children:`Requires Team plan or above`}),` and an `,_jsx(_components.strong,{children:`Upgrade Plan`}),` button. See `,_jsx(_components.a,{href:`/guide/billing/pricing`,children:`pricing`}),`.`]}),`\n`,_jsx(_components.li,{children:`Permission to install apps in your Slack workspace. If your Slack workspace uses app approval, a Slack Workspace Owner or app manager has to approve CloudThinker.`}),`\n`,_jsxs(_components.li,{children:[`CloudThinker hosted at app.cloudthinker.io. A self-hosted install shows `,_jsx(_components.strong,{children:`Not available on self-host`}),` on the Slack card.`]}),`\n`]}),`\n`,_jsx(_components.p,{children:`Each Slack workspace can connect to one CloudThinker organization.`}),`\n`,_jsx(Heading,{level:`2`,id:`connect-slack`,children:`Connect Slack`}),`\n`,_jsx(Warning,{children:_jsx(_components.p,{children:`A channel the bot is in but that has no mapping still runs requests, in the organization Owner’s default workspace and with that workspace’s connections. There’s no setting to make unmapped channels refuse requests. Check the mapping right after every invite, and remove the bot from channels that shouldn’t reach your infrastructure.`})}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open the Slack integration`,children:_jsxs(_components.p,{children:[`Go to `,_jsx(_components.strong,{children:`Admin Settings → Integrations`}),`, find the `,_jsx(_components.strong,{children:`Slack`}),` card, and click `,_jsx(_components.strong,{children:`Go to configure`}),`.`]})}),_jsxs(Step,{title:`Click Connect with Slack`,children:[_jsxs(_components.p,{children:[`Slack opens its authorization screen. Pick the Slack workspace and click `,_jsx(_components.strong,{children:`Allow`}),`.`]}),_jsx(_components.p,{children:`Connecting replaces any Slack workspace this organization connected before.`}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` you return to the Slack page with a `,_jsx(_components.strong,{children:`Slack connected successfully`}),` message, and the `,_jsx(_components.strong,{children:`Setup`}),` card shows your Slack workspace name and Team ID under `,_jsx(_components.strong,{children:`Connect to Slack`}),`.`]})]}),_jsxs(Step,{title:`Invite the bot to a channel`,children:[_jsx(_components.p,{children:`In Slack, open the channel your team will use and run:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`/invite @CloudThinker`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsx(_components.p,{children:`CloudThinker maps the channel to a CloudThinker workspace automatically. It picks the organization Owner’s default workspace, or the oldest workspace if the Owner has none.`}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` the channel appears under `,_jsx(_components.strong,{children:`Configure channel-workspace mappings`}),` on the Slack page.`]})]}),_jsxs(Step,{title:`Check which workspace each channel uses`,children:[_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Configure channel-workspace mappings`}),`, open the `,_jsx(_components.strong,{children:`Select workspace`}),` menu on each channel row and pick the workspace whose connections that channel should use.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` a `,_jsx(_components.strong,{children:`Channel mapping updated`}),` message appears and the row shows the new workspace.`]})]}),_jsxs(Step,{title:`Send a test message`,children:[_jsx(_components.p,{children:`In the channel, mention the bot with a question:`}),_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@CloudThinker What drove our cloud spend up last week?`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` CloudThinker replies in a thread under your message. Reply in that thread to follow up. You don’t need to mention the bot again.`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`who-requests-run-as`,children:`Who requests run as`}),`\n`,_jsxs(Frame,{caption:`In a regular channel every request runs as one account; only war rooms match the sender by email.`,children:[_jsx(OptimizedImage,{src:`https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-light.svg?fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=365e3695077d1327dbf3d9a9eac82ad8`,alt:`Slack users in a regular channel all run as one account, while a war room matches the sender by email and runs as that user or refuses`,className:`mint-block dark:mint-hidden`,style:{width:`100%`},\"data-og-width\":`800`,width:`800`,\"data-og-height\":`380`,height:`380`,\"data-path\":`images/slack/diagram-who-requests-run-as-light.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-light.svg?w=280\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=6d86ce1b052d8602dbab452845f28e89 280w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-light.svg?w=560\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=25b751a966752be80d52d2a8eeb081af 560w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-light.svg?w=840\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=fee9dcabdd97db190b3338015d794a96 840w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-light.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=09d4a8e366221170c6072af8c574b978 1100w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-light.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=9f94b51a5789d0b382e7ef9ad268e44e 1650w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-light.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=95f323e4fad9d3e7bf1c36cffbfcaec2 2500w`}),_jsx(OptimizedImage,{src:`https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-dark.svg?fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=a759ff13d4566452b3f64b850780a2e0`,alt:`Slack users in a regular channel all run as one account, while a war room matches the sender by email and runs as that user or refuses`,className:`mint-hidden dark:mint-block`,style:{width:`100%`},\"data-og-width\":`800`,width:`800`,\"data-og-height\":`380`,height:`380`,\"data-path\":`images/slack/diagram-who-requests-run-as-dark.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-dark.svg?w=280\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=a8677f9c36ac7578a52b04afd0e92082 280w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-dark.svg?w=560\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=7bf663e3cead5091f8ef72d2ce3ca3ff 560w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-dark.svg?w=840\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=ed8cb770ee9dc948a14adbcb652ef28d 840w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-dark.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=cda04af7fc25026e5f212455d15abc21 1100w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-dark.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=eddf5cb0061d1cd9a1cab223650c09db 1650w, https://mintcdn.com/cloudthinker/Oe5_AUbJ0QRKLeSx/images/slack/diagram-who-requests-run-as-dark.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=Oe5_AUbJ0QRKLeSx\u0026q=85\u0026s=eb0a33169d5e38db32082fcc34f56c2c 2500w`})]}),`\n`,_jsxs(_components.p,{children:[`CloudThinker doesn’t match Slack users to CloudThinker accounts in regular channels, and Slack has no account linking. Unlike `,_jsx(_components.a,{href:`/guide/google-chat-integration`,children:`Google Chat`}),`, which runs each request as the sender, every request runs as one account: whoever created the mapped workspace, or the organization `,_jsx(_components.strong,{children:`Owner`}),` for a workspace the organization owns, with that account’s access. A Slack user needs no CloudThinker account to ask a question. CloudThinker records the Slack sender’s name and Slack user ID on each message in the conversation.`]}),`\n`,_jsxs(_components.p,{children:[`Incident war rooms are the exception. A war room is a Slack channel that Resolve creates for one incident (see `,_jsx(_components.a,{href:`/guide/incident/oncall#add-a-slack-war-room`,children:`Add a Slack war room`}),`). There, CloudThinker matches the sender by email and runs the request as that CloudThinker user, or refuses it if there’s no match with access. War-room questions also appear in `,_jsx(_components.strong,{children:`Admin Settings → Audit Logs`}),` under the sender’s name.`]}),`\n`,_jsx(_components.p,{children:`Because of this, treat channel membership as access. Map a channel only to a workspace that everyone in the channel may use.`}),`\n`,_jsx(Heading,{level:`2`,id:`ask-cloudthinker-in-slack`,children:`Ask CloudThinker in Slack`}),`\n`,_jsxs(_components.p,{children:[`Every request starts with `,_jsx(_components.code,{children:`@CloudThinker`}),`. After that, you write the same requests you’d type in the web app.`]}),`\n`,_jsx(_components.p,{children:`Talk to agents in plain language. The full pattern is:`}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`2`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`2`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@agent #connection your request`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`@agent`})}),` `,_jsx(_components.em,{children:`(optional)`}),` — leave it out and CloudThinker answers, or mention one of your workspace’s `,_jsx(_components.a,{href:`/guide/agents/overview#custom-agents`,children:`custom agents`}),`.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`#connection`})}),` `,_jsx(_components.em,{children:`(optional)`}),` — the connection to use, such as your AWS account or a Kubernetes cluster.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:_jsx(_components.code,{children:`/`})}),` `,_jsx(_components.em,{children:`(optional)`}),` — run a skill or a command.`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`Your request`}),` — what you need, in your own words. Add any context inline.`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`See `,_jsx(_components.a,{href:`/guide/commands`,children:`Commands`}),` for the full list.`]}),`\n`,_jsx(CodeBlock,{filename:``,numberOfLines:`4`,language:`text`,children:_jsx(_components.pre,{className:`shiki shiki-themes github-light-default dark-plus`,style:{backgroundColor:`#ffffff`,\"--shiki-dark-bg\":`#0B0C0E`,color:`#1f2328`,\"--shiki-dark\":`#D4D4D4`},language:`text`,children:_jsxs(_components.code,{language:`text`,numberOfLines:`4`,children:[_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@CloudThinker Which EC2 instances ran under 10% CPU for the last 14 days?`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@CloudThinker Summarize open critical security findings for production`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{children:`@CloudThinker Why did checkout latency spike at 14:00 UTC today?`})}),`\n`,_jsx(_components.span,{className:`line`,children:_jsx(_components.span,{})})]})})}),`\n`,_jsx(_components.p,{children:`What to expect in the thread:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`You see`}),_jsx(_components.th,{children:`What it means`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.strong,{children:`is typing…`})}),_jsx(_components.td,{children:`CloudThinker is working on the request`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`A reply in the thread`}),_jsx(_components.td,{children:`The answer. The full conversation also appears in the CloudThinker web app`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.strong,{children:`Permission required to use`}),` a tool, with `,_jsx(_components.strong,{children:`View in CloudThinker`})]}),_jsxs(_components.td,{children:[`The request needs an action that your `,_jsx(_components.a,{href:`/guide/approvals/overview`,children:`Approvals`}),` setup holds for a person. You can’t approve in Slack: open the link and an allowed `,_jsx(_components.a,{href:`/guide/approvals/approvers`,children:`approver`}),` approves or rejects it in the web app`]})]})]})]}),`\n`,_jsxs(_components.p,{children:[`CloudThinker answers mentions in channels and replies in its own threads. To start a new topic, mention `,_jsx(_components.code,{children:`@CloudThinker`}),` in a new message. Private channels work the same way once you invite the bot. CloudThinker doesn’t answer direct messages: its `,_jsx(_components.strong,{children:`Home`}),` tab in Slack tells you to mention it in a channel. CloudThinker reads the text of your message only, so paste the content you want it to read instead of attaching a file.`]}),`\n`,_jsx(Heading,{level:`2`,id:`send-notifications-to-slack`,children:`Send notifications to Slack`}),`\n`,_jsx(_components.p,{children:`Slack is also a destination for workspace notifications. Each CloudThinker workspace has its own Slack channel, so switch to the right workspace in the workspace switcher at the top of the sidebar first.`}),`\n`,_jsxs(Steps,{children:[_jsx(Step,{title:`Open notification settings`,children:_jsxs(_components.p,{children:[`On the Slack page, under `,_jsx(_components.strong,{children:`Configure notifications`}),`, click `,_jsx(_components.strong,{children:`Go to notification settings`}),`. You can also go to `,_jsx(_components.strong,{children:`More → Workspace settings → Notifications`}),`.`]})}),_jsx(Step,{title:`Pick a default channel for the workspace`,children:_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`Delivery channels`}),`, find the Slack card (it reads `,_jsx(_components.strong,{children:`Pick a channel`}),` until one is set). Click its settings icon (`,_jsx(_components.strong,{children:`Change Slack channel`}),`), then search for and select a channel under `,_jsx(_components.strong,{children:`Slack Notification Channel`}),`. You can pick any public channel, or a private channel the bot was invited to.`]})}),_jsxs(Step,{title:`Override per notification type (optional)`,children:[_jsxs(_components.p,{children:[`Under `,_jsx(_components.strong,{children:`What to notify me about`}),`, turn on the Slack cell for an event, then click the `,_jsx(_components.strong,{children:`→ #channel`}),` chip next to it to send that event to a different channel. The `,_jsx(_components.strong,{children:`Alerts`}),` and `,_jsx(_components.strong,{children:`Keepers`}),` rows also have a severity picker. See `,_jsx(_components.a,{href:`/guide/notifications`,children:`Notifications`}),` for the full list of types.`]}),_jsxs(_components.p,{children:[_jsx(_components.strong,{children:`Success state:`}),` the next matching event posts in the chosen channel.`]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`code-review-notifications`,children:`Code review notifications`}),`\n`,_jsxs(_components.p,{children:[`When `,_jsx(_components.a,{href:`/guide/code-review/overview`,children:`Review`}),` finishes a pull request or merge request on a connected repository, CloudThinker can post a summary to Slack:`]}),`\n`,_jsxs(_components.ul,{children:[`\n`,_jsx(_components.li,{children:`A count of findings by severity`}),`\n`,_jsx(_components.li,{children:`Up to 5 unresolved findings, each with its title, file path, and line number`}),`\n`,_jsx(_components.li,{children:`How many earlier findings are now resolved`}),`\n`,_jsxs(_components.li,{children:[`A `,_jsx(_components.strong,{children:`View Review`}),` button that opens the review in CloudThinker`]}),`\n`,_jsxs(_components.li,{children:[_jsx(_components.strong,{children:`No issues found`}),` when the review is clean`]}),`\n`]}),`\n`,_jsxs(_components.p,{children:[`Choose the channel and severity threshold for reviews in `,_jsx(_components.a,{href:`/guide/notifications`,children:`Notifications`}),`.`]}),`\n`,_jsx(Heading,{level:`2`,id:`security-and-permissions`,children:`Security and permissions`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Question`}),_jsx(_components.th,{children:`Answer`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Which messages it acts on`}),_jsxs(_components.td,{children:[`Messages that mention `,_jsx(_components.code,{children:`@CloudThinker`}),`, and replies in threads CloudThinker started. When you call it into an existing thread, it can read that thread for context`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`What CloudThinker stores`}),_jsx(_components.td,{children:`Your requests and its replies, saved as a conversation in the mapped workspace, plus the link between each Slack thread and that conversation`})]})]})]}),`\n`,_jsx(_components.p,{children:`CloudThinker requests these Slack bot scopes:`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Scope`}),_jsx(_components.th,{children:`Why`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`app_mentions:read`})}),_jsxs(_components.td,{children:[`Receive messages that mention `,_jsx(_components.code,{children:`@CloudThinker`})]})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`channels:history`}),`, `,_jsx(_components.code,{children:`groups:history`})]}),_jsx(_components.td,{children:`Read replies in its threads, and the thread you call it into, in public and private channels`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`channels:read`}),`, `,_jsx(_components.code,{children:`groups:read`})]}),_jsx(_components.td,{children:`List channels for the mapping table and the notification picker`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`channels:manage`})}),_jsx(_components.td,{children:`Create incident war-room channels and invite responders`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`chat:write`})}),_jsx(_components.td,{children:`Post replies and notifications`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`chat:write.public`})}),_jsx(_components.td,{children:`Post notifications in a public channel without joining it first`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`files:write`})}),_jsx(_components.td,{children:`Post files CloudThinker produces, such as reports, in the thread`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`users:read`})}),_jsx(_components.td,{children:`Show the sender’s display name on the conversation`})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:_jsx(_components.code,{children:`users:read.email`})}),_jsx(_components.td,{children:`Match a war-room sender to a CloudThinker account by email`})]}),_jsxs(_components.tr,{children:[_jsxs(_components.td,{children:[_jsx(_components.code,{children:`im:read`}),`, `,_jsx(_components.code,{children:`im:history`}),`, `,_jsx(_components.code,{children:`im:write`}),`, `,_jsx(_components.code,{children:`mpim:read`}),`, `,_jsx(_components.code,{children:`mpim:history`})]}),_jsx(_components.td,{children:`Requested by the app. CloudThinker doesn’t answer direct or group messages today`})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`manage-the-connection`,children:`Manage the connection`}),`\n`,_jsxs(Table,{children:[_jsx(_components.thead,{children:_jsxs(_components.tr,{children:[_jsx(_components.th,{children:`Task`}),_jsx(_components.th,{children:`How`})]})}),_jsxs(_components.tbody,{children:[_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Move a channel to another workspace`}),_jsxs(_components.td,{children:[`Change `,_jsx(_components.strong,{children:`Select workspace`}),` on its row in `,_jsx(_components.strong,{children:`Configure channel-workspace mappings`})]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Stop routing a channel`}),_jsxs(_components.td,{children:[`In Slack, run `,_jsx(_components.code,{children:`/remove @CloudThinker`}),` in the channel. That also deletes the row. Don’t remove only the row: the bot stays in the channel, and the channel falls back to the default workspace`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Reconnect for new permissions`}),_jsxs(_components.td,{children:[`If the page shows `,_jsx(_components.strong,{children:`Slack needs one more permission`}),`, click `,_jsx(_components.strong,{children:`Reconnect Slack`}),`. Existing messages and notification channels keep working`]})]}),_jsxs(_components.tr,{children:[_jsx(_components.td,{children:`Disconnect`}),_jsxs(_components.td,{children:[`Click `,_jsx(_components.strong,{children:`Disconnect from Slack`}),` at the bottom of the Slack page. CloudThinker uninstalls the app from Slack and deletes every channel mapping, the links between Slack threads and conversations, and the Slack notification settings. Reconnecting starts from scratch`]})]})]})]}),`\n`,_jsx(Heading,{level:`2`,id:`troubleshooting`,children:`Troubleshooting`}),`\n`,_jsxs(AccordionGroup,{children:[_jsx(Accordion,{title:`Slack authorization not completed`,id:`slack-authorization-not-completed`,children:_jsxs(_components.p,{children:[`Slack denied or cancelled the authorization, or your Slack workspace requires admin approval. Ask a Slack Workspace Owner or app manager to approve CloudThinker in Slack’s app management, then click `,_jsx(_components.strong,{children:`Connect with Slack`}),` again.`]})}),_jsx(Accordion,{title:`Slack workspace already connected`,id:`slack-workspace-already-connected`,children:_jsx(_components.p,{children:`That Slack workspace is already connected to another CloudThinker organization. A Slack workspace can connect to only one. Disconnect it from the other organization first, or use a different Slack workspace.`})}),_jsx(Accordion,{title:`Not authorized`,id:`not-authorized`,children:_jsxs(_components.p,{children:[`Only organization Owners and Admins can configure Slack. Ask one of them to connect it, or to change your `,_jsx(_components.a,{href:`/guide/security/roles`,children:`organization role`}),`.`]})}),_jsxs(Accordion,{title:`The bot doesn't reply`,id:`the-bot-doesnt-reply`,children:[_jsxs(_components.p,{children:[`Check that the bot is in the channel (`,_jsx(_components.code,{children:`/invite @CloudThinker`}),`) and that you mentioned it in a new message. A message without the mention gets a reply only inside a thread CloudThinker already started.`]}),_jsxs(_components.p,{children:[`If CloudThinker replies `,_jsx(_components.strong,{children:`No workspace is configured for this channel`}),`, it couldn’t find a workspace to use: the organization has no active workspace, or the channel’s row points to a workspace outside this organization. Open the Slack page and set a workspace on the channel’s row.`]})]}),_jsx(Accordion,{title:`The answer uses the wrong account or cluster`,id:`the-answer-uses-the-wrong-account-or-cluster`,children:_jsxs(_components.p,{children:[`The channel is mapped to a different workspace than you expected. Check its row under `,_jsx(_components.strong,{children:`Configure channel-workspace mappings`}),` and change `,_jsx(_components.strong,{children:`Select workspace`}),`.`]})}),_jsx(Accordion,{title:`You don't have access to this incident in CloudThinker`,id:`you-dont-have-access-to-this-incident-in-cloudthinker`,children:_jsx(_components.p,{children:`Incident war-room channels only run requests from people who have a CloudThinker account in that workspace with access to incidents and chat. CloudThinker matches you by email, so use the same email in Slack and CloudThinker, or ask a workspace Admin for access.`})}),_jsx(Accordion,{title:`Notifications don't arrive`,id:`notifications-dont-arrive`,children:_jsxs(_components.p,{children:[`Check that a `,_jsx(_components.strong,{children:`Slack Notification Channel`}),` is set for the workspace, that the notification type is on, and that the event meets the severity threshold. For a private channel, invite the bot first.`]})})]}),`\n`,_jsx(Heading,{level:`2`,id:`next-steps`,children:`Next steps`}),`\n`,_jsxs(CardGroup,{cols:2,children:[_jsx(Card,{title:`Commands and prompt syntax`,icon:`terminal`,href:`/guide/commands`,children:_jsx(_components.p,{children:`Write sharper requests and save the ones your team repeats`})}),_jsx(Card,{title:`Notifications`,icon:`bell`,href:`/guide/notifications`,children:_jsx(_components.p,{children:`Choose which events reach Slack and at what severity`})}),_jsx(Card,{title:`Approvals`,icon:`shield-check`,href:`/guide/approvals/overview`,children:_jsx(_components.p,{children:`Decide which actions need a person before CloudThinker runs them`})}),_jsx(Card,{title:`Microsoft Teams`,icon:`https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/teams.svg?fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=3c0044a0e91d90c33f6aee6c57b8d4aa`,href:`/guide/teams-integration`,\"data-og-width\":`24`,width:`24`,\"data-og-height\":`24`,height:`24`,\"data-path\":`images/icons/teams.svg`,\"data-optimize\":`true`,\"data-opv\":`3`,srcset:`https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/teams.svg?w=280\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=4d7f7c2a455b0b7c8d834b9032a5d037 280w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/teams.svg?w=560\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=28c4ebcad760a4f9296823d3c52f61ff 560w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/teams.svg?w=840\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=126994b0a13acb4f4ba593bf516dc1c9 840w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/teams.svg?w=1100\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=d31d977b66d0cc12d8a8777313e76354 1100w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/teams.svg?w=1650\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=74b9d172a95694d5af11978854423239 1650w, https://mintcdn.com/cloudthinker/aLd-ttc-SCW-aFky/images/icons/teams.svg?w=2500\u0026fit=max\u0026auto=format\u0026n=aLd-ttc-SCW-aFky\u0026q=85\u0026s=5f3b21f11ea55a74f1cdc93bc48f38ca 2500w`,children:_jsx(_components.p,{children:`Set up the same workflow in Teams`})})]})]})}function MDXContent(props={}){const{wrapper:MDXLayout}={..._provideComponents(),...props.components};return MDXLayout?_jsx(MDXLayout,{...props,children:_jsx(_createMdxContent,{...props})}):_createMdxContent(props)}return{default:MDXContent};function _missingMdxReference(id,component){throw new Error(`Expected `+(component?`component`:`object`)+\" `\"+id+\"` to be defined: you likely forgot to import, pass, or provide it.\")}","frontmatter":{},"scope":{"config":{},"pageMetadata":{"title":"Slack Integration","sidebarTitle":"Slack","description":"Connect Slack so your team can ask CloudThinker questions in channels and receive alerts and review summaries where they already work.","icon":"/images/icons/slack.svg","href":"/guide/slack-integration"}}},"mdxSourceWithNoJs":null},"mdxExtracts":{"tableOfContents":[{"title":"Prerequisites","slug":"prerequisites","depth":2,"children":[]},{"title":"Connect Slack","slug":"connect-slack","depth":2,"children":[]},{"title":"Who requests run as","slug":"who-requests-run-as","depth":2,"children":[]},{"title":"Ask CloudThinker in Slack","slug":"ask-cloudthinker-in-slack","depth":2,"children":[]},{"title":"Send notifications to Slack","slug":"send-notifications-to-slack","depth":2,"children":[]},{"title":"Code review notifications","slug":"code-review-notifications","depth":2,"children":[]},{"title":"Security and permissions","slug":"security-and-permissions","depth":2,"children":[]},{"title":"Manage the connection","slug":"manage-the-connection","depth":2,"children":[]},{"title":"Troubleshooting","slug":"troubleshooting","depth":2,"children":[]},{"title":"Next steps","slug":"next-steps","depth":2,"children":[]}],"codeExamples":{}},"jsLinks":[],"dynamicCss":".mint-block {\n display: block\n}\n.mint-hidden {\n display: none\n}\n.dark\\:mint-block:is(.dark *) {\n display: block\n}\n.dark\\:mint-hidden:is(.dark *) {\n display: none\n}","subdomain":"cloudthinker","siteName":"CloudThinker","title":"Slack Integration - CloudThinker","navMaps":{"firstHrefInVersion":{},"firstHrefInLanguage":{"en":{"href":"/guide/slack-integration","matchLevel":0},"vi":{"href":"/vi/guide/slack-integration","matchLevel":1},"ja":{"href":"/ja/guide/slack-integration","matchLevel":1},"ko":{"href":"/ko/guide/slack-integration","matchLevel":1}}},"lastModified":"2026-11-02T17:31:21.589Z","originalFileLocation":"guide/slack-integration.mdx","locale":"en"},"headHtml":"\u003cscript data-mint-head>(function(){var d=document.documentElement,p=null;if(!p){try{p=localStorage.getItem(\"isDarkMode\")}catch(e){}if(p==='true')p='dark';else if(p==='false')p='light';if(p!=='light'\u0026\u0026p!=='dark'\u0026\u0026p!=='system')p=\"system\"}var r=p==='system'?(matchMedia(\"(prefers-color-scheme: dark)\").matches?'dark':'light'):p;d.classList.remove(r==='dark'?'light':'dark');d.classList.add(r);d.setAttribute(\"data-theme-preference\",p)})();\u003c/script>\u003cmeta data-mint-head name=\"description\" content=\"Connect Slack so your team can ask CloudThinker questions in channels and receive alerts and review summaries where they already work.\">\u003cmeta data-mint-head name=\"application-name\" content=\"CloudThinker\">\u003cmeta data-mint-head name=\"generator\" content=\"Mintlify\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/android-chrome-192x192.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"apple-touch-icon\" type=\"image/png\" sizes=\"180x180\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/apple-touch-icon.png\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon-16x16.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon-32x32.png\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/favicon.ico\" media=\"(prefers-color-scheme: light)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"192x192\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/android-chrome-192x192.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"16x16\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon-16x16.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"icon\" type=\"image/png\" sizes=\"32x32\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon-32x32.png\" media=\"(prefers-color-scheme: dark)\">\u003clink data-mint-head rel=\"shortcut icon\" type=\"image/x-icon\" href=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon-dark/favicon.ico\" media=\"(prefers-color-scheme: dark)\">\u003cmeta data-mint-head property=\"og:title\" content=\"Slack Integration - CloudThinker\">\u003cmeta data-mint-head property=\"og:description\" content=\"Connect Slack so your team can ask CloudThinker questions in channels and receive alerts and review summaries where they already work.\">\u003cmeta data-mint-head property=\"og:site_name\" content=\"CloudThinker\">\u003cmeta data-mint-head property=\"og:url\" content=\"https://docs.cloudthinker.io/guide/slack-integration\">\u003cmeta data-mint-head property=\"og:type\" content=\"website\">\u003cmeta data-mint-head property=\"og:image\" content=\"https://cloudthinker.mintlify.app/_mintlify/api/og/v2?division=Chat+apps\u0026amp;title=Slack+Integration\u0026amp;description=Connect+Slack+so+your+team+can+ask+CloudThinker+questions+in+channels+and+receive+alerts+and+review+summaries+where+they+already+work.\u0026amp;theme=a662466b4ca99701c5f8fbf0\u0026amp;signature=fc12e3876d8fec2bae8a56714cc954afaee21835e3365f1cbf2f827a76936ecf\">\u003cmeta data-mint-head property=\"og:image:width\" content=\"1200\">\u003cmeta data-mint-head property=\"og:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"twitter:card\" content=\"summary_large_image\">\u003cmeta data-mint-head name=\"twitter:title\" content=\"Slack Integration - CloudThinker\">\u003cmeta data-mint-head name=\"twitter:description\" content=\"Connect Slack so your team can ask CloudThinker questions in channels and receive alerts and review summaries where they already work.\">\u003cmeta data-mint-head name=\"twitter:image\" content=\"https://cloudthinker.mintlify.app/_mintlify/api/og/v2?division=Chat+apps\u0026amp;title=Slack+Integration\u0026amp;description=Connect+Slack+so+your+team+can+ask+CloudThinker+questions+in+channels+and+receive+alerts+and+review+summaries+where+they+already+work.\u0026amp;theme=a662466b4ca99701c5f8fbf0\u0026amp;signature=fc12e3876d8fec2bae8a56714cc954afaee21835e3365f1cbf2f827a76936ecf\">\u003cmeta data-mint-head name=\"twitter:image:width\" content=\"1200\">\u003cmeta data-mint-head name=\"twitter:image:height\" content=\"630\">\u003cmeta data-mint-head name=\"msapplication-config\" content=\"/mintlify-assets/_mintlify/favicons/cloudthinker/2UjfrgdSjUW0wAzv/_generated/favicon/browserconfig.xml\">\u003cmeta data-mint-head name=\"apple-mobile-web-app-title\" content=\"CloudThinker\">\u003cmeta data-mint-head name=\"msapplication-TileColor\" content=\"#0c93c0\">\u003clink data-mint-head rel=\"canonical\" href=\"https://docs.cloudthinker.io/guide/slack-integration\">\u003clink data-mint-head rel=\"alternate\" type=\"application/xml\" href=\"/sitemap.xml\">\u003clink data-mint-head rel=\"alternate\" type=\"text/markdown\" href=\"/guide/slack-integration.md\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"en\" href=\"https://docs.cloudthinker.io/guide/slack-integration\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"vi\" href=\"https://docs.cloudthinker.io/vi/guide/slack-integration\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ja\" href=\"https://docs.cloudthinker.io/ja/guide/slack-integration\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"ko\" href=\"https://docs.cloudthinker.io/ko/guide/slack-integration\">\u003clink data-mint-head rel=\"alternate\" hreflang=\"x-default\" href=\"https://docs.cloudthinker.io/guide/slack-integration\">\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@graph\":[{\"@type\":\"Organization\",\"@id\":\"https://docs.cloudthinker.io/#organization\",\"name\":\"CloudThinker\",\"url\":\"https://docs.cloudthinker.io\",\"logo\":{\"@type\":\"ImageObject\",\"url\":\"https://mintcdn.com/cloudthinker/-4m9DUjwzDxHfABz/logo/light.svg?fit=max\u0026auto=format\u0026n=-4m9DUjwzDxHfABz\u0026q=85\u0026s=a56a571509d1cd246f5b0e68db015e5f\"}},{\"@type\":\"WebSite\",\"@id\":\"https://docs.cloudthinker.io#website\",\"name\":\"CloudThinker\",\"url\":\"https://docs.cloudthinker.io\",\"publisher\":{\"@id\":\"https://docs.cloudthinker.io/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https://docs.cloudthinker.io/guide/slack-integration#webpage\",\"url\":\"https://docs.cloudthinker.io/guide/slack-integration\",\"name\":\"Slack Integration\",\"description\":\"Connect Slack so your team can ask CloudThinker questions in channels and receive alerts and review summaries where they already work.\",\"dateModified\":\"2026-11-02T17:31:21.589Z\",\"isPartOf\":{\"@id\":\"https://docs.cloudthinker.io#website\"},\"breadcrumb\":{\"@id\":\"https://docs.cloudthinker.io/guide/slack-integration#breadcrumb\"}},{\"@type\":\"BreadcrumbList\",\"@id\":\"https://docs.cloudthinker.io/guide/slack-integration#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"CloudThinker\",\"item\":\"https://docs.cloudthinker.io\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Slack Integration\",\"item\":\"https://docs.cloudthinker.io/guide/slack-integration\"}]},{\"@type\":[\"Article\",\"TechArticle\"],\"@id\":\"https://docs.cloudthinker.io/guide/slack-integration#article\",\"headline\":\"Slack Integration\",\"name\":\"Slack Integration\",\"description\":\"Connect Slack so your team can ask CloudThinker questions in channels and receive alerts and review summaries where they already work.\",\"url\":\"https://docs.cloudthinker.io/guide/slack-integration\",\"mainEntityOfPage\":{\"@id\":\"https://docs.cloudthinker.io/guide/slack-integration#webpage\"},\"dateModified\":\"2026-11-02T17:31:21.589Z\",\"publisher\":{\"@id\":\"https://docs.cloudthinker.io/#organization\"},\"isPartOf\":{\"@id\":\"https://docs.cloudthinker.io#website\"}}]}\u003c/script>\u003cscript data-mint-head type=\"application/ld+json\">{\"@context\":\"https://schema.org\",\"@type\":\"WebSite\",\"name\":\"CloudThinker\",\"creator\":{\"@type\":\"Organization\",\"name\":\"Mintlify\",\"url\":\"https://mintlify.com\"}}\u003c/script>","siteName":"CloudThinker","nav":{"global":null,"languages":[{"language":"en","tabs":[{"tab":"Get started","groups":[{"group":"Start here","pages":[{"title":"CloudThinker Docs","sidebarTitle":"Home","icon":"house","mode":"custom","href":""},{"title":"Quickstart","icon":"bolt","href":"/quickstart"},{"title":"How CloudThinker Works","icon":"sitemap","href":"/guide/concepts"},{"title":"Tutorial: Your First Investigation","sidebarTitle":"Tutorial","icon":"magnifying-glass","href":"/guide/tutorial/agenticops"}]},{"group":"Learn the basics","pages":[{"title":"Agents","icon":"robot","href":"/guide/agents/overview"},{"title":"Home and Activity","sidebarTitle":"Home and Activity","icon":"house","href":"/guide/activity"},{"title":"Commands and Prompt Syntax","sidebarTitle":"Commands and Prompts","icon":"terminal","href":"/guide/commands"},{"title":"Glossary","icon":"book-bookmark","href":"/guide/glossary"}]},{"group":"Help","pages":[{"title":"Troubleshooting","icon":"life-ring","href":"/guide/troubleshooting"},{"title":"Frequently Asked Questions","description":"Get quick answers on what CloudThinker does, what access it needs, how agent changes are approved, pricing, and where to get help.","icon":"circle-question","href":"/learn/faq"}]},{"group":"Work where you are","pages":[{"group":"Chat apps","expanded":false,"pages":[{"title":"Slack Integration","sidebarTitle":"Slack","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/slack.svg","href":"/guide/slack-integration"},{"title":"Microsoft Teams Integration","sidebarTitle":"Microsoft Teams","description":"Connect Microsoft Teams so your team can ask CloudThinker questions in team channels and receive alerts and review summaries as cards.","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/teams.svg","href":"/guide/teams-integration"},{"title":"Google Chat Integration","sidebarTitle":"Google Chat","icon":"https://mintlify.s3.us-west-1.amazonaws.com/cloudthinker/images/icons/google-chat.svg","href":"/guide/google-chat-integration"}]},{"group":"CLI","expanded":false,"pages":[{"title":"CLI","sidebarTitle":"Overview","icon":"terminal","href":"/guide/cli/overview"},{"title":"CLI Authentication","sidebarTitle":"Authentication","icon":"key","href":"/guide/cli/authentication"},{"title":"Agent CLI","sidebarTitle":"Agent","icon":"laptop-code","href":"/guide/cli/agent"},{"title":"Headless Chat","sidebarTitle":"Headless Chat","icon":"message-code","href":"/guide/cli/headless-chat"},{"title":"CLI Reference","sidebarTitle":"Reference","icon":"book","href":"/guide/cli/reference"}]}]}]},{"tab":"Products","pages":[{"title":"Products","href":"/guide/incident/overview"}]},{"tab":"Platform","pages":[{"title":"Platform","href":"/guide/connections/overview"}]},{"tab":"Enterprise","pages":[{"title":"Enterprise","href":"/guide/security/overview"}]},{"tab":"Developers","pages":[{"title":"Developers","href":"/guide/api/overview"}]},{"tab":"Resources","pages":[{"title":"Resources","href":"/learn/aio/introduction"}]},{"tab":"Changelog","pages":[{"title":"Changelog","href":"/changelog"}]},{"tab":"Pricing","href":"https://cloudthinker.io/pricing"}]},{"language":"vi","pages":[{"title":"vi","href":"/vi/guide/slack-integration"}]},{"language":"ja","pages":[{"title":"ja","href":"/ja/guide/slack-integration"}]},{"language":"ko","pages":[{"title":"ko","href":"/ko/guide/slack-integration"}]}]},"basePath":"","title":"Slack Integration - CloudThinker","buildId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","deploymentId":"dpl_36EDyZCDfRuoUD9af5CH4M1bqY2h","dynamics":["07c022d89b","a74be98ba7"],"chunks":["Frame-DW6UFrUy.js","DynamicMarkdown-B62XqCSI.js","zoom-image-lightbox-eHyQ0tlO.js","lightbox-handle-r17bVUz3.js"]}