Skip to content
FlowScript templates

Survey — Panel Response Funnel

A fieldwork funnel for one survey wave: sampled panellists narrowed to the usable responses, with every drop-off named. Typed FlowScript for survey instruments. Keywords: survey, instrument, construct, questionnaire, psychometrics.

Template previewFlowScript
SURVEY INSTRUMENT · WEBCommuter satisfaction — wave 7National travel panel, adults 18 and overCONSTRUCTService reliabilityα MODERATE3 itemsR1My train arrived within five minutes of the advertised time.likert-5R2I can plan around this service without building in extra time.likert-5R3Disruption is communicated to me before I reach the platform.likert-5CONSTRUCTPerceived valueα MODERATE3 itemsV1The fare is fair for the journey I get.likert-5V2I could not find a cheaper way to make this journey.likert-5V3I resent what I pay for this journey.likert-5RCONSTRUCTIntent to keep commuting by railα LOW — add items2 itemsI1I expect to make this journey by rail a year from now.likert-5I2I would recommend this route to someone starting the same commute.likert-5

Make it your own.

// A fieldwork funnel for one survey wave: sampled panellists narrowed
// to the usable responses, with every drop-off named. The instrument
// they were answering is declared alongside, so the response rate and
// the item map are read from the same document.

instrument wave7 {
  title: "Commuter satisfaction — wave 7"
  audience: "National travel panel, adults 18 and over"
  mode: "web"
  language: "en"
}

construct reliability {
  name: "Service reliability"
  definition: "Belief that the service arrives when it says it will"
  reference: "Adapted from the ORR passenger satisfaction battery"
}

construct value_for_money {
  name: "Perceived value"
  definition: "Judgement that the fare is proportionate to the journey received"
}

construct intent {
  name: "Intent to keep commuting by rail"
  definition: "Stated likelihood of using rail for the same journey in 12 months"
}

item r1 {
  text: "My train arrived within five minutes of the advertised time."
  construct: reliability
  scale: "likert-5"
}

item r2 {
  text: "I can plan around this service without building in extra time."
  construct: reliability
  scale: "likert-5"
}

item r3 {
  text: "Disruption is communicated to me before I reach the platform."
  construct: reliability
  scale: "likert-5"
}

item v1 {
  text: "The fare is fair for the journey I get."
  construct: value_for_money
  scale: "likert-5"
}

item v2 {
  text: "I could not find a cheaper way to make this journey."
  construct: value_for_money
  scale: "likert-5"
}

item v3 {
  text: "I resent what I pay for this journey."
  construct: value_for_money
  scale: "likert-5"
  reverse: true
}

item i1 {
  text: "I expect to make this journey by rail a year from now."
  construct: intent
  scale: "likert-5"
}

item i2 {
  text: "I would recommend this route to someone starting the same commute."
  construct: intent
  scale: "likert-5"
}

// ── Fieldwork. 24 000 sampled, 4 711 analysed, and every panellist
//    who left the funnel is attributed to a reason.
cohort sampled {
  n: 24000 source "Panel frame draw, 2026-02-03"
}

cohort invited {
  n: 21640
  from: sampled
  excluded: {
    quota_already_full: 1508
    invalid_contact_record: 852
  }
}

cohort started {
  n: 6427
  from: invited
  excluded: {
    no_response_after_three_reminders: 13894
    opted_out: 1319
  }
}

cohort completed {
  n: 4938
  from: started
  excluded: {
    screened_out: 908
    abandoned_mid_survey: 581
  }
}

cohort analysed {
  n: 4711
  from: completed
  excluded: {
    straightlined_every_grid: 146
    below_speeder_threshold: 81
  }
}

view items: item_map
view fieldwork: consort(sampled)