Slack
Guides

Slack

Create tickets, trigger AI agents, triage intake requests, and get notifications directly in Slack. Full setup and usage guide.

The Slack integration puts JuhJuh inside your team's daily communication. Create tickets, trigger agents, triage external requests, and receive notifications without leaving Slack.

Two interaction modes are available:

  • Structured commands (/jj) for fast, precise operations
  • Natural language (@juhjuh) for conversational requests in plain English

Both modes support the same core operations: ticket creation, status checks, assignment, agent triggers, and knowledge search.

Installation

  1. Go to Settings > Integrations > Slack in your organization
  2. Click Connect Slack and select the project to authorize
  3. Slack redirects you to the OAuth authorization page. Review the permissions and click Allow
  4. JuhJuh stores the connection credentials securely for that project

Permissions granted during OAuth:

Scope Purpose
Channels (read/join) Read channel messages and join channels where the bot is invited
Messages (write) Post notifications, ticket cards, and agent progress updates
Reactions (read) Detect emoji reactions that trigger ticket creation
Commands Register the /jj slash command
Chat (unfurl) Display rich previews when JuhJuh links are shared
Users (read) Resolve Slack users to JuhJuh accounts
Conversations (read) Fetch thread context for smart ticket creation

To connect multiple projects, repeat the authorization for each one. Each project maintains its own Slack connection.

Channel configuration

Channel mappings connect Slack channels to JuhJuh projects. They control which project receives tickets from a given channel, who gets assigned by default, and which notifications get posted. See Slack Channel Config for the full configuration reference, including AI guidance, intake settings, and triage channel routing.

Quick setup:

  1. Go to Settings > Integrations > Slack Channels
  2. Click Add Channel and select the Slack channel from the dropdown
  3. Choose a default project and assignee
  4. Toggle notification preferences
  5. Save

The JuhJuh bot must be invited to each channel you configure. Invite it with /invite @juhjuh.

AI guidance

Each channel mapping includes a free-text AI guidance field (up to 2,000 characters) that shapes how JuhJuh interprets natural language messages in that channel. Guidance affects intent classification, parameter extraction, and conversation analysis. See Slack Channel Config: AI Guidance for detailed examples and writing tips.

Slash commands

All structured commands use the /jj prefix. These bypass the AI layer entirely for speed.

Command Description Example
/jj create <title> Create a new ticket with the given title /jj create Login page crashes on mobile
/jj status <key> Check the status of a specific ticket /jj status PROJ-42
/jj list List your recent tickets (up to 10) /jj list
/jj assign <key> Assign a ticket to yourself or a team member /jj assign PROJ-42
/jj run-agent <agent> "<task>" Trigger an AI agent with a specific task /jj run-agent DevBot "fix the login crash"
/jj context Create a ticket from the current thread context using AI extraction /jj context
/jj link Link your Slack account to your JuhJuh account /jj link
/jj mystatus Check the status of your submitted intake requests /jj mystatus
/jj help Show available commands and usage /jj help

Commands return an immediate acknowledgement, then post the full response once processing completes. Rate limit: 5 commands per 60 seconds per user.

Natural language

Mention @juhjuh in any channel where the bot is present and describe what you need in plain English. JuhJuh routes natural language through the same intelligence layer used by the web platform.

Supported intents:

Intent Example
Create ticket "create a bug for the login crash"
Update ticket "assign PROJ-42 to sarah"
Query tickets "show my open tickets"
Check status "what's the status of PROJ-42?"
Create idea "I have an idea for dark mode support"
Expand idea "expand on that idea"
Convert idea to ticket "convert that idea to a ticket"
Run agent "ask DevBot to fix the auth issue"
Agent status "what is DevBot doing?"
Search knowledge "search knowledge for auth patterns"
Help "what can you do?"

Confidence levels:

Level Behavior
High The action is executed immediately. The result is posted publicly.
Medium The action is executed. The response is posted privately so you can confirm.
Low JuhJuh asks for clarification before acting.

When parameters are missing from a request, JuhJuh prompts you for the missing details instead of guessing. Per-channel AI guidance directly affects how natural language is interpreted. The same message can produce different results depending on the channel's configured guidance.

Intake system

The intake system lets non-platform users (designers, stakeholders, support teams) submit requests directly from Slack. Requests enter a triage queue for your team to review and act on.

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]

Enabling intake monitoring:

  1. Go to Settings > Integrations > Slack Channels
  2. Edit the channel you want to designate as an intake channel
  3. Enable the required settings:
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 threshold (characters) are ignored 10
Triage channel The channel where triage notification cards are posted Same channel

