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.
| 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 — 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.
Adding flights to a trip
Section titled “Adding flights to a trip”Two paths:
When creating a flight
Section titled “When creating a flight”The flight form has a Trip dropdown. Pick an existing trip or create a new one inline.
When the flight already exists
Section titled “When the flight already exists”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).
What a trip page shows
Section titled “What a trip page shows”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.
Removing a flight from a trip
Section titled “Removing a flight from a trip”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.
Deleting a trip
Section titled “Deleting a trip”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.
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 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).
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”- 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