Before you start
- A chat agent with the End-user audience, tested in the dashboard with Test as end-client.
- The client company in Companies. Slack needs no tenant ID or domain on the record: the install link carries the company.
- An icon: a square PNG or JPEG, at least 512 × 512 px and at most 2 MB. Slack refuses smaller icons.
- Someone at the client who can install apps in their Slack workspace, usually a Workspace Owner or Admin.
Deploy
Create the channel
Request the Slack app

Generate the install link
Send it to the client's Slack admin
Verify
- Find the app under Agents & apps in the Slack sidebar and open its Messages tab. Your welcome message appears.
- Ask a question. Your agent answers in a thread under it.
- Reply in that thread. The agent keeps the context of the conversation.
Test in your own workspace first
Test as end-client checks the agent’s answers without any install. To check the Slack side too (your branding, the welcome message, buttons and forms, relayed technician replies), install the app into your own Slack workspace: generate an install link for a company in Companies that stands for your own business, and install it yourself. The bot treats you like any client’s employee, scoped to that company. A workspace stays linked to the company it was installed for while the app is installed there. To link it to a different company later, disconnect it first; see Offboarding a client.What end users see
Where they talk to it. Every conversation is a thread:- Direct messages: the app’s Messages tab, found under Agents & apps in the sidebar. Each message a person sends there starts its own conversation, and the answer comes in a thread under it. Replies in that thread continue the conversation, across days.
- Channels: add the app to a channel, and people @mention it. It answers in a thread under the message, and later mentions in that thread continue the same conversation. It never reads or answers a channel message that doesn’t mention it.

/help, and a line saying that replies are generated by AI and can be wrong. The app posts nothing when it is installed.
Replies. The reply appears in the thread as the agent writes it. While the agent works, Slack shows that it is working, with a stop button. Stop stops the agent’s work in that thread, including any question you sent there that is still waiting for its answer, and the app confirms in the thread. The conversation stays, so the next message in the thread carries on from there. Wait until Slack no longer shows that the agent is working before you send it, and send any dropped question again then: a message sent while the stop is still in progress is dropped with the stopped work. With Show progress updates on in the channel’s Chat tab, a small card lists what the agent is doing with plain labels such as “Checking your tickets”, and a Show steps button opens the list. End users never see tool names or what a tool returned.
Buttons and forms. When the agent asks a question with a few likely answers, the options come as buttons (up to six), or as tick boxes with a Something else box when several answers can apply. Several questions at once come as one form with Submit. Intent forms show in the conversation with a Submit button; a form with a long-text field opens in a Slack form window from an Open form button. After a long pause, a Start fresh / Continue previous chat card lets the person choose; see starting fresh after a pause.
Commands. /help shows your Description and how to use the app, visible only to the person who ran it. To start fresh, a person sends a new message: in direct messages each one starts its own conversation, and in a channel a new message that mentions the app does the same. /new says so. Typing “start a new chat” in a thread starts that thread over.
Files. People can attach up to six files per message: screenshots, which the agent reads, and documents, which it can attach to their ticket. The accepted types are on end-user tools. Files over 20 MB, and other types, are skipped. The app never sends files back.
Technician replies. A client-facing reply on the person’s ticket arrives in the same conversation, the way live ticket updates work in Teams. It shows who replied (the technician’s name and picture, or your own name) and one footer line with the ticket number, title and status. The channel’s Relayed technician messages, Show the ticket title and Show the ticket status settings apply as they do for Teams, and Don’t label them sends the note as plain text with no footer. Which PSA entries relay, and the Autotask client portal address for ticket links, are set once for Teams and Slack together, on the Microsoft Teams — End-user Chat Bot card under Integrations. The person’s replies land on the ticket as the ticket records describes.