How it works:

  1. A user posts a message in the intake channel, or someone reacts with the trigger emoji on any message in a connected channel
  2. JuhJuh acknowledges receipt in the channel
  3. The request is classified by type (bug, feature, question, or other) and added to the triage queue
  4. A triage notification card with action buttons is posted to the configured triage channel
  5. Your team triages the request
  6. The original requester receives status updates via thread replies

Emoji-based ticket creation: React with the trigger emoji on any message in a connected channel to create a ticket from it. One ticket per message. Duplicate prevention is automatic, with a one-hour deduplication window.

Guest user tracking: External Slack users are tracked by their Slack identity without a platform account. After 3 or more requests, they are prompted to create a full account. All previous requests link automatically.

Triage queue

The triage queue is where your team reviews, prioritizes, and acts on incoming intake requests.

Accessing the queue: Navigate to Settings > Intake Queue.

Filtering options:

Filter Values
Status Pending, Triaged, Deferred, Converted, Rejected
Channel The Slack channel the request originated from
Request type Bug, Feature, Question, Other

Actions:

Action Description
Accept Convert the request into a ticket. Set the title, priority, assignee, and add triage notes.
Reject Decline the request with a reason. The requester is notified in their original Slack thread.
Defer Postpone the request with a follow-up date. Deferred requests resurface automatically when the date arrives.
Assign Route the request to a specific team member for triage.
Merge Link the request to an existing ticket to avoid duplicates.

Triage from Slack: Triage notification cards posted to your triage channel include interactive buttons (Accept, Reject, Defer). Your team can triage directly from Slack without opening the web interface.

Auto-escalation: Requests in Pending status for more than 24 hours are automatically escalated. Deferred requests past their follow-up date are resurfaced for attention.

Agent integration

AI agents can be triggered and monitored directly from Slack.

Four trigger methods:

Method How
Slash command /jj run-agent <agent-name> "<task>"
Natural language @juhjuh ask DevBot to fix the auth bug
Interactive buttons Click action buttons on ticket cards or agent completion cards
Channel mention triggers Configure agents to auto-fire when @juhjuh is mentioned in specific channels
sequenceDiagram
    participant U as User
    participant S as Slack
    participant J as JuhJuh
    participant A as Agent

    U->>S: @juhjuh ask DevBot to analyze auth
    S->>J: Event received
    J->>S: "DevBot is working on it..."
    J->>A: Start agent execution
    loop Progress updates
        A->>J: Status update
        J->>S: Progress posted to thread
    end
    A->>J: Execution complete
    J->>S: Completion card with summary

Progress tracking: While an agent runs, progress updates are posted to the originating Slack thread in real time. Running agents display a Cancel button so you can stop execution early.

Completion cards include:

  • Summary of work done
  • Execution status (completed or failed)
  • Tools used and iteration count
  • Interactive buttons: Retry, View Details, View Ticket

Channel mention triggers: Assign agents to auto-start when @juhjuh is mentioned in designated channels. Useful for dedicated support or operations channels. Configure at Settings > Agents > Triggers.

Notifications

Channel notifications are posted to mapped channels when:

  • A ticket is created in the mapped project
  • A ticket's status changes
  • A ticket receives a comment
  • An agent completes or fails
  • A new intake request arrives

Per-user DM configuration: Each user controls which events trigger Slack direct messages.

Event type Description
Ticket created A new ticket is created in a project you follow
Status changed A ticket's status was updated
Assigned to you A ticket was assigned to you
Comment added Someone commented on a ticket you are involved in
Agent completed An AI agent finished executing a task
Agent failed An AI agent encountered an error
Intake request A new intake request arrived (for triage team members)
Mentioned You were mentioned in a comment or description
PR created A pull request was created for a ticket you follow

Configure DM preferences at Profile > Notification Settings. Slack DM delivery is disabled by default.

Quiet hours: Set a time window (for example, 10:00 PM to 8:00 AM) to suppress Slack DM notifications. In-app notifications are still recorded during quiet hours and visible when you next open the platform.

Page notifications

Pages can send Slack notifications independently of the ticket notification system. This is useful for teams that collaborate on documentation or knowledge base content.

Setup:

  1. Go to your project's Pages > Integrations > Slack
  2. Select the Slack channel to receive page notifications
  3. Toggle the events you want:
