The moment it happens
Turn complaints into Trello cards and share praise in Slack
Every form response is read for tone: complaints become Trello cards to act on, and praise is shared with the team in Slack.
- Runs
- The moment it happens
- Apps
- Slack, Trello
- AI
- Yes, uses the built-in AI allowance
- Access
- Trello read+write; Slack chat:write
Send this to your assistant
Create a ClickRuntime automation: give me a trigger link for my feedback form. Classify each response as positive or negative, create a Trello card in my Feedback list for negative ones and post positive ones to #wins.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A software company collects feedback through a form on its website. Responses arrive in an inbox that a product manager reads once a week. Complaints wait days before anyone acts on them, and the kind words customers leave never reach the engineers and support staff who earned them.
With this automation, each response is sorted the moment it arrives. Problems turn into Trello cards in the list your team already works from, and positive notes go straight to a Slack channel where the whole team sees them.
What you get out of it
Complaints become work right away
A negative response is a card in your Feedback list within seconds, with the customer's words attached. It can be assigned and tracked like any other task, so nothing waits for the weekly review.
Praise reaches the people who earned it
Positive notes appear in #wins where support, product and engineering can all see them. That kind of feedback is good for morale and easy to lose in an inbox.
Tone is read, not guessed from keywords
AI reads the whole response, so 'not bad at all' is seen as positive and polite but frustrated messages are seen as complaints. Simple word lists get these wrong.
Works with the form you already have
Any form tool that can send responses to a link can be used. You keep your form, questions and branding as they are.
How it works
What happens, step by step
When someone submits your feedback form, the response is sent straight to ClickRuntime.
AI reads the response and decides whether it is positive or negative, and writes a short summary.
Negative responses become a card in the Feedback list on your Trello board.
Positive responses are posted to your #wins channel in Slack.
Before it runs live
- Connect Slack, then invite the app to the channel (type /invite @ClickRuntime there)
- Connect Trello
- 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
- Change what the AI looks for, or how it writes the result
- Add another app, for example also send it to Google Sheets
- Combine it with other Slack and Trello steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_event, credentials, http, ai, notify, log
FEEDBACK_LIST_ID = "your-trello-list-id"
@on_event
def handle(event):
data = event.json or {}
text = str(data.get("feedback") or data.get("message") or "")[:2000]
if not text.strip():
return {"skipped": True}
try:
res = ai.generate(f"Customer feedback:\n{text}", max_output_tokens=60,
json_schema={"type": "object", "properties": {"sentiment": {"enum": ["positive", "negative"]},
"summary": {"type": "string"}}, "required": ["sentiment", "summary"]}).json
except ai.AIError as e:
log.warning("AI unavailable, filing as card", {"code": e.code})
res = {"sentiment": "negative", "summary": text[:80]}
if res["sentiment"] == "positive":
notify.slack(f"New praise: \"{text[:300]}\"", channel="#wins")
else:
http.post("https://api.trello.com/1/cards", params={
"key": credentials.secret("TRELLO_KEY"), "token": credentials.secret("TRELLO_TOKEN"),
"idList": FEEDBACK_LIST_ID, "name": res["summary"][:100], "desc": f"{text}\n\nFrom: {data.get('email', 'unknown')}"})
return {"sentiment": res["sentiment"]}FAQ
Common questions
What happens to neutral or mixed responses?
Which form tools does it work with?
What goes on the Trello card?
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
Start client onboarding in Trello when a contract is signed
When a contract is signed, the client gets a Trello onboarding card with a checklist and the team hears about it in Slack.
See how it worksTurn support emails into Trello cards and flag urgent ones in Slack
Each new support email becomes a Trello card labelled by priority, and urgent ones are posted to #support straight away.
See how it worksPost a daily Trello deadline digest to Slack
Each weekday morning your team sees what is overdue, what is due today and what moved yesterday, without opening the board.
See how it worksKeep exploring
Set up “Turn complaints into Trello cards and share praise in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.