Every 5 minutes
Post new form responses in Slack
Each new response appears in your channel with every answer labelled by its question.
- Runs
- Every 5 minutes
- Apps
- Google Forms
- AI
- Not needed
- Access
- read (forms.responses.readonly, forms.body.readonly)
Send this to your assistant
Create a ClickRuntime automation: every 5 minutes, check my Event Signup form for new responses and post each one to #events in Slack with the question titles.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
A volunteer coordinator runs a sign-up form for a food bank, and a shift gets filled only if someone sees the response in time. The responses sit in the Responses tab of Google Forms, and the built-in email option sends a bare notice with no answers in it, so she has to open the form, find the new row and read it. Last weekend a driver cancelled at 7 pm and nobody saw it until Monday.
Every 5 minutes, ClickRuntime asks Google Forms for responses that arrived after the last one it saw, using a timestamp filter. It matches each answer to its question title, formats them as a readable message such as Name, Shift and Phone, and posts it to the Slack channel you choose.
Event organizers, support teams and recruiters use the same setup for booking requests, bug reports and job applications.
What you get out of it
The team sees answers, not just a ping
A message with the actual replies lets someone act without opening the form. A cancellation, an urgent complaint or a high-value request can be handled from the Slack message itself.
Faster replies to the people who wrote
People filling in a form expect a response. Posting new submissions to a channel the team already watches cuts the time before someone picks it up from hours to minutes during working hours.
Nothing is missed in a busy week
Checking a response sheet is easy to forget when ten other things need attention. A notification in a place the whole team looks makes a submission a shared responsibility instead of one person's chore.
Shared visibility, one conversation
When the response lands in a channel, colleagues can reply in the thread, claim it with an emoji or tag someone better placed to deal with it. That avoids two people answering the same request.
Every response arrives exactly once
The automation remembers the last timestamp it handled, so a response does not appear twice and none is skipped between runs. The channel stays a clean log of everything submitted.
How it works
What happens, step by step
Every five minutes, ClickRuntime checks your Google Form for responses submitted since the last check.
It matches each answer to the question it belongs to.
Each new response is posted to #events with every answer labelled by its question, like "Which session?: Workshop B". Responses already posted are never sent again.
Before it runs live
- Connect Google Forms
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 Google Forms steps into one automation
Under the hood
The code that runs this automation
from clickruntime import on_trigger, credentials, http, notify, state, report_fetched
FORM_ID = "1FAIpQLSdExampleFormId" # Event Signup
API = f"https://forms.googleapis.com/v1/forms/{FORM_ID}"
@on_trigger
def run(event):
headers = {"Authorization": f"Bearer {credentials.connection('google', 'work')}"}
since = state.get("since") or "2026-01-01T00:00:00Z"
responses = http.get(f"{API}/responses", headers=headers,
params={"filter": f"timestamp > {since}"}).json().get("responses", [])
report_fetched(len(responses))
if not responses:
return {"new": 0}
form = http.get(API, headers=headers).json()
titles = {i["questionItem"]["question"]["questionId"]: i["title"] for i in form["items"] if "questionItem" in i}
for r in sorted(responses, key=lambda r: r["lastSubmittedTime"]):
lines = [f"*{titles.get(q, q)}*: {', '.join(x.get('value', '') for x in a['textAnswers']['answers'])}"
for q, a in r.get("answers", {}).items() if "textAnswers" in a]
notify.slack("New Event Signup response\n" + "\n".join(lines), channel="#events")
state.set("since", max(r["lastSubmittedTime"] for r in responses))
return {"new": len(responses)}FAQ
Common questions
How quickly does a response show up in Slack?
Does it include file uploads and long answers?
Can I send responses from different forms to different channels?
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
Get alerted on low quiz scores
You hear when someone scores below your line, so you can follow up with them.
See how it worksGet a weekly summary of form feedback
Every Friday you get the main themes and overall mood from that week's feedback responses.
See how it worksSee new job listings as they're posted
Jobs that match your keywords show up in a Slack channel, each one only once.
See how it worksKeep exploring
Set up “Post new form responses in Slack” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.