Slack Channel Config
Guides

Slack Channel Config

Map Slack channels to JuhJuh projects, set defaults, configure AI guidance, intake monitoring, and notification routing per channel.

Channel mappings are the bridge between your Slack workspace and JuhJuh projects. Each mapping connects one Slack channel to one project, controlling where tickets go, who gets assigned, what notifications fire, and how the AI interprets messages.

You can map as many channels as you need. One project can receive tickets from multiple channels. Each channel can only map to one project at a time.

Creating a channel mapping

  1. Go to Settings > Integrations > Slack Channels
  2. Click Add Channel
  3. Select the Slack channel from the dropdown
  4. Choose the target project
  5. Click Save

The JuhJuh bot must be present in the channel. Invite it with /invite @juhjuh before configuring the mapping.

Default settings

Each mapping has two optional defaults that pre-fill ticket creation from that channel.

Setting What it does
Default project The project pre-selected when creating tickets from this channel. Users can override at creation time.
Default assignee The team member automatically assigned to new tickets from this channel. Leave blank for manual assignment.

These defaults apply to both /jj slash commands and @juhjuh natural language requests.

Notification toggles

Three toggles control which events post messages back to the mapped Slack channel.

Toggle When it fires
Notify on ticket creation A new ticket is created in the mapped project
Notify on comments Someone comments on a ticket linked to this channel
Notify on status changes A ticket's status is updated

All three are enabled by default. Disable any toggle to reduce noise in busy channels.

These are channel-level notifications. Individual team members configure their own DM preferences separately at Profile > Notification Settings. See Notifications for the full list of per-user events.

AI guidance

The AI guidance field shapes how JuhJuh interprets natural language messages in a specific channel. It accepts up to 2,000 characters of free text. The guidance affects intent classification, parameter extraction, and conversation analysis for every @juhjuh mention in that channel.

To configure:

  1. Go to Settings > Integrations > Slack Channels
  2. Find the channel and click Edit
  3. Enter your guidance in the AI Guidance field
  4. Click Save

Writing good guidance

Be specific about the channel's purpose and the types of work discussed there. Focus on context the AI would not otherwise know: team function, default categories, priority biases, labeling conventions.

Examples:

Channel Guidance Effect
#frontend "This channel is for frontend bugs. Default priority to High. Tickets should be tagged as frontend." Tickets auto-fill with the frontend project and bug type
#infrastructure "Infrastructure channel. Classify network and deployment issues as devops type. Default priority high." Requests route to the infrastructure project with high priority
#design-requests "Design intake channel. Classify requests as design tasks. Tag with design label." Intake requests are classified for design work
#support-escalations "Customer support escalations. Always set priority to Urgent. Include the customer name in the ticket description." Urgent priority is applied automatically

Guidance text is sanitized before use. Prompt injection is not possible.

How guidance is applied

When someone mentions @juhjuh in a channel with AI guidance configured, the guidance is injected into the classification prompt as shared context. The same natural language message can produce different results in different channels because of this. A message like "this is broken" might create a frontend bug in #frontend and an infrastructure incident in #infrastructure.

Guidance does not affect /jj slash commands. Those bypass the AI layer entirely.

Intake settings

Intake monitoring turns a Slack channel into a request queue for people outside your platform. Designers, stakeholders, support teams, and external collaborators post messages that enter a triage queue for your team to review.

Five settings control intake behavior per channel.

Setting Description Default
Allow intake Accept requests from users who are not mapped to JuhJuh accounts Off
Intake channel monitoring Treat every top-level message in this channel as an intake request Off
Trigger emoji React to any message with this emoji to create an intake request :ticket:
Minimum message length Messages shorter than this character count are ignored 10
Triage channel The channel where triage notification cards are posted for your team Same channel

Enabling intake

  1. Go to Settings > Integrations > Slack Channels
  2. Edit the target channel mapping
  3. Toggle Allow intake to on
  4. Toggle Intake channel monitoring to on
  5. Optionally set a custom trigger emoji, minimum length, and triage channel
  6. Click Save

Intake flow

graph LR
    A[Message in intake channel] --> B{Meets criteria?}
    B -->|Yes| C[Intake request created]
    B -->|No| D[Ignored]
    C --> E[Acknowledgement posted]
    C --> F[Triage card sent]
    F --> G{Team decision}
    G -->|Accept| H[Converted to ticket]
    G -->|Reject| I[Requester notified]
    G -->|Defer| J[Follow-up scheduled]

When intake monitoring is active, every top-level message in the channel that meets the minimum length is captured as a request. Thread replies are not captured. Duplicate requests from the same message are prevented with a one-hour deduplication window.

The trigger emoji works in any connected channel, not only intake channels. React with the configured emoji on any message and JuhJuh creates an intake request from it. One request per message.

Guest users

External Slack users who are not mapped to JuhJuh accounts are tracked as guest users. After 3 or more requests, they are prompted to create a full platform account. All previous requests link to the new account automatically.

Guest users can only view and interact with their own requests. They have no access to the broader platform.

Triage channel routing

By default, triage notification cards post to the same channel where the intake request was created. For teams that prefer a dedicated review channel, set the Triage channel field to a different channel.

This keeps the intake channel clean for incoming requests while your team triages in a separate space. The triage cards include interactive buttons (Accept, Reject, Defer) so your team can act without opening the web interface.

See the full triage workflow and queue management at Slack: Triage queue.

Managing multiple channels

Most teams map several channels. Common patterns:

Pattern Channels Setup
Team-per-channel #frontend, #backend, #devops Each channel maps to a team-specific project with AI guidance tuned to that domain
Intake + work #requests, #engineering #requests has intake monitoring on. #engineering is the triage channel.
Support escalation #support, #support-triage #support allows intake from external users. #support-triage receives triage cards.
Project-per-channel #project-alpha, #project-beta Each channel maps to its respective project. Defaults and guidance differ per project.

Editing and removing mappings

Edit a mapping:

  1. Go to Settings > Integrations > Slack Channels
  2. Find the channel and click Edit
  3. Change any settings
  4. Click Save

Remove a mapping:

  1. Go to Settings > Integrations > Slack Channels
  2. Find the channel and click Remove
  3. Confirm the removal

Removing a mapping stops notifications and ticket routing for that channel. Existing tickets created from the channel are not affected. Thread sync for active threads continues until those threads go inactive.

API access

Channel mappings are available through the API. The endpoint supports listing, viewing, and updating mappings programmatically.

Operation Method Endpoint
List all mappings GET /api/v1/orgs/{slug}/slack-channels/
View a mapping GET /api/v1/orgs/{slug}/slack-channels/{id}/
Update a mapping PATCH /api/v1/orgs/{slug}/slack-channels/{id}/

Updating requires organization admin permissions.

Filterable fields: is_intake_channel (boolean), q (search by channel name).

  • Slack: full Slack integration guide, including commands, natural language, thread sync, and link unfurling
  • Notifications: per-user DM preferences and event types
  • Projects: the projects that channel mappings route tickets to
  • Tickets: the tickets created from Slack channel activity
  • Agents: AI agents that can be triggered from mapped channels
  • Permissions: organization admin requirements for managing channel config