The Tickets tab
Show the Tickets tab on the channel’s Slack app tab gives the Slack app a Home tab with each person’s tickets. A new Slack channel starts with it on, so its Slack app is built with the Home tab. When you switch it, Neo sends the change to Slack, and people see the tab the next time they open the app; nobody installs the app again. If Slack did not take the change, the Slack app section says so, and Request Slack app sends it again. The Home tab lists the person’s open tickets, most recently updated first, and the tickets closed in the last 30 days, the same list as the Teams Tickets tab: every ticket filed under their PSA contact, not only the ones the bot created. Each row has the ticket title, number, status and date; where your PSA has a client-portal link, the number opens the ticket there. The status follows Show the ticket status on the channel’s Chat tab. If no contact has the email on the person’s Slack profile, the tab says so and asks them to contact you.- New ticket opens the app’s Messages tab and starts a new conversation there, which begins with “What would you like to raise a ticket about?”. The person answers in that thread. The bot then follows your ticket policy, as in Teams.
- Chat about this, on each open ticket, starts a new conversation about that ticket, which begins with “We are now on ticket” and the ticket’s number and title. What the person writes in that thread is recorded on that ticket, and a technician’s client-facing reply on it arrives in the same thread.
- Refresh reads the list again. When the list cannot be read for a moment, such as when your PSA is slow or after too many refreshes, the tab keeps the list it is showing, with a line saying it may be out of date. When the tab was turned off or the workspace is no longer connected, the tab says so instead.
Who the bot serves
- The company is the one the workspace’s install link was generated for. One workspace is linked to exactly one company.
- The person is matched by the email on their Slack profile against that company’s active contacts in your PSA. With a match, they can see and reply to their own tickets. Without one, the bot can still file a ticket, noting the email it came from, but it can’t show them tickets until you add them as a contact.
- What the agent can reach is the same end-user tool set as in Teams, locked to that one person and company: see what end users can access and how end-user bots work.
What the app can access in the workspace
A client’s Slack admin sees these permissions on the Allow screen. The app can:- Read direct messages sent to it, and channel messages that mention it. It has no access to other channel messages.
- Send messages, and show that it is working on an answer.
- Read people’s names and email addresses, to match each person to a PSA contact.
- Read files people send to it.
- Run its
/newand/helpcommands. - Read the workspace’s name.
How it differs from Teams
Updating the app
Offboarding a client
Click Disconnect on the workspace under Connected Slack workspaces, then Disconnect it. Neo stops answering there and asks Slack to remove the app. If the app still shows in the workspace, a Slack admin there can remove it. If the client removes the app in Slack first, Neo drops the workspace from the list by itself. Disconnecting also removes the workspace’s company link, once no other Slack channel of yours is installed in that workspace. The same happens when the client removes the app in Slack. The workspace is then free: an install link for any company connects it again. While another of your channels is still installed there, the workspace keeps its company, and an install link for a different company is refused.Billing
The Slack bot is billed like the Teams bot: a flat monthly price per client company where someone used it, with the same free trial, which starts with your first install on either transport. See end-user bot pricing.Over the API
The same steps are in the public API:POST /public-api/channels/{id}/slack-apprequests the app, retries a failed request, or sends changed branding.GET /public-api/channels/{id}/slack-appreturns its status.POST /public-api/channels/{id}/slack-app/iconuploads the icon.POST /public-api/channels/{id}/slack-install-linkwith apsa_company_idmakes an install link.GET /public-api/channels/{id}/slack-installslists the connected workspaces, andDELETE /public-api/channels/{id}/slack-installs/{install_id}disconnects one.
Troubleshooting
The app request failed
The app request failed
The icon upload was refused
The icon upload was refused
The admin sees 'This link has expired'
The admin sees 'This link has expired'
The admin sees 'The install was cancelled'
The admin sees 'The install was cancelled'
The admin sees 'This Slack workspace is already connected to another company'
The admin sees 'This Slack workspace is already connected to another company'
The admin sees that an Enterprise Grid organization is not supported
The admin sees that an Enterprise Grid organization is not supported
The bot says the app isn't connected for this workspace yet
The bot says the app isn't connected for this workspace yet
The bot says the app isn't fully set up for the organization yet
The bot says the app isn't fully set up for the organization yet
A user can't see their tickets
A user can't see their tickets
The bot ignores a channel
The bot ignores a channel
The bot says it can't reach the service, or couldn't finish
The bot says it can't reach the service, or couldn't finish
A person from another organization is refused
A person from another organization is refused
The bot says the assistant isn't active for the organization right now
The bot says the assistant isn't active for the organization right now
The bot says the assistant isn't active any more
The bot says the assistant isn't active any more
