The moment it happens
Turn security alerts into Jira tickets and Slack messages
Each security alert creates one Jira ticket, posts to your security channel, and messages the affected person in Slack when the alert names them.
- Runs
- The moment it happens
- Apps
- Jira, Slack
- AI
- Not needed
- Access
- Jira create; Slack chat:write, users:read.email
Send this to your assistant
Create a ClickRuntime automation: when a security alert arrives at the trigger link, create a Jira ticket in SEC unless we've already ticketed that alert, post it to #security, and DM the affected user in Slack if the alert has their email.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A company's security tools send alerts by email: a suspicious login, a disabled multi-factor setting, a file shared publicly. The IT team investigates each by first asking the affected employee whether it was them, often a day later.
Creating a ticket for every alert and messaging the affected person straight away cuts the slowest part of the response. Most alerts are resolved by a quick 'yes, that was me', and the real incidents are tracked from the first minute.
What you get out of it
Every alert is tracked
Each alert becomes one Jira ticket. Nothing is lost in an inbox, and auditors can see how each was handled.
The affected person is asked straight away
A direct Slack message asks them to confirm the activity. Many alerts are cleared in minutes.
No duplicate tickets
Alerts that are sent again are recognised by their id. The security backlog stays accurate.
The team sees it in Slack
A post in the security channel means someone picks it up quickly, even outside office hours.
How it works
What happens, step by step
When a security tool raises an alert, it sends the details to your automation's trigger link.
ClickRuntime checks whether it has already created a ticket for that alert.
For a new alert, it creates a Jira ticket in your security project.
The alert is posted to your #security Slack channel with the ticket link.
If the alert names a person, they get a direct Slack message asking them to confirm the activity.
Before it runs live
- Connect Jira
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Paste your automation's link into the other app's webhook settings
What you get
Build your own
Need it to work differently?
Your own rules
Conditions, thresholds, filters and exceptions, written the way you'd explain them to a colleague.
Any number of apps
One automation can read from one app and update several others. Over 248 apps are ready, and anything with an API works too.
AI where it helps
Summaries, classification, extraction and drafts use ClickRuntime's built-in AI, with no extra key.
On a schedule or on each event
Runs as often as every 5 minutes, or the moment an app sends an event, and keeps track of what it already handled.
Changes you can ask for
- Act only on the items that match your own rules, and skip the rest
- Add an AI step, for example to summarize, sort or draft a reply
- Add another app, for example also send it to Google Sheets
- Combine it with other Jira and Slack steps into one automation
Under the hood
The code that runs this automation
from slack_sdk import WebClient
from slack_sdk.errors import SlackApiError
from clickruntime import on_event, credentials, http, notify, state
JIRA, SITE = "https://api.atlassian.com/ex/jira/your-cloud-id", "https://acme.atlassian.net/browse/"
adf = lambda text: {"type": "doc", "version": 1, "content": [{"type": "paragraph", "content": [{"type": "text", "text": text}]}]}
def jira(method, path, **kw):
resp = http.request(method, JIRA + path, headers={"Authorization": f"Bearer {credentials.connection('jira', 'work')}", "Accept": "application/json"}, **kw)
return resp.raise_for_status() or (resp.json() if resp.content else None)
@on_event
def handle(event):
alert = event.json or {}
done = state.get("alerts") or {}
if alert.get("id") in done:
return {"issue": done[alert["id"]], "duplicate": True}
issue = jira("POST", "/rest/api/3/issue", json={"fields": {"project": {"key": "SEC"}, "issuetype": {"name": "Task"},
"summary": f"[{alert.get('severity', 'alert')}] {alert.get('title', 'Security alert')}"[:250], "labels": ["security-alert"],
"description": adf(f"{alert.get('description', '')}\nUser: {alert.get('user_email', '-')}\nSource: {alert.get('source', '-')}")}})
notify.slack(f"Security alert {alert.get('title')} ({alert.get('user_email', 'no user')}) <{SITE}{issue['key']}|{issue['key']}>", channel="#security")
if alert.get("user_email"):
slack = WebClient(token=credentials.connection("slack", "work"))
try:
uid = slack.users_lookupByEmail(email=alert["user_email"])["user"]["id"]
slack.chat_postMessage(channel=uid, text=f"Hi, our security tools noticed: {alert.get('title')}. Was this you? Please reply in #security.")
except SlackApiError:
notify.slack(f"Could not find {alert['user_email']} in Slack for {issue['key']}", channel="#security")
done[alert.get("id")] = issue["key"]
state.set("alerts", done)
return {"issue": issue["key"]}FAQ
Common questions
Which security tools can send alerts?
What does the direct message say?
What if the email is not in Slack?
What permissions does it need?
Does it need AI?
How many runs does it use?
Can I change how it works?
Related
You might also like
Create onboarding tickets in Jira and welcome new hires in Slack
When a new hire is added, an onboarding epic with tasks appears in Jira, they are invited to the right Slack channels, and the team gets a welcome post.
See how it worksTriage support requests into Jira and alert the right Slack channel
Each incoming support request becomes a Jira ticket with a category, priority and summary, and is posted to the Slack channel for that category.
See how it worksUpdate Jira and post release notes to Slack when you tag a release
When a release is tagged, the Jira tickets mentioned in its commits get a fix version and move to Done, and Slack gets the release notes.
See how it worksKeep exploring
Set up “Turn security alerts into Jira tickets and Slack messages” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.