Skip to content

File import

This is Dreeve’s default mode (IMPORT_MODE=files).

ExtensionNotes
.fitThe richest format. Produced by most Garmin, Wahoo and Zwift devices. Contains streams, laps, power, heart rate.
.tcxContains streams and laps.
.gpxRoute data. Contains the least detail of the three.

Drop files into the watch/ folder that you mounted in your docker-compose.yml. On the next import run, everything in it is processed.

Dreeve checks incoming activities against what it already has imported before. So re-importing a file, or dropping in a bulk export that overlaps with what you’ve already loaded, won’t create duplicates. Duplicates are silently skipped and recorded in the import log as skipped.

The daemon container will detect the files and import every 5 minutes. To trigger a run yourself:

Terminal window
> docker compose exec app bin/console app:import:files

Every processed file is recorded at /admin/file-imports, with one of three outcomes:

OutcomeMeaning
successThe activity was imported. The row links to it.
skippedThe activity was already in your database.
failedThe file could not be parsed. The row carries the error message.

File import log