The moment it happens
Log security events as Jira tasks and Notion records
Each security or data-quality alert creates one Jira task and one entry in your Notion security log, and the team is told in Slack.
- Runs
- The moment it happens
- Apps
- Jira, Notion
- AI
- Not needed
- Access
- Jira write; Notion read+insert
Send this to your assistant
Create a ClickRuntime automation: when a security alert arrives at the trigger link, skip it if we've seen its id, otherwise create a Jira task in SEC, add an entry to my Notion Security log, and post to #security.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A small company's compliance programme requires a log of every security event, such as repeated failed logins or a data check that failed, and evidence of follow-up. The security lead keeps the log in Notion by hand and tracks the work in Jira, and the two are rarely in sync.
Creating the Jira task and the Notion log entry together, from the alert itself, keeps the record complete and consistent. The follow-up is tracked in Jira, and the log is ready for the auditor.
What you get out of it
A complete security log
Every alert gets a Notion entry with time, source and details. The log is audit-ready.
Follow-up is tracked
A Jira task gives each event an owner and status. Nothing is left without a response.
No duplicates
Repeated deliveries of the same alert are recognised by their id. Each event is logged once.
The team hears about it
A Slack message alerts the security channel so someone looks straight away.
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 handled an alert with the same id.
For a new alert, it creates a Jira task in your security project.
An entry is added to your Notion security log with the details and a link to the task.
A message is posted to your #security Slack channel.
Before it runs live
- Connect Jira
- Connect Notion and share the database you want it to use
- 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 Slack
- Combine it with other Jira and Notion steps into one automation
Under the hood
The code that runs this automation
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)
def notion(method, path, **kw):
resp = http.request(method, f"https://api.notion.com/v1{path}", headers={
"Authorization": f"Bearer {credentials.secret('NOTION_TOKEN')}", "Notion-Version": "2022-06-28"}, **kw)
return resp.raise_for_status() or resp.json()
LOG = "your-notion-database-id"
@on_event
def handle(event):
alert = event.json or {}
seen = state.get("seen") or []
if alert.get("id") in seen:
return {"duplicate": True}
key = jira("POST", "/rest/api/3/issue", json={"fields": {"project": {"key": "SEC"}, "issuetype": {"name": "Task"},
"summary": f"[{alert.get('severity', 'info')}] {alert.get('title', 'Security event')}"[:250], "description": adf(alert.get("details", ""))}})["key"]
notion("POST", "/pages", json={"parent": {"database_id": LOG}, "properties": {
"Name": {"title": [{"text": {"content": alert.get("title", "Security event")}}]}, "Source": {"select": {"name": alert.get("source", "unknown")}},
"Severity": {"select": {"name": alert.get("severity", "info")}}, "Received": {"date": {"start": event.received_at}}, "Jira": {"url": SITE + key}}})
notify.slack(f"Security event logged: {alert.get('title')} ({key})", channel="#security")
state.set("seen", (seen + [alert.get("id")])[-1000:])
return {"issue": key}FAQ
Common questions
Which tools can send alerts?
What goes in the Notion entry?
Can low-severity alerts skip Jira?
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
Update Jira and log a Notion changelog from your commits
When code is pushed with a Jira key in the commit message, the ticket gets a comment and moves forward, and a changelog entry is added to Notion.
See how it worksTriage feedback into Jira with a Notion log
Every piece of feedback is logged in your Notion database with its type and severity, bugs become Jira issues, and critical ones are posted to Slack.
See how it worksGet a pre-meeting briefing from Jira and Notion
Before each project meeting, Slack gets a briefing with the open Jira issues and a summary of the latest Notion notes for that project.
See how it worksKeep exploring
Set up “Log security events as Jira tasks and Notion records” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.