Skip to content

The moment it happens

Log all feedback in a sheet and send actionable items to Jira

Every piece of feedback is logged in a sheet with its type, sentiment and priority, and the actionable ones become Jira issues.

Runs
The moment it happens
Apps
Google Sheets, Jira
AI
Yes, uses the built-in AI allowance
Access
Sheets write; Jira create issues

Send this to your assistant

Create a ClickRuntime automation: when feedback arrives at the trigger link, have AI pick a type, sentiment and priority, add a row to my Feedback sheet, and create a Jira issue in FB for bugs and feature requests.

Paste it into your assistant. It tells you what it will send or change before it runs live.

First time? Adding ClickRuntime to your assistant takes about two minutes.

Why use it

Why teams use this automation

A product team collects feedback from surveys, support and an in-app form. Only some of it is actionable, but all of it is useful for spotting trends. Putting everything in Jira clutters the backlog; putting nothing there means good ideas are lost.

Logging every item in a sheet and sending only bugs and requests to Jira gives the team both: a complete record to analyse, and a clean backlog of things to act on.

What you get out of it

  • A complete feedback record

    Every item is logged with type and sentiment. Trends over time are easy to chart.

  • A clean backlog

    Only bugs and requests become Jira issues. Praise and general comments stay in the sheet.

  • Sentiment at a glance

    Each row shows whether the customer was happy or frustrated. A rise in negative feedback stands out.

  • Linked records

    Rows that became issues include the Jira key. You can follow any item from feedback to fix.

How it works

What happens, step by step

  1. When feedback is submitted, your form or tool sends it to your automation's trigger link.

  2. AI reads it and picks a type, a sentiment and a priority.

  3. Bugs and feature requests become Jira issues.

  4. Every item is added as a row in your Feedback sheet, with the Jira key where there is one.

Before it runs live

  • Connect your Google Sheets account and pick the spreadsheets it may use
  • Connect Jira
  • Paste your automation's link into the other app's webhook settings

What you get

RunsThe moment it happens
Log all feedback in a sheet and send actionable items to Jirajust nowSucceeded
Google Sheets · Feedback2026-10-17 | survey | ops@northwind.example | feature | neutral | Medium | Would love a dark mode | FB-218

Build your own

Need it to work differently?

This template is a starting point. Copy the prompt and change it, or describe a different automation from scratch, with your own conditions, more apps or an AI step. Your assistant writes it, tests it and runs it on ClickRuntime.
  • 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
  • Change what the AI looks for, or how it writes the result
  • Add another app, for example also send it to Slack
  • Combine it with other Google Sheets and Jira steps into one automation

Under the hood

The code that runs this automation

This is the Python script that runs each time the automation starts. Your AI assistant writes it for you when you send the prompt, and you allow each step in your assistant. To change how the automation works, describe the change to your assistant and it updates the script for you. For every function it can use, see the script reference.
ai_triage_of_feedback_into_jira_with_a_sheet_log.pyexample
from datetime import date
from google.oauth2.credentials import Credentials
from googleapiclient.discovery import build
from clickruntime import on_event, credentials, http, ai

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)

SHEET_ID = "your-spreadsheet-id"
SCHEMA = {"type": "object", "properties": {"type": {"type": "string", "enum": ["bug", "feature", "praise", "other"]},
          "sentiment": {"type": "string", "enum": ["positive", "neutral", "negative"]}, "priority": {"type": "string", "enum": ["High", "Medium", "Low"]}, "title": {"type": "string"}}}

@on_event
def handle(event):
    fb = event.json or {}
    t = ai.generate(fb.get("message", "")[:4000], json_schema=SCHEMA, max_output_tokens=80, system="Classify this customer feedback with a short title.").json
    key = ""
    if t["type"] in ("bug", "feature"):
        key = jira("POST", "/rest/api/3/issue", json={"fields": {"project": {"key": "FB"}, "issuetype": {"name": "Bug" if t["type"] == "bug" else "Task"},
                   "summary": t["title"][:250], "priority": {"name": t["priority"]}, "description": adf(f"From {fb.get('email', '-')}\n\n{fb.get('message', '')}")}})["key"]
    values = build("sheets", "v4", credentials=Credentials(credentials.connection("google", "work")), cache_discovery=False).spreadsheets().values()
    values.append(spreadsheetId=SHEET_ID, range="Feedback!A:H", valueInputOption="USER_ENTERED", body={"values": [[
        str(date.today()), fb.get("source", ""), fb.get("email", ""), t["type"], t["sentiment"], t["priority"], fb.get("message", ""), key]]}).execute()
    return {"jira": key or None, **t}

FAQ

Common questions

Which sources can send feedback?
Any survey, form or support tool that can send a web request with the feedback text.
What counts as actionable?
Bugs and feature requests by default. You can add other types, such as documentation problems.
What columns does the sheet get?
Date, source, customer, type, sentiment, priority, the feedback text and the Jira key if one was created.
What permissions does it need?
Sheets write; Jira create issues. Nothing else in your accounts is used.
Does it need AI?
Yes. It uses ClickRuntime's built-in AI, so you don't need an OpenAI or Anthropic key. Every plan includes a monthly AI allowance.
How many runs does it use?
One run for each event the app sends.
Can I change how it works?
Yes. Describe the change to your AI assistant, for example a different schedule, channel or filter. It updates the automation, tests it and tells you what changed.

Set up “Log all feedback in a sheet and send actionable items to Jira” from your assistant

Copy the prompt above, or connect your assistant first. Free plan, no credit card.