Getting started

What you need

  • A Liftosaur premium subscription. The API requires premium. Get it in Liftosaur → Settings → Subscription.
  • A Liftosaur API key. Liftosaur → Settings → API Keys. Create a key and copy it.
  • A Garmin Connect account. The account your watch syncs to.

Connect your accounts

  1. Go to Settings in the dashboard.
  2. Enter your Liftosaur API key.
  3. Click Connect Garmin and log in. Garmin may ask for a multi-factor code.

Your sync status appears on the Workouts and History pages.

Syncing

Automatic sync

liftosaur2garmin checks for new Liftosaur workouts on a schedule and uploads them to Garmin. You don't need to run anything or open the dashboard.

Note: You must explicitly turn on auto-sync in the dashboard before automatic syncing can run. It is disabled by default.

Manual sync

Go to the Workouts page. Each workout has a Sync button. Click it to upload that workout now.

History

The History page lists every synced workout with timestamps and status.

Instant sync (iOS Shortcuts / Android Tasker)

You can initiate synchronization whenever you want (e.g., when you finish a workout or close your workout tracker app) by sending a POST request to your personal Instant Sync URL shown on the dashboard.

iOS Shortcuts Setup

  1. Open the Shortcuts app and create a new Shortcut.
  2. Add a Get Contents of URL action.
  3. Set the URL to your personal Instant Sync URL.
  4. Tap the action settings (the expansion arrow) and set the HTTP method to POST.

Android Tasker Setup

  1. Create a new Tasker task.
  2. Add a Net → HTTP Request action.
  3. Set the Method to POST.
  4. Set the URL to your personal Instant Sync URL.

Handling Failures & Disconnections

If your Garmin Connect account gets disconnected or your credentials are invalid, the request will fail with a 412 Precondition Failed status and a JSON error message.

  • iOS Shortcuts: Expand the Get Contents of URL action settings and turn off Fail on Error (so the shortcut doesn't stop). Then add a Show Notification action and set the text to the Contents of URL (the response body). This will alert you with the error message.
  • Android Tasker: Tasker stores the response body in %http_data and the status code in %http_response_code. Add a Notify action to alert you with %http_data if %http_response_code is not 202.

Alternative: FlowTrigger is free.

Note: By default, Instant Sync uploads only your latest workout. You can sync multiple workouts (up to a maximum of 5) by appending &limit=N to your URL.

This example will sync the last 3 workouts:
http://localhost:8123/api/cron/sync?token=lftsk_slrxgabcdef&limit=3

Exercise mapping

How it works

liftosaur2garmin maps each of your Liftosaur exercises to a Garmin FIT exercise category. Garmin uses these categories to show the Targeted Muscle Map on your watch. "Bench Press (Barbell)" becomes a chest exercise. Without a mapping, exercises show as "Unknown."

550+ mappings are built in. Most exercises are covered from the start.

Adding a mapping

Open the Mappings page. It lists your unmapped exercises and existing mappings.

  1. Find the exercise in the unmapped list.
  2. Pick a Garmin category and subcategory from the dropdowns.
  3. Click Save.

The next sync uses the new mapping. Edit or delete mappings any time.

What you see in Garmin

Open Garmin Connect after a sync. Your workout shows:

Workout nameMatches your Liftosaur workout title
Exercises, sets, reps, weightIn the activity description
CaloriesCalculated from heart rate data through the Keytel formula
Heart rateAligned to the workout window
Muscle mapColor-coded by volume per muscle, on your watch

Re-syncing a workout

If you edit a workout in Liftosaur after it synced:

  1. Go to the History page and click Unsync on that workout.
  2. Go to the Workouts page and click Sync.

The old Garmin activity stays. Delete it in Garmin Connect if you don't want a duplicate.

Troubleshooting

Upload fails

Garmin rejects uploads when the auth token expires or the API is rate-limited.

  1. Wait a minute and click Sync again on the Workouts page.
  2. Go to Settings and click Connect Garmin to re-authenticate.
  3. Check your Garmin account isn't locked.

Exercises show as "Unknown"

The exercise needs a mapping. Open the Mappings page, find the exercise, assign a category.

Invalid API key

Your Liftosaur API key is wrong or expired. Generate a new one in Liftosaur → Settings → API Keys, then enter it in the dashboard Settings.

Calories look wrong

Calorie accuracy comes from heart rate data and your profile. Go to Settings and check your weight and birth year. The Keytel formula uses both.

No workouts appear

Look at the Workouts page in the dashboard. If empty:

  1. Double-check your Liftosaur API key in Settings.
  2. Check your Liftosaur premium subscription is active.
  3. Make sure the workouts are in your Liftosaur history (templates don't count).

Garmin login gets stuck

Garmin may show a captcha or consent prompt during login. Close the browser tab and try again. If it keeps happening, wait a few minutes and retry.

Still stuck?

Send a message through the Support page. Include what went wrong and what you tried. We also take general questions and feedback there.

FAQ

Will this duplicate my workouts?

No. Syncing a workout a second time skips it. liftosaur2garmin tracks which workouts have been synced.

Can I use this without a Garmin watch?

Yes. The upload goes to Garmin Connect, which works on its own. The web and mobile apps show exercises, calories, and descriptions. The on-watch muscle map needs a watch.

I deleted a workout in Garmin Connect. Can I get it back?

Go to the History page, unsync that workout, then sync it again from the Workouts page.

Why are my workouts not syncing automatically?

By default, auto-sync is disabled. To enable it, go to your dashboard, scroll to the Sync card, and toggle Auto-sync on. Your workouts will then sync automatically on a schedule.

Is there a limit on syncing past workouts?

Yes. The sync tool enforces a hard cap of 100 syncable workouts and only retrieves your 100 most recent workouts. Workouts older than the newest 100 are marked as "Older Workout" on the Workouts page and will not be processed or marked as pending. This prevents the server from scanning every historical workout indefinitely, while still providing a robust history for active users.