Importing Data (CSV)
How to bulk-import historical flights, ledger entries, and logbook data from ForeFlight, Garmin Pilot, or spreadsheets.
Overview
5-by-5 supports CSV bulk imports for three things:
- Historical flight logs — from ForeFlight, Garmin Pilot, or 5-by-5’s own native template
- Ledger entries — opening balances, charges, payments, and adjustments
- (Coming) Maintenance items and currency events
This page covers each import pathway, the format expected, and the most common pitfalls.
Importing Historical Flights
Most pilots have years of flight data sitting in another logbook app or spreadsheet. 5-by-5 imports from three formats automatically — paste in any of them and 5-by-5 detects which one you’ve got.
Where to Import
On mobile: Settings > Import Historical Flights (CSV) (Owners and Admins only).
On the web dashboard: Flights page > Import button at the top right of the Flight Log section.
Supported Formats
ForeFlight Logbook Export — the CSV you get from the Logbook > Export menu in ForeFlight Mobile. 5-by-5 detects the “ForeFlight Logbook Import” header marker and the “Flights Table” section automatically.
Garmin Pilot Logbook Export — same idea, from Garmin Pilot’s logbook export feature. Detected by the distinctive column naming (e.g., Aircraft ID with a space).
Native 5-by-5 template — a clean, minimal template designed for spreadsheet-based imports. Download the template from the same Import dialog.
Native Template Columns
The downloadable Excel template is pre-populated with these columns. Required columns are marked with * in the template header; optional columns can be left blank or omitted from your spreadsheet.
| Column | Required | Notes |
|---|---|---|
| Date | Yes | YYYY-MM-DD or MM/DD/YYYY format |
| Pilot | Yes | Member name as it appears in your group. The template includes your group’s current pilots as a dropdown to prevent typos. Unrecognised names create a placeholder member that can be claimed later — useful for ingesting flights from a pilot who hasn’t signed up yet. |
| Tach Out (or Hobbs Out / Airswitch Out) | Yes | Decimal hours (e.g., 1247.5). The header label adapts to your group’s Time Tracking setting under Settings → Aircraft. |
| Tach In (or Hobbs In / Airswitch In) | Yes | Decimal hours. Must be greater than the Out value — equal values are rejected with a “Tach In must be greater than Tach Out” error. |
| Departure | No | Airport identifier (e.g., KRNT) |
| Arrival | No | Airport identifier |
| Day Landings | No | Integer count for currency tracking |
| Night Landings | No | Integer count for currency tracking |
| Instrument Approaches | No | Integer count |
| Holds | No | Integer count |
| Fuel Added | No | Gallons |
| Fuel Price | No | Dollars per gallon |
| Oil Added | No | Quarts |
| Maintenance Flight (Y/N) | No | Y flags the flight as a group-paid expense rather than a personal charge |
| Comments | No | Free text shown on the flight detail |
About the route: Departure and Arrival are stored as separate columns on import and joined into the Route column on the flight log (e.g., Departure KRNT + Arrival KORS displays as KRNT-KORS). For multi-leg flights, log each leg as its own row — that gives you the cleanest FlightAware match downstream.
ForeFlight and Garmin Pilot exports use their own column conventions; you don’t need to rename anything before importing — 5-by-5 detects the format and adapts.
Aircraft Filter (ForeFlight + Garmin Pilot only)
ForeFlight and Garmin Pilot logbooks typically contain every aircraft you’ve ever flown — student trainers, instructional rentals, friends’ airplanes, the works. 5-by-5 filters those imports to only rows whose aircraft tail matches your group’s aircraft (set under Settings → Aircraft).
A few practical notes:
- Verify the aircraft tail before importing. A typo there means zero rows match and the import looks empty.
- Matching is case-insensitive and tolerant of a missing
Nprefix.N5931S,n5931s, and5931Sare all treated as the same aircraft. - If you’ve owned more than one aircraft over the years, only rows matching your group’s current tail import. To bring in flights from a previous airplane, you’d need a separate group set up under that tail.
The native 5-by-5 template has no aircraft tail column — every row is assumed to belong to your group’s current aircraft, so the aircraft filter doesn’t apply. If you have a multi-aircraft spreadsheet, filter or split it before importing via the native template.
Tach Cascade (Paid Plans)
For flights dated on or after the date your group was created in 5-by-5, each imported flight is slotted into your live tach timeline and any existing flights whose tach values need to shift to maintain continuity are automatically adjusted. Before you confirm, the app shows a summary of exactly which flights will move and by how much, so nothing happens by surprise.
Flights dated before your group’s creation date are handled differently — see Importing Flights Older Than Your Starting Date below.
On the free tier, flights are imported as-is without automatic tach adjustments. You should double-check that tach values on adjacent flights line up after import, or correct any gaps manually.
Validation and Error Handling
Before confirming an import, 5-by-5 validates every row and shows you a summary breakdown:
- Total rows in the file
- Importable rows — validated successfully and ready to land
- Live rows — dated on or after your group’s creation date; will participate in the tach cascade
- Historical rows — dated before your group’s creation date; will land with
flight_timerecorded but tach values null (see below) - Skipped rows — with the specific reason for each
You can review each issue, then either fix the source data and re-upload, or accept the partial import and add the skipped rows manually later. The most common validation flags:
- “Invalid date” — the Date column couldn’t be parsed
- “Invalid tach values” — Tach Out or Tach In wasn’t numeric
- “Tach In must be greater than Tach Out” — equal or inverted values (often a typo)
- “Pilot name is required” — the Pilot column is blank
- “Wrong aircraft tail” — the row’s tail doesn’t match your group’s aircraft (ForeFlight and Garmin Pilot only)
- “Post-cutover with no tach” — for ForeFlight rows where Tach Out and Tach In are both
0.00. ForeFlight writes those zeros when the pilot didn’t log tach times; for live flights (post-cutover) we can’t slot them into the cascade without numbers, so they’re skipped. Historical rows in the same condition still import —flight_timeis taken from the Total Time column.
What Happens to Currency Events
When your import includes Day Landings, Night Landings, Instrument Approaches, and/or Holds, 5-by-5 creates currency events from them automatically. Your day-VFR, night-VFR, and IFR currency status update immediately to reflect the imported flights — including the time-since counters on the home dashboard and the Pilot Currency summary.
Historical and live flights contribute to currency the same way. So importing decades of past flights gives you accurate IFR look-back even though those flights’ tach values aren’t stored.
For ForeFlight imports, landings come from the Landings Day and Landings Night columns, and approaches from Approach 1 through Approach 6 — ForeFlight stores each approach as a separate column, and 5-by-5 counts the number of populated cells per row. For Garmin Pilot, all four values map from the corresponding columns directly.
Important: 5-by-5 is not a substitute for an FAA-approved logbook. Even after a clean import, you must maintain a separate compliant pilot logbook per FAR 61.51. 5-by-5 is a coordination and currency-awareness tool, not a regulatory logbook.
Importing Ledger Entries
The ledger is the authoritative record of every charge, payment, and adjustment in your group. To import historical entries (e.g., when migrating from another tool or starting up mid-year):
Where to Import
Web dashboard: Finances page > Ledger section > Import CSV (Owners, Admins, Treasurers only).
Required Columns
| Column | Required | Notes |
|---|---|---|
date | Yes | YYYY-MM-DD format |
source_month | Charges only | YYYY-MM format (e.g., 2025-10). Tags the entry to a specific billing month so the cash flow chart picks it up correctly. |
type | Yes | One of: opening_balance, charge, payment, adjustment |
member name | Yes | Must match a current member’s name exactly |
amount | Yes | Positive for charges. Negative for payments and credits. |
description | No | Free text shown on the ledger row |
note | No | Additional context |
The downloadable template is an Excel file with built-in dropdown validation for the type and member name columns, populated with your group’s current member list. This dramatically reduces typos.
About source_month: If you import historical charges without this column populated, the entries will appear in the ledger but the Cash Flow chart on the Finances page won't include them in monthly income totals. The chart groups historical income by source_month, not by the entry's calendar date — so a charge dated October 31 for September flying needs source_month = 2025-09 to show up in September on the chart.
What Imports Cleanly vs. What Doesn’t
Imports cleanly:
- Opening balances when a member joins mid-year
- Historical bills posted in another system
- Cash or check payments received before 5-by-5
- One-off adjustments (credits, fee waivers, manual corrections)
Doesn’t import cleanly:
- Stripe-processed payments — those should flow through the live Stripe integration, not be back-filled
- Adjustments that reference Stripe payment intent IDs — those metadata fields aren’t writable via CSV
If you have months of Stripe history to bring in, contact support@blueskyapplications.com and we’ll help with a one-time backfill.
Importing Flights Older Than Your Starting Date
The date your group was created in 5-by-5 is the cutover for tach reconciliation. Flights dated before that cutover are imported as historical — they count for totals, hours, currency, and pilot stats, but they don’t participate in the tach cascade.
When 5-by-5 detects historical rows in your import, here’s what happens:
- The flight’s duration is pulled from the import —
Total Timefor ForeFlight,Durationfor Garmin Pilot — and stored asflight_time - The flight’s tach values are stored as null in the database. There’s no attempt to back-calculate what the tach would have read at that point in history — that math would be guesswork and could conflict with your real starting tach reading.
- The row is flagged as historical, so the live-flight cascade logic ignores it on future inserts and edits
- Your starting tach reading itself is not modified
You’ll see a confirmation in the import summary noting how many rows will land as historical (e.g., “12 flights will be imported as historical — they count toward totals and currency but don’t participate in tach reconciliation”).
This is the right path for “I want my entire flight history in 5-by-5” projects. The trade-off: the tach trail for historical flights is incomplete. If you need the exact tach readings for old flights for compliance or maintenance-tracking purposes, keep them in your regulatory logbook. 5-by-5 records the hours, landings, currency events, and route — but not the running tach number.
Historical mode applies only to ForeFlight and Garmin Pilot imports (those formats include dates pre-dating your 5-by-5 group). The native 5-by-5 template doesn’t have a historical mode — every row is assumed to be a live flight with valid tach values.
Exporting Data
CSV exports are available for every importable data type:
- Flights — Flights screen → Export CSV (mobile and web)
- Ledger — Finances page → Ledger → Export CSV (web)
- Pilot stats — Web dashboard Flights page → Pilot Stats → CSV
- Bank transactions (if Plaid is connected) — Finances page → Actual Expenses → Export CSV
Exports respect any active filters, so you can export just one pilot’s flights, a single month’s transactions, etc.
Tip: Before deleting your account, export everything you might want to keep. Account deletion is permanent and exports are not generated automatically.