Skip to content
Ed Mozley edited this page Aug 7, 2026 · 2 revisions

Slack

Someone types "my laptop won't charge" into a Slack channel. It becomes a ticket. You answer it from the FreeITSM inbox, and your reply appears in that Slack thread β€” so the person asking never leaves Slack, and never has to learn there is a service desk behind it.

Set up under System β†’ Integrations β†’ Slack.

Developers: the architecture, the file map and the traps are in the Slack β€” Developer Guide.


What you get

  • A message in the Slack channel you choose becomes a ticket, with the sender as the requester.
  • Your reply from the inbox appears in that Slack thread.
  • Anything else said in the thread lands on the same ticket.
  • Screenshots shared in Slack come across as attachments.

It behaves like any other channel once the ticket exists: SLAs, assignment, priorities, reporting and company routing all work the same way as they do for email, WhatsApp or web chat.


πŸ”‘ You own the Slack app, not us

There is no FreeITSM-hosted Slack service, and there never will be. You create an app inside your own Slack workspace, and it talks straight to your own server.

That is a deliberate choice. Publishing a single shared app β€” the way a hosted product would β€” would mean this project ran a server that every customer's Slack traffic passed through, permanently, and became a data processor for other people's companies. For something free and self-hosted, that is the wrong trade.

What it means for you:

  • Your messages never pass through anyone else's machine.
  • There is no central service that can be switched off, rate-limited or discontinued.
  • There is nobody to trust beyond Slack and your own server.

The catch, stated plainly: for Slack to send anything to FreeITSM, it has to reach your server from the internet over https://. An install that is only reachable inside your own network can still post out to Slack (see Webhooks) but cannot receive.


Setting it up

The in-app guide β€” System β†’ Integrations β†’ Slack β†’ How to set up Slack β€” is the full step-by-step, written for someone who has never opened Slack. In outline:

  1. Add the workspace in FreeITSM first. The Slack app needs the web address to send messages to, and that address contains the row's own id β€” so the row has to exist before the app can.
  2. Create the Slack app from the manifest FreeITSM generates. At api.slack.com/apps, choose Create New App β†’ From a manifest and paste it. That sets the name, the permissions and the address in one go.
  3. Copy the two secrets back β€” the signing secret and the bot token.
  4. Invite the app to a channel: /invite @YourApp.

⚠️ Two things that catch nearly everybody

Both produce something that looks like success, which is what makes them worth calling out.

Click the yellow "Reinstall to Workspace" banner. Slack grants an app its permissions at the moment it is installed. An app created from a manifest holds a token missing most of them until you reinstall. Nothing appears broken β€” tickets still arrive, they just say "Slack user @U0A1B2C3" instead of a name. Fix it and the names correct themselves on that person's next message.

An app cannot read a channel it is not in. No error, no warning: messages simply never arrive. /invite @YourApp in the channel.

Both are checked by the health check below, so you do not have to remember them.


The health check

The tick button on a workspace runs nine checks and tells you what to do about anything it finds. It exists because almost every way this can break looks like success β€” the token is valid, the app is connected, tickets even arrive, and one thing is quietly wrong.

Check What it catches
Switched on The workspace is marked inactive
Credentials stored A missing bot token or signing secret
Slack accepts the token A revoked, mistyped or pre-install token
Permissions The reinstall trap β€” the failure with no symptom
Can read names Tickets would arrive as "Slack user @U…"
Address Slack sends to An address Slack cannot use: http://, localhost, a private range
Reachable from the internet Slack cannot get through to you
In the channel The missing /invite β€” the commonest failure of all
Messages arriving Nothing has ever come through β€” and if something has, that also proves your signing secret is right

If the reachability check cannot confirm your address but Slack has reached you before, it says so rather than claiming a fault. That test makes your server call its own public address, which loops back through the same web server, and some tunnels drop it even when everything is fine.


How it behaves

A thread is a ticket. This is the one place Slack deliberately differs from WhatsApp. On WhatsApp a person has one running conversation with the service desk, so the sender identifies it. In Slack the same person can have several unrelated threads going at once β€” so the thread is the conversation. A new message in the channel starts a new ticket; a reply inside a thread lands on the existing one.

Watch one channel. Leave Only watch this channel blank and every channel the app is invited to raises tickets β€” which on a busy channel means a ticket per message. Name a dedicated channel such as #it-help.

Names, and what happens when Slack cannot give us one. FreeITSM asks Slack for the sender's email and matches it to an existing FreeITSM user, so their tickets and company line up with everything else. When there is no match it falls back to a named requester β€” "Sam Okafor (Slack)", or "Slack user @U0A1B2C3" if even the name is unavailable. Never a blank requester, and never a silent failure.

No reply deadline. WhatsApp has a 24-hour business-messaging window; Slack has nothing of the kind. You can reply to a thread from last year.

More than one company. Pin a workspace to a single company, or leave it shared and let the sender decide β€” the same model as every other channel. See Multi-Tenancy.


If something is wrong

What you see What it usually means
Slack refuses to create the app, complaining about the request URL Slack cannot reach your server. It must be https:// and reachable from outside your network.
Messages never become tickets Nine times in ten the app was never invited to the channel. Otherwise check the signing secret is saved β€” without it everything is refused.
Tickets say "Slack user @U0A1B2C3" The reinstall trap. OAuth & Permissions β†’ Reinstall to Workspace, then copy the bot token again. Existing requesters correct themselves on their next message.
The test says the token was rejected Copied before installing the app, or from the wrong field. It must start xoxb-, from OAuth & Permissions.
Replies fail with "not in channel" The app was removed from the channel after setup. Invite it again.
One person's messages all pile onto one ticket They are replying in the same thread. A new message in the channel starts a new ticket.

Run the health check first β€” it will usually name the problem before you have to look anything up.


What it does not do yet

No message shortcuts (raising a ticket from any message via the … menu), no /ticket slash commands, no ticket cards with buttons, no incident channels, and no chatbot. Slack is a way in and a way to reply, not yet a place to work.


Related

FreeITSM

Getting Started

Modules

Multi-tenancy (planned)

Blue sky thinking

Bugs resolved

Links

Clone this wiki locally