Goal

Automatically send a Slack Direct Message (DM) to the Jira reporter whenever a new Jira issue is created.

Architecture

The overall architecture is shown below.

                   +----------------+
                   |   Jira Cloud   |
                   +--------+-------+
                            |
                            | Jira Automation
                            |
                            v
                 HTTPS Webhook Request
                            |
                            v
               +-----------------------+
               |      Cloudflare       |
               |        Tunnel         |
               +-----------+-----------+
                           |
                           v
                    +-------------+
                    |     n8n     |
                    +------+------+ 
                           |
          +----------------+----------------+
          |                                 |
          v                                 v
 Lookup Slack User                 Send Slack DM
    by Email                         to Reporter

Environment

The environment used in this article:

Component Version / Service
Jira Jira Cloud
n8n Self-hosted (Docker)
Slack Slack Workspace
Cloudflare Tunnel
OS macOS
Container Runtime Docker + Colima

Prerequisites

Before building this automation, make sure the following components are already configured.

Jira Cloud

A Jira Cloud instance with:

  • A project for testing
  • Permission to create Jira Automation rules
  • Permission to create Web Requests

n8n

A self-hosted n8n instance.

In my environment:

  • Docker
  • Colima
  • macOS
  • Cloudflare Tunnel

The n8n instance is publicly accessible through a secure HTTPS URL.

Example:

https://automation.example.com

Note

Jira Cloud cannot call a webhook running on localhost. A public HTTPS endpoint (e.g., Cloudflare Tunnel) is required.

Slack Workspace

A Slack workspace where the Jira reporters are members.

Slack App

Create a Slack App from Slack API.

Configure the following Bot Token Scopes:

users:read
users:read.email
chat:write
im:write

Install the app into your Slack workspace and obtain the Bot User OAuth Token:

xoxb-xxxxxxxxxxxxxxxx

This token will be used by n8n to:

  • Look up a user by email
  • Send Direct Messages (DMs)

n8n Slack Credential

Step 1. Expose n8n to the Internet

Since Jira Cloud cannot access localhost, I exposed my local n8n instance through Cloudflare Tunnel.

Jira
    │
Internet
    │
Cloudflare Tunnel
    │
localhost:5678
  • Webhook URL:
    https://<my-subdomain>.<my-domain>/webhook/jira-test
    

Cloudflare Tunnel is free for personal use and is a secure way to expose local services to the Internet. It also provides a public URL that can be used in Jira Automation.

file

Tunneling through Cloudflare allows me to run n8n locally while still being able to receive webhooks from Jira Cloud.

file

Step 2. Create a Jira Automation Rule

  • Trigger:
    Work item created
    
  • Action:
    Send web request
    
  • Method:
    POST
    
  • Request body:
    {
      "issue": {
        "key": "",
        "summary": "",
        "reporter": "",
        "reporterEmail": ""
      }
    }
    

    file

Step 3. Build the n8n Workflow

- Webhook
      │
      ▼
Slack
(Look up user by email)
      │
      ▼
Slack
(Send message)
      │
      ▼
Respond to Webhook

Step 4. Look Up the Slack User

  • Slack node:
    Resource
        User
    
    Operation
        Look Up by Email
    
  • Expression:
      
    
  • Slack returns:
    {
        "id": "U012345678",
        "real_name": "Firstname Lastname",
        ...
    }
    

Step 5. Send the DM

  • Slack node:
    Resource
        Message
    
    Operation
        Send
    
  • Destination:
    User
    
  • Selection:
    By ID
    
  • Expression:
      
    
  • Message:
    Hello !
    
    Issue:
      
    
    Summary:
      
    

Result

Whenever a Jira issue is created:

Jira
    ↓
n8n
    ↓
Slack DM

The reporter immediately receives a Direct Message from:

Jira Automation

Which is sent by the Slack bot.

file

Problems I Encountered

  • Reporter email was empty
    Wrong:
      
    

    Corrent:

      
    
  • “Respond to Webhook” error

The Webhook node was configured to:

Using 'Respond to Webhook' Node

Therefore, the workflow must end with:

Respond to Webhook

file

Lessons Learned

  • Use Cloudflare Tunnel to expose a local n8n instance securely.
  • Jira Automation can send rich JSON payloads to n8n.
  • Slack’s Look Up by Email operation makes it easy to identify a user.
  • A Bot Token (xoxb-…) sends messages as the Slack App rather than as a personal user.
  • n8n’s node-based workflow makes integrating SaaS services straightforward.

Next Steps

The next improvement is to make the workflow production-ready by adding:

  • Data normalization (Edit Fields node)
  • Better Slack message formatting (Block Kit)
  • Error handling
  • Logging
  • Reusable sub-workflows

Eventually, this workflow will become one component of a larger Company AI Assistant, integrating Slack, Jira, Notion, and AI through n8n.