Skip to content

Trips

A trip is a higher-level grouping of related flights, bookings, and (in v2) cruise voyages. Where a tag is a free-form label, a trip has its own page with its own statistics.

ConceptExampleBest for
Tagbusiness, family, 2026Quick filters across years
Trip”Honeymoon 2024”, “Q3 client visits”One specific journey with start, end, story

You can absolutely use just tags and never make a trip; many users do. Trips earn their keep when you want to remember a particular journey as a unit — not “all my business flights” but “that one work trip to Japan in March”.

Trips → Add Trip. Fields:

  • Name — what you’ll see in the trip list
  • Date range — start and end. Defaults to “today through next week”; adjust as needed
  • Description (optional) — free-form notes
  • Cover image (optional) — uploaded photo to brand the trip page
  • Tags (optional) — automatically applied to every flight added to this trip

Save. The trip is empty until you add flights to it.

Two paths:

The flight form has a Trip dropdown. Pick an existing trip or create a new one inline.

Flight detail → Add to trip → pick from dropdown. The flight joins the trip; the trip’s statistics recompute.

You can add the same flight to only one trip at a time. Moving between trips is fine; assigning to two simultaneously is not supported (use tags for cross-cutting categorisation).

Each trip has its own dashboard:

  • Map of all flights and (eventually) cruise voyages on the trip
  • Timeline showing each leg in chronological order
  • Statistics scoped to this trip only — total distance, flight time, countries, top airlines
  • Photo gallery if you’ve added a cover image and uploaded photos via the trip detail page
  • Notes for free-form journaling

Trips appear on the main dashboard as a separate strip below the “recent flights” list — Recent trips, sorted by their end date.

Flight detail → Trip dropdown → set to “(none)”. The flight detaches from the trip; it stays in your overall flight history, just no longer associated with that journey.

Trip detail → … → Delete trip. Choices:

  • Keep flights — the trip is removed but its flights stay in your overall history. Default.
  • Delete flights too — cascades the delete. Useful when you imported a trip’s flights and want to undo the entire import in one shot.

The destruction is logged in the audit log either way.

The pragmatic rules:

Use a tag when:

  • You want to slice across years (“all family flights”)
  • You want to combine multiple criteria (“business + premium-cabin”)
  • You want a label that applies to non-trip-related categorisation (“emergency”, “milestone-100k”)

Use a trip when:

  • The flights belong to one specific journey with a name
  • You want a dedicated dashboard for that journey
  • You’re going to share the trip page with someone (e.g. a family member who also flew the same itinerary)
  • You want photos and notes alongside the flights

You can use both at once: tag a flight family and assign it to the “Vacation Greece 2024” trip. The tag covers your “all family flights ever” view; the trip covers the one-journey-as-a-unit view.

A booking is a parser-source record. When you import a flight from an email, the original email blob (anonymised — names, PNRs stripped after the parse confirms) is kept as a Booking row linked to the flight. This is what powers the “re-parse with updated template” workflow.

Bookings live under their parent trip if the email contained a trip-spanning itinerary. Trip detail → Bookings tab lists them with a link back to the original flight rows they produced.

For most users this is invisible — you import an email, you get flight rows, the underlying booking is plumbing. It surfaces when you want to re-parse an old import (e.g. after recording a new user template that handles the carrier better than Ollama did).

The dashboard’s Trips map mode (different from the Trips page — see Maps) animates each trip as one continuous flight path through time. Useful for showing off a year of travel without having to manually arrange every flight.

Settings → API Tokens mint a write-scoped PAT, then:

Terminal window
# List trips
curl -fsS \
-H "Authorization: Bearer $TOKEN" \
https://travstats.example.com/api/v1/trips
# Create a trip
curl -fsS -X POST \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{"name":"Honeymoon 2024","startDate":"2024-09-15","endDate":"2024-09-30"}' \
https://travstats.example.com/api/v1/trips

Full endpoint reference: REST API.

  • Cruises will integrate with trips in v2 — same model, voyages and flights both members of the same trip
  • No cross-user trip sharing yet (sharing your trip page with a family member who has their own TravStats user requires re-creating the trip on their side; on the roadmap)
  • No “automatic trip detection” — the system doesn’t infer a trip from a date range with multiple flights. You name and group each trip yourself