Blog

2026-11-05

Blog

The first live answer hides the imported history

Thursday 11:06 the imported card reads 0. The 4,800 Delighted rows are still stored. The bare results URL switched to measured the moment one widget answer landed.

Wednesday, 4 November 2026, 16:40 UTC. Jules owns CX at Marlow, a 19-person freight-booking product. Survey product-nps, created that morning, version 1, no measured answers yet. Jules imports the Delighted CSV through the same path as the migration post: 4,800 valid rows, scores, comments, and the export's timestamps. The flash says imported 4800. The button under it is View imported results. It opens the results page with source=imported and version=0.

The board reads NPS 30, plus/minus 3, among imported history (not measured by UserVane), N=4800. It does not say still stabilizing, because 4,800 is past one hundred. The split is 2,400 promoters (9 or 10), 1,440 passives (7 or 8), and 960 detractors (0 through 6). NPS is 2,400 minus 960, over 4,800, which is 30. The passives sit in the denominator and do not get their own term. 16:48. Founder Slack: "History is in. NPS 30 on 4,800."

Thursday, 5 November 2026, 11:02 UTC. Casey, a dispatcher, saves a lane on /book. The widget asks. Score 2. Comment: "The new rate card hides the fuel surcharge until confirm." The row is measured by UserVane, channel in-product, survey version 1.

11:06. Jules opens results the way the Surveys list opens it: the survey's results URL, no query string. The headline is now "Not enough responses yet for a stable score among measured by UserVane (N=1, response rate 100%)." The lab says N=1, margin too wide to report (need 10). The chip says collecting. Casey's sentence is on the page. The Imported history card reads 0.

11:12. Jules opens Version, chooses "v0 Imported history", and clicks Apply. Source is still "Measured by UserVane only (default)". The board goes to N=0. Both cards read 0. Casey's sentence is gone.

11:18. Slack, drafted: "Import didn't stick. Imported history is 0, and v0 is empty. Re-uploading the CSV. No signal on the rate card yet."

The weak version, and what it costs by 11:41

The read that produced that message looks like this:

A card labeled Imported history that says 0 means the table is empty.

v0 empty means version 0 has no rows.

Re-upload. If the next flash says imported 0, the file failed twice.

Not enough responses means there is nothing to read, so the fuel-surcharge sentence can wait.

The read that keeps 11:18 honest looks like this:

Wednesday 16:40 had no measured row, so the bare results URL scored imported history. Thursday 11:02 stored one measured row. Thursday 11:06 the same URL scores measured only. The card counts rows inside that filter. Zero is the filter.

v0 with Source left on Measured asks for measured rows at version 0. The import is stored as source imported and version 0, so it fails the measured clause. Casey's 2 is version 1, so it fails version 0. Empty is that intersection.

The rows are the other Source option, Imported history only (opt-in). That is the page View imported results already opened. It is still NPS 30, plus/minus 3, N=4800.

Re-uploading the same file is idempotent. A flash of imported 0 and re-import duplicates (idempotent) 4800 means the first import held.

Casey's 2 is the live signal. Source Both (opt-in, labeled) scores the 4,800 plus measured rows on version 1: 2,400 promoters and 961 detractors, N=4801. That is 29.97, which rounds to 30, plus/minus 3. The fuel-surcharge sentence is the newest row in the feed. It is not inside that 30.

The weak version costs 11:41. The second upload reports imported 0. Jules tells the founder the history is gone. Nobody opens a ticket on the fuel surcharge, because the board they were willing to quote was either empty or still 30.

The bare URL flips at the first measured row

With no source on the query string, results pick imported history when the survey has zero measured rows. The moment any measured row exists, that same URL picks Measured by UserVane only. The menu labels that option as the default. This is the results page on every plan, not a Scale analytics control.

Measured means the row's source is not imported, and its survey version is the one selected. A new survey starts at version 1. The import writes version 0 and source imported, and those rows do not use the monthly response cap. Casey's answer does. On the measured view the imported count is 0 because those rows fail the filter. Nothing was deleted.

The version menu still lists v0 Imported history once an imported row exists. Choosing it does not change Source. Apply sends both controls. Version 0 plus Measured matches nothing, so the headline becomes not enough responses among measured by UserVane, N=0, and the feed is empty.

Imported history only does not filter on version. The 4,800 score whether the version menu says v0 or v1. The import screen sets both source=imported and version=0 so the menu and the rows agree. Bookmark that URL. The bare results link will not return to it after Casey answers. The migration guide is the cutover. The Delighted alternative page is the same door, if the CSV is still the thing you are moving.

Both still rounds to Wednesday's 30

Source Both (opt-in, labeled) scores every imported row plus measured rows on the selected live version. The subtitle says measured plus imported, opt-in, labeled. It does not pool older measured versions. A reword is still its own series, which is the rewording post. Both on version 1 is the Delighted file plus Casey, not the Delighted file plus every later wording.

The blend is one integer. 2,400 minus 961, over 4,801, rounds to 30, the same 30 as Wednesday, plus/minus 3. Casey's sentence sits at the top of the feed, newest first, and the number above it does not move. Check the two samples separately on the sample size calculator before either one becomes the climate: N=4800 with 2,400 promoters and 960 detractors, and N=1 with 0 promoters and 1 detractor. The calculator wants the people inside the view you mean to quote. N=1 is under ten, so the measured board does not print a score. The thin-sample post is that floor.

The 100% next to N=1 is this one answer over this one answer plus zero stored dismissals. It is not a week's delivery rate. The response-rate post is what belongs in the denominator once more than one person has seen the question.

Channel can hide the file a second time. Link only and Email only keep measured rows, so an imported row drops out even on Both. In-product only keeps the import. A 0 on Link only is the channel filter, not a failed upload.

The export leads with the rows the board just hid

Export responses does not use this Source menu. It walks the project oldest first and stops at 10,000, which is the export post. Marlow is under that cap, so the file starts with the 4,800 Delighted rows and then Casey. Someone reading Thursday's board and someone reading the file will disagree about whether the import exists. Both opened a surface the product actually serves.

The imported 30 does not prove the rate card, and it does not prove UserVane measured those 4,800 people. Delighted measured them. The label on that board says imported history. That is the limit.

Bottom line: at 11:06 the bare results URL is Casey's 2 and an imported count of 0. The 4,800 rows are Source, Imported history only. v0 with Measured left selected is an empty intersection. Do not re-upload a file whose second flash says 4,800 duplicates, and do not tell the founder the rate card held because Both still rounds to 30.