Setting Description
Notify on page creation Post a message when a new page is created
Notify on page updates Post a message when a page is edited
Notify on comments Post a message when someone comments on a page

Page notifications are configured per project and per channel. They use the same Slack connection established during OAuth setup.

Thread sync

Bidirectional sync between Slack threads and ticket comments. The full Slack discussion is captured on the ticket automatically.

Three sync directions:

Direction Behavior
Both (default) Slack replies become ticket comments. Ticket comments are posted to the Slack thread.
Slack to JuhJuh only Slack thread replies sync to the ticket. Ticket comments are not posted back to Slack.
JuhJuh to Slack only Ticket comments are posted to the Slack thread. Slack replies are not synced to the ticket.

How threads are linked:

  1. A ticket URL is shared in a Slack thread
  2. A ticket is created from a Slack thread (via /jj create or /jj context)
  3. A team member manually links a thread to a ticket

When a JuhJuh URL is shared in any Slack channel where the bot is present, JuhJuh posts a rich preview card automatically.

Supported entities:

Entity Preview includes
Ticket Title, status, priority, assignee, project
Project Name, key, description, ticket count
Agent Name, type, description, status

Ticket key detection: Mention a ticket key (for example, PROJ-123) in conversation and JuhJuh unfurls it automatically. The pattern matches 1 to 10 uppercase letters followed by a dash and 1 to 6 digits. No link required.

Action buttons on unfurled cards:

Button Action
View Open the entity in the web platform
Assign Assign the ticket to a team member
Comment Add a comment to the ticket from a modal
Subscribe / Unsubscribe Toggle notifications for the entity

Security

Measure Description
Cryptographic signature verification Every incoming request from Slack is verified using HMAC signatures with a 5-minute replay window
Rate limiting 5 commands per 60 seconds per user. A secondary per-organization limit applies to AI-processed requests.
No destructive operations Delete operations are blocked from Slack. Destructive actions require the web interface.
Account linking required Write operations (creating and updating tickets) require a linked platform account
AI guidance sanitization Per-channel guidance text is sanitized to prevent prompt injection
Event deduplication Every incoming event is deduplicated to prevent double-processing from retries
Guest isolation Guest users can only submit and view their own requests. No access to the broader platform.
Idempotent processing All background operations are safe to retry without side effects
Data retention Raw event payloads are purged after 90 days
Generic error messages Error responses never expose internal implementation details

Troubleshooting

Bot not responding to commands:

  1. Verify the bot is in the channel. Invite it with /invite @juhjuh
  2. Check the OAuth connection at Settings > Integrations > Slack. Verify the status is active. Re-authorize if needed.
  3. Run /jj link to confirm your Slack account is linked to your JuhJuh account. Write operations require a linked account.
  4. Check rate limits. If you sent more than 5 commands in 60 seconds, wait and retry.

Notifications not being delivered:

  1. Verify channel notification toggles are enabled at Settings > Integrations > Slack Channels
  2. Check personal DM preferences at Profile > Notification Settings. Slack DM delivery is disabled by default.
  3. Check quiet hours. DM notifications are suppressed during the configured window.
  4. Confirm the bot is still in the channel. Bots can be removed by workspace admins.

Intake requests not being created:

  1. Verify both Allow intake and Intake channel monitoring are enabled on the channel mapping
  2. Check the minimum message length setting. Messages below the threshold are silently ignored.
  3. Confirm the message is top-level. Thread replies do not create intake requests.
  4. Verify the user is not already mapped to a JuhJuh account (mapped users go through the standard ticket creation flow).

Link unfurling not working:

  1. Verify the bot has unfurl permissions. These are granted during OAuth authorization.
  2. Check that the URL domain matches your JuhJuh instance domain.
  3. Confirm the bot is present in the channel where the link was shared.

Agent not triggering from Slack:

  1. Verify the agent is active at Settings > Agents
  2. For channel mention triggers, confirm the trigger is configured for the correct channel at Settings > Agents > Triggers
  3. Verify the user triggering the agent has appropriate permissions in the target project
  4. Check that the agent name is spelled correctly in the command
  • Slack Channel Config: per-channel settings, AI guidance, intake monitoring, and triage routing
  • Integrations: overview of all supported integrations and connection setup
  • Agents: create and configure AI agents that can be triggered from Slack
  • Tickets: the tickets that Slack commands create and manage
  • Projects: project-level configuration for Slack channel mappings
  • Pages: knowledge base pages that can send Slack notifications
  • Automation: auto-classification and triage rules that work with Slack intake