Setup
The Specter Garmin app is a Connect IQ data field and widget. It runs alongside Garmin's native activity recording.
- Install the Specter data field from the Connect IQ store (or sideload the .prg file)
- On your Garmin watch, go to Settings > Data Fields and add Specter to an activity profile
- Open the Specter app on your phone and sign in
- The phone app sends your auth token to the watch via Garmin Connect Mobile
Unlike Apple Watch and Wear OS, Garmin watches communicate through the Garmin Connect Mobile app on your phone. Your auth token is sent from the Specter phone app to the watch via this bridge. The token is stored on the watch in persistent device storage.
Live Data Field
During an activity, the Specter data field shows a 3x2 grid of real-time stats.
| Position | Stat | Details |
|---|---|---|
| Top left | PACE | min:sec /km for running, km/h for cycling |
| Top right | HR | Heart rate in bpm (red text) |
| Middle left | DIST | Distance in km |
| Middle right | TIME | Elapsed time |
| Bottom left | ELEV | Elevation gain in meters |
| Bottom right | CAD | Cadence in steps/min |
Primary stats are displayed in Specter green (#00C853). Heart rate is in red (#FF4444). The layout updates every second during your activity.
Recording an Activity
- Start an activity on your Garmin as you normally would (press the start button)
- The Specter data field displays your live stats alongside any other data fields you've configured
- Garmin's native GPS and sensor recording handles all data capture
- When you stop and save the activity, Specter extracts the final stats
- Stats are uploaded to your Specter account via the Garmin Connect Mobile bridge
The activity is created on the backend with these stats:
| Field | Source |
|---|---|
| Activity type | Mapped from Garmin sport type (RUNNING → RUN, etc.) |
| Duration | From Activity.Info elapsed time |
| Distance | From Activity.Info distance |
| Heart rate (avg/max) | From Activity.Info heart rate stats |
| Elevation gain | From Activity.Info altitude |
| Pace | Calculated from distance and duration |
| Calories | From Activity.Info energy expenditure |
| Device source | "garmin_connectiq" |
The Specter Garmin app uploads stats only — not GPS data. The GPS track is handled separately through Garmin Connect's webhook integration. When you sync your watch with Garmin Connect, a webhook notifies the Specter backend, which downloads and processes the FIT file automatically.
Widget (Glance)
The Specter widget shows your most recent activity at a glance. No network calls on render — it reads from on-device storage.
The widget displays:
- Title — activity name (e.g. "RUN - Garmin")
- Distance — in km
- Duration — formatted time
- Pace — min:sec per km
- Heart rate — average bpm
The widget data updates after each activity upload. You can also trigger a sync from the Garmin Connect Mobile app, which fetches the latest activity from the backend and updates the on-device storage.
Garmin Connect Webhook Sync
GPS route data flows through Garmin's webhook system, separate from the on-watch stats upload.
- You finish an activity and sync your Garmin watch with the Garmin Connect app
- Garmin Connect sends a webhook notification to the Specter backend
- The backend queues an async task to download the FIT file from Garmin's servers
- The FIT file is processed through the ingestion pipeline:
- Device serial numbers stripped
- Sensor calibration data removed
- Timestamps rounded to nearest minute
- GPS track encrypted with AES-256
- Start/end coordinates jittered by 500m
- The encrypted route is stored and linked to your activity
Stats come directly from the watch (fast, immediate). GPS comes via Garmin Connect webhook (async, after phone sync). This means your activity stats appear immediately, and the route appears shortly after you sync with Garmin Connect.
Supported Devices
| Series | Models |
|---|---|
| Forerunner | 245, 255, 265, 955, 965 |
| Fenix | 7, 7S, 7X |
| Venu | 2, 2S, 3, 3S |
| Enduro | 2 |
| Epix | Gen 2 |
Connect IQ SDK 4.0+. The watch needs to be paired with the Garmin Connect Mobile app on your phone for communication and webhook sync.