The survey records how the people who replied travelled to work during one stated period. Each leg is one direction by one mode, with its one-way distance and the number of days it was used. Returns are entered as their own legs, never assumed. A shared car is counted once. Invitation and reply totals sit on one row only. People who did not reply stay missing; nothing is scaled up.

Download the blank survey. Estimate home-working hours with their own method. Keep business journeys on the mileage log. Return to the footprint method.

What the commuting survey can establish

The replies show reported commuting legs for a stated period from the people who answered. They do not show what anyone else did, and they are not a total for all staff. Missing replies stay missing and no extrapolation is applied.

The file is a plain CSV with no formulas and no emissions column.

You are responsible for how the survey is run and how the replies are stored. This template does not make replies anonymous and is not a live form. Routes, start points, team names and small groups can identify a person, even without names. The identifiability_status field records your own assessment: not_assessed, possibly_identifiable or personal_data. The staff sustainability survey explains why it does not ask for commuting distances. Use this separate template when you need them.

Download the survey

Save a copy of the blank file and type into the copy.

Columns and record types

Columns: record_type, survey_id, period_start, period_end, invited_count, reply_count, missing_count, extrapolation, identifiability_status, response_id, respondent_serial, office_days_in_period, leg_id, direction, return_route, mode, distance_km, distance_basis, days_used_in_period, shared_vehicle_code, leg_total, state, state_note.

One file holds three kinds of row:

  • cohort: one row with the survey period, invited_count, reply_count, missing_count, extrapolation and identifiability_status.
  • reply: one row per reply with response_id, respondent_serial and office_days_in_period.
  • leg: one row per leg with the reply’s response_id and the leg fields.

Invitation and reply totals appear only on the cohort row. They are never repeated on reply or leg rows, so they cannot be added up across legs. reply_count counts unique respondents. A second submission from the same respondent_serial is duplicate_reply_not_counted. missing_count is invited_count minus reply_count.

Legs, returns and shared cars

Each leg row is a reported daily pattern: one direction of travel by one mode, its one-way distance_km, and days_used_in_period. leg_total is distance_km × days_used_in_period, typed by you.

  • direction is outward or return. Enter a return as its own leg. If someone did not report a return, the reply is return_not_reported and no return is filled in.
  • If the return used a different route or mode, give it its own leg with return_route set to different and its own days.
  • days_used_in_period cannot be more than office_days_in_period. If it is, the leg is days_exceed_office_days.
  • A reply with zero office days has no legs and is reply_no_commute.
  • distance_basis is vehicle_km for a car, per_person_km where each person’s distance is wanted, or passenger_km for a train or bus. The three are never added together.

A shared car is counted once, as vehicle-kilometres on the driver’s legs. Passengers give the same shared_vehicle_code. Before their legs are marked shared_duplicate_not_counted, check that the period, days, direction, distance and number of trips agree with the driver’s. If they disagree, every leg with that code is shared_unresolved and none is counted until it is sorted out.

Other leg states are counted, missing_distance and invalid_distance.

Worked example: ten replies from forty invitations

Northgate Services is fictional. The survey covered 2 to 27 March 2026. Forty people were invited and ten replied, so 30 are missing and extrapolation is not_applied. The excerpt shows seven of the ten replies, plus one duplicate submission. Totals below cover only the rows shown.

Reply Reported travel Counted
R01 Drove 18 km each way on 12 days, car code SV1 216 + 216 vehicle-km
R02 Passenger in SV1, same days and distance Not counted: shared duplicate
R03 Rail 25 km out on 8 days; rail back on 6 days; bus 12 km back by a different route on 2 days 200 + 150 rail passenger-km; 24 bus passenger-km
R04 No office days in the period No legs
R05 Drove 10 km out on 10 days; return not reported 100 vehicle-km; no return assumed
R06 and R07 Both report car SV2, one says 14 km and the other 16 km Not counted: unresolved
R08 Second submission from R03's respondent Not counted: duplicate reply

Totals for the rows shown: car 216 + 216 + 100 = 532 vehicle-km; rail 200 + 150 = 350 passenger-km; bus 24 passenger-km. These describe seven replies. They are not an estimate for 40 people.

Optional conversion after the legs are recorded

If you want emissions, work on a separate sheet. Use the government Business travel- land factors for the matching distance basis, from the factor set for the year of the survey period. The survey file itself keeps no emissions column.

The GHG Protocol commuting formula doubles a one-way distance for a round trip. This template records each direction as its own leg instead, so do not double the totals again. Unreported returns and missing replies are not filled in.

Limits and sources

The survey does not give a whole-workforce figure, set your reporting boundary or make replies anonymous. Hours worked at home have their own method. For people travelling to a single event, use the event attendee travel survey.

Sources: