Tutorial: Slack to Jira Escalation

Build a workflow that monitors a Slack channel for messages marked with a specific emoji reaction, uses AI to extract structured bug/issue details, and creates a prioritized Jira ticket, all automatically.

What you'll build

App Event (Slack reaction) → TinyGPT (extract issue details) → Jira (create ticket) → Slack (post confirmation in thread)

Time to build: 15 minutes

Prerequisites

  • Slack workspace connected in Build → App Authorizations
  • Jira (Cloud) connected in Build → App Authorizations
  • A Slack channel where your team posts issues (e.g., #bugs, #support-escalation)
  • A Jira project to receive the tickets

Step 1: Set up the Slack trigger

  1. Create a new workflow → + Add TriggerApp Event
  2. Select Slack as the app
  3. Choose Reaction Added as the event type
  4. Configure:
FieldValue
ConnectionYour Slack workspace
Channel#bugs (or your escalation channel)
Reaction filterticket (or jira, bug, whatever emoji your team uses)
  1. To populate test data, go to Slack, find a message in the channel, and add the reaction emoji. Then click Test in TinyCommand to capture the event.

The trigger outputs:

{{trigger.event.message.text}}     → the original message
{{trigger.event.message.user}}     → who posted it
{{trigger.event.message.ts}}       → message timestamp
{{trigger.event.channel}}          → channel ID

Step 2: Add the TinyGPT extractor

  1. Click + Add NodeAITinyGPT
  2. Select Extract Data template → Continue
  3. Configure:

System Prompt:

You are a support ticket parser. Extract structured issue information from Slack messages. Determine priority based on language urgency, customer impact, and severity indicators.

Priority rules:
- CRITICAL: production down, data loss, security breach, revenue impact
- HIGH: feature broken for multiple users, workaround exists but painful
- MEDIUM: bug affecting some users, has workaround
- LOW: cosmetic issue, feature request, nice-to-have

Query:

Extract issue details from this Slack message:

{{trigger.event.message.text}}

Output Schema:

{
  "title": "Short descriptive title for the Jira ticket",
  "description": "Detailed description of the issue including steps to reproduce if mentioned",
  "priority": "HIGH",
  "component": "backend",
  "labels": ["bug", "customer-reported"],
  "estimated_impact": "Affects checkout flow for ~20% of users"
}
  1. Set Temperature to 0.1; we want deterministic extraction
  2. Test and save

Step 3: Create the Jira ticket

  1. Click + Add NodeIntegrationsJiraCreate Issue
  2. Configure:
FieldValue
ConnectionYour Jira account
ProjectSelect your target project
Issue TypeBug
Summary{{tinygpt.result.title}}
DescriptionSee below
Priority{{tinygpt.result.priority}}
Labels{{tinygpt.result.labels}}

Description field:

h3. Issue Description
{{tinygpt.result.description}}

h3. Impact
{{tinygpt.result.estimated_impact}}

h3. Source
* *Reported by:* <@{{trigger.event.message.user}}> in Slack
* *Channel:* #{{trigger.event.channel}}
* *Original message:* {{trigger.event.message.text}}

h3. AI Classification
* *Component:* {{tinygpt.result.component}}
* *Priority:* {{tinygpt.result.priority}}

_This ticket was auto-created by TinyCommand from a Slack escalation._
  1. Test and save; note the output includes {{jira.issue.key}} (e.g., PROJ-1234)

Step 4: Post confirmation back to Slack

  1. Click + Add NodeIntegrationsSlackSend Message
  2. Configure:
FieldValue
ConnectionYour Slack workspace
Channel{{trigger.event.channel}}
Thread TS{{trigger.event.message.ts}} (this posts in the thread of the original message)
MessageSee below

Message:

:white_check_mark: *Jira ticket created:* {{jira.issue.key}}

*Title:* {{tinygpt.result.title}}
*Priority:* {{tinygpt.result.priority}}
*Component:* {{tinygpt.result.component}}

View ticket: {{jira.issue.url}}
  1. Test and save

Step 5: Test end-to-end

  1. Go to your Slack channel
  2. Post a test message:
The checkout page is throwing a 500 error when customers try to apply discount codes. 
Started happening after yesterday's deploy. Multiple customers have reported it. 
Revenue impact — affected orders are being abandoned.
  1. Add your trigger emoji reaction (e.g., :ticket:) to the message
  2. Watch the workflow execute:
    • TinyGPT should classify this as CRITICAL priority
    • A Jira ticket should be created with the extracted details
    • A threaded reply should appear in Slack with the ticket link

Step 6: Publish

Click Publish to make the workflow live. Now any time someone adds the trigger emoji to a message in the monitored channel, it automatically creates a Jira ticket.

Going further

  • Add assignee routing: After TinyGPT, add an If-Else node to assign tickets to different team members based on the component field (backend → Alice, frontend → Bob)
  • Add duplicate detection: Before creating the Jira ticket, use an HTTP Request to search Jira for similar titles. If a match exists, add a comment to the existing ticket instead of creating a new one
  • Multi-channel monitoring: Create copies of this workflow for different channels (#customer-bugs, #internal-bugs) with different Jira projects
  • Add SLA tracking: After creating the Jira ticket, add a Delay node (e.g., 4 hours) followed by an HTTP Request to check the ticket status. If it's still "To Do", send a reminder to the assignee
Warning

The AI may occasionally misclassify priority. For critical/production issues, have your team also manually verify the Jira ticket priority after it's created. Consider adding a Human-in-the-Loop node before ticket creation for the CRITICAL tier.