Skip to content

Weekly

Get a weekly NPS read-out by survey

Each Monday you get last week's response count and average score for every survey.

Runs
Weekly
Apps
Qualtrics
AI
Not needed
Access
API permission

Send this to your assistant

Create a ClickRuntime automation: every Monday at 9am, email me last week's response count and average NPS for each of my active Qualtrics surveys.

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 survey owner in operations or customer success is asked every Monday how the surveys did last week. Answering means logging into Qualtrics, exporting responses for a date range, pasting them into a spreadsheet and working out the count and the average score for each survey. It takes half an hour and is often skipped when the week is busy.

Each week, ClickRuntime exports the last week's responses from Qualtrics, calculates the number of responses and the average score for each survey, and emails you a compact table. The date range is the same every time, so each week lines up with the previous one and trends are obvious at a glance.

People who run several surveys at once, such as onboarding, support and renewal, get the most from seeing them all in one message.

What you get out of it

  • Monday questions are answered before they are asked

    The numbers arrive in your inbox ready to forward. When a manager asks how the surveys are doing, the answer is already written, with counts and averages for each survey.

  • Response rates show survey fatigue

    A count that drops from 120 to 40 responses in a few weeks tells you something changed, such as a broken link or an email landing in spam. Weekly counts make that visible far sooner than a quarterly review.

  • Score movement is easy to compare

    Averages for each survey are listed in the same layout every week. A satisfaction score falling from 4.4 to 4.0 is noticed by eye, without building a chart or remembering last week's number.

  • The export step is gone

    Date-range exports are fiddly: wrong ranges, missing columns, a forgotten timezone. Automating the pull gives consistent windows week after week, so differences in the numbers reflect customers, not mistakes in how the data was exported.

  • Stakeholders get a standing update

    Forwarding the same email to leadership each week builds a habit of looking at customer feedback. That makes survey work visible, which helps justify the time spent running the surveys in the first place.

How it works

What happens, step by step

  1. Every Monday, ClickRuntime exports last week's responses from each of your Qualtrics surveys.

  2. It counts the responses and works out the NPS for each survey.

  3. You get one email listing every survey with its response count and score.

Before it runs live

  • Connect Qualtrics

What you get

RunsWeekly
Get a weekly NPS read-out by surveytoday, 9:00Succeeded
Email · Qualtrics: last weekRelationship NPS: 84 responses, NPS 32 Store visit feedback: 211 responses, NPS 51

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

  • 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 Qualtrics 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.
weekly_response_summary.pyexample
import io, json, time, zipfile
from datetime import datetime, timedelta, timezone
from clickruntime import on_trigger, credentials, http, notify

DATACENTER = "iad1"
NPS_QUESTION = "QID1"

def qx(method, path, **kw):
    resp = http.request(method, f"https://{DATACENTER}.qualtrics.com/API/v3/{path}",
                        headers={"X-API-TOKEN": credentials.secret("QUALTRICS_API_TOKEN")}, **kw)
    resp.raise_for_status()
    return resp

def export(survey_id, since):
    job = qx("POST", f"surveys/{survey_id}/export-responses",
             json={"format": "json", "compress": True, "startDate": since}).json()["result"]
    while (prog := qx("GET", f"surveys/{survey_id}/export-responses/{job['progressId']}").json()["result"])["status"] != "complete":
        time.sleep(2)
    zf = zipfile.ZipFile(io.BytesIO(qx("GET", f"surveys/{survey_id}/export-responses/{prog['fileId']}/file").content))
    return json.loads(zf.read(zf.namelist()[0]))["responses"]

@on_trigger
def run(event):
    since = (datetime.now(timezone.utc) - timedelta(days=7)).strftime("%Y-%m-%dT%H:%M:%SZ")
    surveys = [s for s in qx("GET", "surveys").json()["result"]["elements"] if s["isActive"]]
    lines = []
    for s in surveys:
        scores = [int(r["values"][NPS_QUESTION]) for r in export(s["id"], since) if NPS_QUESTION in r["values"]]
        nps = round(100 * (sum(x >= 9 for x in scores) - sum(x <= 6 for x in scores)) / len(scores)) if scores else None
        lines.append(f"{s['name']}: {len(scores)} responses, NPS {nps if nps is not None else '-'}")
    notify.email_me("Qualtrics: last week", "\n".join(lines))
    return {"surveys": len(lines)}

FAQ

Common questions

Which date range does the summary use?
It covers the previous seven days, so an email on Monday describes the week before. Using a fixed window means consecutive summaries do not overlap or leave gaps, and the counts from different weeks can be compared directly.
What does the average score refer to?
It is the mean of a numeric question you pick in each survey, such as satisfaction or NPS. Surveys without a numeric question get a response count only. Text answers are not averaged because there is nothing to average.
Can I get the summary for only some of my surveys?
Yes. Qualtrics identifies each survey by an ID, and the summary can be limited to the ones you list. This is useful when old or test surveys still exist in your account and would otherwise add empty lines to the email.
What permissions does it need?
API permission. Nothing else in your accounts is used.
Does it need AI?
No. It runs without AI, so it doesn't use your plan's AI allowance.
How many runs does it use?
One run each time it runs (weekly). Checks that find nothing to do and stop right away aren't counted.
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 “Get a weekly NPS read-out by survey” from your assistant

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