I don’t care for workout apps. They charge you a bunch of money to log your sets and tell you which exercises to do. That’s just a database with a subscription fee on top. Instagram Reels and TikTok give me enough gym content for exercise ideas, so what do I need an app for?
I hate paying for things that make logging something to a database, or God forbid, a Google Sheet, their main attraction. So I canceled the subscription and built my own.
An Apple Shortcut prompts me for the exercise, weight, and reps. It sends a POST request to a Google Apps Script web app that writes a row to a Google Sheet. Now I own the data and can connect it to Claude Code for insights later.
This also means that I can share my Shortcut with my training partner, and we can both log to the same spreadsheet. No extra subscription required.
What You'll Need
Apple Shortcuts to capture exercise data and fire the POST request.
Google Apps Script to receive the data and write it to our sheet
Google Sheets is free, and I can do whatever I want with the data.
Note: Apple Shortcuts is iOS- and macOS-only. Android users could replicate this with Tasker or a Scriptable widget — the Google Apps Script web app side stays exactly the same.
Setting Up the Google Sheet
Create a new Google Sheet and name the first tab exactly Workout Log. Your columns should be: Date, Person, Exercise, Set 1, Set 2, Set 3, Set 4. Row 1 is your header, and data starts at row 2.
Building the Apple Shortcut
The Shortcut does two things: it asks for input, then POSTs it to a URL.
Three prompts (exercise, weight, reps) are saved to a variable. Use the “Get Contents of URL” to make a POST request to your Google App Script with those variables mapped to JSON. The last step is to notify of whatever the Apps Script returns.

The phone number is hardcoded in the shortcut as phone That's how the script knows who's logging. Share the shortcut with whoever you want, just make sure they change their phone number in the shortcut.
Important: Build this on your Mac, not your phone. Shortcuts on iOS is a nightmare to work with. Once it's built, it syncs to your phone automatically.
Writing the Google Apps Script
This is what connects the Shortcut to your sheet. Deploy it as a web app, and it gives you a URL — that URL goes into the Shortcut.
The script parses the incoming JSON, determines who's logging based on the phone number, then finds the appropriate row to write to. It does three checks: does this exercise already exist for today, for this person? If yes, which set are they on? If no, create a new row.
A few things worth knowing before you set this up:
Your sheet must be named exactly
Workout Log. If the name doesn't match, the script fails silently. You'll spend 20 minutes wondering why nothing is logging.You're capped at 4 sets per exercise. If you regularly do more, that's a one-line fix in the gist.
PERSON_1_NAMEis the default fallback. Any POST from an unrecognized phone number gets logged under your name.
Once the set is written, the script sends back a confirmation with the exercise name, weight, reps, and set number. The Shortcut notification displays that on your lock screen after every logged set. I threw in a "goooood job" message too, because apparently I need the encouragement.
Deploying the Apps Script as a Web App
In Apps Script, go to Deploy → New Deployment. Set it to Web App, execute as yourself, and set access to "Anyone." That last part is what lets the Shortcut POST to it without authentication. Don't let 'Anyone' access spook you — the web app URL contains a long random token. It's not publicly indexed or guessable; only someone with the exact URL can post to it.
Copy the web app URL and paste it into the "Get Contents of URL" step in your Shortcut.
The whole thing took an hour to build and costs nothing to run. My training partner and I have been logging every session to the same sheet for weeks. When I'm ready to actually analyze the data, it's sitting there waiting — clean, structured, and not locked inside some app's export flow.
If you want the script or the full shortcut, subscribe to the newsletter.