On a schedule
Get a daily count of responses per form
Each morning you see how many responses each form got yesterday, compared with last week.
- Runs
- On a schedule
- Apps
- Typeform
- AI
- Not needed
- Access
- forms:read, responses:read
Send this to your assistant
Create a ClickRuntime automation: every day at 8am, email me how many responses each of my Typeforms got yesterday, compared with the same day last week.
First time? Adding ClickRuntime to your assistant takes about two minutes.
Why use it
Why teams use this automation
Anyone running several Typeforms, such as a lead form, a feedback survey and an event registration, has no easy way to see which of them are working. Counts are buried under each form's own results tab. A marketing manager who just launched a campaign cannot tell on Tuesday morning whether Monday brought thirty submissions or three, and finds out too late to fix a broken embed.
Each morning, this lists your forms, counts the responses each received yesterday using start and end times, compares each count with the same day last week from stored numbers and emails you a table. A glance tells you which forms are busy, quiet or changing.
It is a good daily pulse for teams running campaigns, registrations or surveys. It takes under a minute to read with your coffee.
What you get out of it
See every form in one table
Instead of opening each form's results, you read one email. The yesterday column shows where attention went, and which forms are idle, without any clicking around. You also spot idle forms that should be archived.
Same-day-last-week comparison
Comparing Tuesday with last Tuesday removes weekday effects. A figure that looks low is put in context, so you know whether it is a genuine dip or a normal quiet Monday.
Campaign results arrive early
After an email blast or ad launch, the next morning's count shows whether the form is being found and completed. You can adjust the campaign on day two rather than after a week.
Broken forms get noticed
A form that drops to zero after being busy often has a technical problem, such as a changed embed. The table makes that sudden silence stand out the next morning.
A running log of volume
Each digest is a dated record of response counts. Looking back, you can see seasonal patterns and how each campaign performed over its first week. Campaign performance becomes easy to look back on later.
How it works
What happens, step by step
Every day, ClickRuntime goes through each of your Typeform forms.
It counts the responses each form received that day.
It compares each count with the same day last week.
You get one email with each form's count and how it changed.
Before it runs live
- Connect Typeform
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
- Run it at a different time, more or less often, or only on weekdays
- 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 Typeform steps into one automation
Under the hood
The code that runs this automation
from datetime import date, timedelta
from clickruntime import on_trigger, http, credentials, notify
def typeform(method, path, **kw):
r = http.request(method, f"https://api.typeform.com{path}",
headers={"Authorization": f"Bearer {credentials.secret('TYPEFORM_TOKEN')}"}, **kw)
r.raise_for_status()
return r.json() if r.content else None
def count(form_id, day):
nxt = day + timedelta(days=1)
return typeform("GET", f"/forms/{form_id}/responses", params={
"since": f"{day}T00:00:00Z", "until": f"{nxt}T00:00:00Z", "page_size": 1})["total_items"]
@on_trigger
def run(event):
yesterday = date.today() - timedelta(days=1)
lines = []
for form in typeform("GET", "/forms", params={"page_size": 200})["items"]:
now, before = count(form["id"], yesterday), count(form["id"], yesterday - timedelta(days=7))
lines.append(f"{form['title']}: {now} (same day last week: {before}, {now - before:+d})")
notify.email_me(f"Typeform responses for {yesterday:%a %b %d}", "\n".join(lines))
return {"forms": len(lines)}FAQ
Common questions
What does yesterday mean for the count?
Does it include partial responses?
Can I list only some of my forms?
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 a weekly CSV of your responses
Every Friday you get the week's responses as a CSV, so you have your own copy.
See how it worksGet warned when a form stops getting responses
If a form that normally gets responses goes quiet for a day, you hear about it so you can check it.
See how it worksGet a weekly summary of your survey answers
Each Monday you get the main themes, the overall mood and a few notable quotes from last week's responses.
See how it worksKeep exploring
Set up “Get a daily count of responses per form” from your assistant
Copy the prompt above, or connect your assistant first. Free plan, no credit card.