Skip to content

ForeFlight Integration

ForeFlight is the most-used Electronic Flight Bag (EFB) in general aviation. AZSuite imports flight tracks from ForeFlight via KML or GPX export — your flights logged on ForeFlight become attached tracks on your AZSuite logbook entries.

What's supported

Direction Supported How
ForeFlight track → AZSuite KML or GPX export, manual upload OR foreflight_sync.php
AZSuite logbook → ForeFlight Not currently supported
ForeFlight logbook → AZSuite Not currently supported
Live data feed (in-flight) ForeFlight uses Stratus 3 protocol; not compatible

If you log flights primarily in ForeFlight, the typical workflow is: fly with ForeFlight tracking → land → export the track → upload to AZSuite to attach to your AZSuite logbook entry.

Exporting from ForeFlight

In the ForeFlight app:

  1. More → Track Logs (or Flights in some versions)
  2. Find the flight you want to export
  3. Tap the share icon
  4. Choose Export → KML (preferred) or GPX
  5. Send via email / AirDrop / Files app

The exported KML contains:

  • GPS positions every few seconds
  • Altitude (sometimes — depends on ForeFlight version)
  • Ground speed (sometimes — depends)
  • Timestamps

Importing into AZSuite

Method 1: Via the pilot logbook entry

  1. Go to Pilot Logbook on the web
  2. Open the entry the track belongs to (or create it first)
  3. Click Attach Track (or Save and Log Track when creating a new entry)
  4. Drop the KML file onto the upload zone, or click to browse
  5. AZSuite parses the KML, normalizes the track, and saves

Method 2: Bulk import via foreflight_sync.php

If you have many ForeFlight tracks at once:

  1. Open foreflight_sync.php on the web
  2. Select multiple KML files (drag-and-drop or shift-click)
  3. AZSuite attempts to match each track to an existing logbook entry by date / route / aircraft
  4. Confirm matches; AZSuite saves each track to its matched entry
  5. Tracks that didn't match are listed as "unmatched" — you can manually pick a logbook entry for each

Method 3: From the mobile app

Mobile doesn't ingest ForeFlight KMLs directly; it has its own live track recorder. If you want a flight recorded by ForeFlight, use the web import flow.

Track normalization

ForeFlight's tracks can be noisy:

  • Airspeed and ground-speed sometimes contain large spikes
  • Altitude occasionally jumps when the GPS solution is degraded
  • The first / last few seconds may have no fix at all

AZSuite normalizes incoming ForeFlight tracks more aggressively than other sources to clean these up:

  • Spike detection on speed (anything > 2× the median for that time window is smoothed)
  • Altitude smoothing on the same principle
  • Trim leading / trailing samples without a valid fix

The result is a smoother, more visually reasonable replay. If you want the raw track as-is, there's a "raw" view in the flight replay.

Why ForeFlight specifically

Other sources (Garmin G5, Stratux ADS-B) send cleaner data — instrument-grade rates and high-fidelity GPS. ForeFlight is iOS-app GPS plus user input. The aggressive normalization is to compensate for ForeFlight's source quality, not to second-guess the others.

Re-importing after a parser fix

If an old ForeFlight track had alt/speed data that wasn't being captured correctly, AZSuite might have missed it the first time. After a parser fix, you can re-parse the stored track without re-uploading:

php scripts/reparse_track.php --track-id=N

This downloads the original file from object storage, runs it through the current parser, and replaces the rows in flight_track_points (the original KML stays untouched).

This is mostly an admin / support tool — it's why we keep the original upload in object storage even after parsing.

Aspect ratio: KML vs GPX

If your ForeFlight version supports both formats, prefer KML — it tends to include more metadata (timestamps, altitude) than GPX in the default export. GPX from ForeFlight often lacks altitude entirely.

Where the file goes

After upload, the original KML is stored in the appropriate object-storage bucket (typically adsb-tracks on Wasabi). Parsed track points go into the flight_track_points table. The link from logbook entry to track is via flight_entries.adsb_flight_id.

The original file is preserved so we can re-parse if the parser improves.