Frequently Asked Question
GTFS Data Requirements for eTransit Timetables
eTransit uses your GTFS data to generate digital timetables, maps, and trip planners. To ensure accurate and user-friendly outputs, your data must follow the requirements below.
✅ 1. Stop Times Must Be Sequential and Valid
- Every
trip
instop_times.txt
must have a logically increasingstop_sequence
. - Sequences must reflect the actual order of stops the vehicle visits.
- Do not reuse the same
stop_sequence
within a trip or skip numbers arbitrarily.
Why it matters: eTransit uses stop sequence to build a global stop order. If a trip has sequences out of order, the timetable may show stops in reverse or illogical order.
✅ 2. Stops Should Be Reused Consistently
- Use the same
stop_id
for the same physical stop location across all trips. - Avoid creating duplicate stop records for the same location under different IDs unless they truly represent different physical stops (e.g., different platforms).
Why it matters: eTransit builds a unified stop list per route. Duplicate stop IDs can result in broken timetables or mismatched data on maps and stop pages.
✅ 3. Timepoints Must Be Properly Flagged
- Use
timepoint = 1
for scheduled stops andtimepoint = 0
for interpolated times instop_times.txt
. - Include all stops (not just timepoints) for full display, but ensure timepoints are correctly marked for rider confidence.
Why it matters: Timepoints appear with emphasis in the timetable. Incorrect flags can confuse riders and misrepresent guaranteed service.
✅ 4. Headsigns Must Be Unique for Route + Direction + Stop Pattern
eTransit groups trips based on their route_id
, direction_id
, and trip_headsign
. Each combination must correspond to a consistent set of stops.
❌ Problem Example:
Route | Direction | Trip Stops | trip_headsign |
---|---|---|---|
Green | Inbound | A → B | Downtown |
Green | Inbound | C → B | Downtown |
These trips follow different paths but share the same headsign. This causes eTransit to incorrectly merge stops into one timetable.
✅ Recommended Fix:
- Downtown via A
- Downtown via C
- Downtown (North Branch)
- Downtown (Route A1)
Why it matters: Trips grouped under the same headsign are rendered into a single timetable column set. Reusing headsigns for different stop patterns leads to confusing or broken outputs.
✅ 5. Loop Routes Must Be Defined Carefully
- If a trip ends where it starts (e.g., A → B → C → A), ensure stop sequences clearly reflect the loop's progression.
- Avoid combining multiple loops in a single trip unless intentional.
- Use consistent logic for where a loop "ends" for rider visibility.
Why it matters: Loops without clearly defined sequences or ends can create misleading timetable and map outputs. eTransit supports loops — but needs correct sequences.
✅ 6. No Conflicting Stop Sequences Across Trips
- If two trips have the same set of stops but appear in conflicting sequences, this is considered invalid.
- All trips within a group (Route + Direction + Headsign) must follow the same general stop order.
Why it matters: Conflicting sequences cause the global stop order to break, producing misaligned trip columns and incorrect timetables.
✅ 7. Duplicate Stops in a Trip Are Allowed, But Must Be Logical
- A trip can stop at the same
stop_id
more than once (e.g., A → B → C → A). - Ensure these repeated stops have valid sequences and time progression.
Why it matters: eTransit handles repeated stops correctly if stop_sequence and time values are logical and increasing.
✅ 8. Use Clean and Consistent Stop Naming
- Use consistent capitalization, spacing, and abbreviations in
stop_name
fields. - Avoid unnecessary punctuation or inconsistent naming conventions.
Why it matters: Clean naming improves readability and searchability for riders in the web interface and printed materials.
✅ Optional (but Recommended) Enhancements
- Use
shape_dist_traveled
instop_times.txt
for better trip drawing. - Include
route_long_name
androute_desc
for detailed service pages. - Keep
calendar.txt
andcalendar_dates.txt
updated for accurate day-based filtering.