Trips
A trip is a higher-level grouping of related flights, cruise voyages, and bookings. Where a tag is a free-form label, a trip has its own page with its own statistics — and it can span both flights and cruises in a single journey.
| Concept | Example | Best for |
|---|---|---|
| Tag | business, family, 2026 | Quick 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”.
Creating a trip
Section titled “Creating a trip”Trips → Add Trip. Fields:
- Name — what you’ll see in the trip list
- Date range (optional) — start and end dates
- Status — planned, in progress, or completed (defaults to completed)
- Category (optional) — vacation, business, weekend, family, or other
- Colour — used to tint the trip’s map arcs and timeline dots. Auto-assigned from a palette if you don’t pick one
- Icon (optional) — an emoji to brand the trip
- Description (optional) — free-form notes (the trip page also has a separate markdown notes field)
- Cover image (optional) — uploaded photo for the trip header
- Companions (optional) — who you travelled with
- Tags (optional) — free-form labels on the trip
Save. The trip is empty until you add flights or cruises to it.
Adding flights and cruises to a trip
Section titled “Adding flights and cruises to a trip”Flights
Section titled “Flights”The flight form — both when creating a flight and when editing an existing one — has a Trip dropdown. Pick an existing trip or create a new one inline. The flight joins the trip and its statistics recompute.
Cruises
Section titled “Cruises”A cruise joins a trip the same way, via the Trip selector on the cruise form. Cruise imports can also assign the imported cruise (and any fly-and-cruise flights) to a trip right in the import preview.
A flight or cruise belongs 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).
Automatic trip detection
Section titled “Automatic trip detection”TravStats can propose trips from your existing flights. Trips → Detect trips runs a set of heuristics — flights sharing a booking reference, out-and-back loops from your home airport, and chains of connecting flights within a short window — and suggests clusters of three or more flights as candidate trips. It’s a dry run by default: you review, rename, and choose which proposals to keep before anything is created.
Detection works on flights only, and it deliberately leaves simple two-leg out-and-back trips alone — a flight is a first-class record without needing a trip wrapped around it.
What a trip page shows
Section titled “What a trip page shows”Each trip has its own dashboard, organised into tabs:
- Overview — summary tiles (flights, cruises, countries, companions, total booked cost, tags), an optional AI-generated trip summary, and your notes
- Timeline — a merged, chronological view of every flight, cruise, stop, and journal entry, colour-dotted by domain
- Map — a deck.gl / MapLibre map with flight arcs and cruise paths, airports and port stops, and a globe / flat projection toggle
- Gallery — photos you’ve uploaded for the trip
- Logistics — tables of the trip’s flights, cruises, and bookings, with a total booked cost
Statistics are scoped to this trip only; cruise tiles appear when the cruise domain is enabled. Trips also appear on the main dashboard as a separate strip below the “recent flights” list — Recent trips, sorted by their end date.
Removing a flight from a trip
Section titled “Removing a flight from a trip”Flight detail → Trip dropdown → set to “(none)” — or use the unlink icon next to the flight on the trip page. The flight detaches from the trip; it stays in your overall flight history, just no longer associated with that journey. Cruises unlink the same way.
Deleting a trip
Section titled “Deleting a trip”Trip detail → … → Delete trip. Deleting a trip keeps your flights and cruises — they’re simply unlinked and stay in your overall history, and any bookings are unlinked too. Only the trip’s own content — its photos, stops, and journal entries — is removed with it. To undo an entire import, delete the imported flights and cruises separately afterwards.
Trips vs tags — when to use which
Section titled “Trips vs tags — when to use which”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.
Bookings
Section titled “Bookings”A booking groups one or more flights and cruises under a shared reservation — its PNR (booking reference), price, and currency. A booking can be attached to a trip, in which case its cost rolls up into the trip’s totals.
Bookings surface in the trip’s Logistics tab, which lists each booking alongside the flights and cruises it covers and sums a “total booked” figure for the whole journey. This is how the trip page knows what a journey cost.
Trips on the timeline
Section titled “Trips on the timeline”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.
Programmatic trip management via API
Section titled “Programmatic trip management via API”Settings → API Tokens mint a write-scoped PAT, then:
# List tripscurl -fsS \ -H "Authorization: Bearer $TOKEN" \ https://travstats.example.com/api/v1/trips
# Create a tripcurl -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/tripsFull endpoint reference: REST API.
Limitations
Section titled “Limitations”- A flight or cruise belongs to one trip at a time — use tags for cross-cutting categorisation
- 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)
- The AI trip summary needs a configured local LLM (Ollama) — without one, the summarise button returns an error
- Automatic detection works on flights only; cruises aren’t auto-detected and are added to trips manually