Survey Score Over Time

Watch your NPS move, and see which pull requests landed while it was moving.

Usero charts your survey score by week, compares the period against the one before it, and draws the AI-authored pull requests you merged as markers on the same line.

Most survey tools give you one all-time number. Fix the thing everyone complained about and the number barely twitches, because it is still carrying every response you collected in your worst month.

A score with no time axis cannot reward you for improving. That is the quiet reason NPS programmes die: a team runs the survey, gets a 12, spends a quarter fixing the top three complaints, runs it again, and reads 14. The 14 is an average over everything, so the good month is buried under the bad one and nobody can prove the work mattered. The tools that do chart the score stop there. You get a line that went up and no record of what you shipped, so the conversation in the review meeting is still guesswork: someone remembers a release around then, someone else thinks it was the pricing change. The evidence linking the complaint, the fix and the recovery lives in three different products and never gets joined up.

How it works

Survey Score Over Time in Usero.

Disclosure: I build Usero, so weigh that. The responses tab of any NPS, CSAT or CES survey carries a score-over-time panel. Pick 7 days, 30 days, 90 days or all history, and the chart buckets by day, week or month to suit the span. Under it sits one sentence in plain English: "Up 113 points to 13, in fair territory, from -100 in the period before." The score also carries a band word, great, good, fair or poor, whose top threshold is the same benchmark the survey template already quoted, so a founder reading their first NPS knows whether to be pleased. Then the part no survey tool can do: survey answers in Usero are feedback items with source "survey", they cluster with your widget reports and forwarded emails, and a clustered item can become an AI-authored GitHub pull request. When one of those merges, it is drawn on the trend line as a marker, and a "Shipped in this window" list sits underneath naming every pull request that landed inside the range. You review and merge every PR yourself. Nothing auto-merges.

Four ranges, and the bucket follows the range

A week is drawn by day, a month or a quarter by week, all history by month. Empty buckets keep their place on the axis with no point drawn on them, because dropping a quiet week or plotting a zero there both make the chart lie about what happened.

A sentence, not just a shape

Every chart carries one line of prose saying what moved and where the score sits. "Holding steady at 42." "Up 8 points to 31, in good territory, from 23 in the period before." You can read it without knowing how NPS is calculated.

It refuses to quote a delta it cannot stand behind

A period needs at least 3 scoreable responses on each side before Usero will report a change. Below that the panel says "No comparison yet" and tells you how many responses the earlier period actually has. A swing computed from two answers is one person having a bad Tuesday.

The pull requests are on the chart

Merged AI-authored PRs appear as markers at the week they landed, with a hover listing their titles and links out to GitHub. The chart answers the question a score alone never does: what did you do between these two numbers?

The honest objection

A trend line is table stakes. Every survey tool has one.

The good ones do, and Sleekplan in particular opens its NPS page on the chart rather than hiding it behind an analytics upgrade. We were behind on this and copied them. The part that is ours is what sits on the line. Their detractor comment ends in a list on an analytics page; ours is already a feedback item that clusters and can open a pull request, so the merges show up on the same axis as the score. Be aware of the current limits too: the trend lives on one form’s responses tab, so two surveys mean two charts and no combined number, and there is no CSV export of the series yet.

FAQ

Quick answers about survey score over time.

What ranges can I chart a survey score over?

7 days, 30 days, 90 days, or all history, with 30 days as the default. The bucket size follows the span: a 7 day range is drawn by day, 30 and 90 days by week, and anything longer by month. Buckets that collected nothing stay on the axis with a gap in the line rather than being dropped or plotted as zero.

How is the change against the previous period calculated?

Usero scores the selected window, scores the window of equal length immediately before it, and reports the difference. Both windows need at least 3 scoreable responses. If either falls short, the panel shows "No comparison yet" along with the response counts, instead of quoting a number that one extra answer would flip.

What do the markers on the line mean?

Each marker is an AI-authored pull request that was merged inside the charted range. Hovering one lists the PR titles for that bucket with their merge dates and links to GitHub, and the "Shipped in this window" list under the chart repeats all of them in order. They come from the same GitHub connection that opens the PRs in the first place.

What does the band word next to the score mean?

It is the qualitative reading of the number: great, good, fair or poor. The thresholds match the benchmark each survey template already quotes, so the top band starts at 50 for NPS, 80% for CSAT, and 5.5 for CES. It exists because nobody running their first NPS knows whether 31 is a good result.

Does this work for CSAT and CES as well as NPS?

Yes. All three scored metrics use the same panel, with the axis and formatting adjusted per metric: NPS on -100 to +100, CSAT as a percentage, CES to one decimal on a 1 to 7 scale. Product/Market Fit and the open-question template collect answers without a single headline score, so they show the response counts and no trend line.

Turn that feedback into a pull request.

Free tier. No credit card. Two-minute install. The AI opens the PR, you merge it.

Get started free