A workout log sheet for lifters, runners and class regulars

Updated 2026-10-30

Notes apps pile up, and the numbers never line up. I would rather log each session in a form with the same boxes every time. Then the list sorts itself, and last month is easy to compare with this one.

Use this when

  • You train alone and want a simple record.
  • A trainer wants clients to report sessions between visits.
  • A club wants a shared way to log effort.

Skip it when

You need a live plan with prescribed sets or a timer. This form records what happened. It does not coach, and it does not read your watch.

What is asked and why

The date and session type are the backbone. Muscle groups and minutes show balance and volume. The main lift with sets, reps and weight is your progress line. An effort score shows how hard it felt, which is often more honest than the weight. Two boxes mark a new record and any pain. Notes catch the lesson for next time.

What your AI would ask

"What was your main exercise today?" Then "How many sets and reps?" Then "How hard did it feel, from 1 to 10?" It shows the answers and sends only after a yes. See agent-fillable forms.

Browse forms for gyms. A food diary tracks the other half, and a PAR-Q form screens new members.

Questions

How do I see my progress on one lift?

Download the CSV and filter main_exercise for the lift. Then chart load_used against workout_date. Keep the unit the same each time so the numbers compare.

Can a trainer collect logs from clients?

Yes. Share the public link, and add a name line to your copy of the form. Every client's session lands in the same CSV, which you can filter by name.

Can my AI log the session after I train?

Yes. Tell your AI what you did. It fills the form, shows every answer and asks Send it? before it submits. You stay in control of what is saved.

Try the form

Live demo ยท nothing is saved

Log a workout

Add one entry per session. Write the main lift and how it felt. Small notes now save guesswork later.

What kind of session was it? (required)
What did you train?
How hard did it feel?

1 is very easy and 10 is all you had.

I set a new personal record
Something hurt during the session

Or paste the JSON

Give this to your AI. It needs the AI Form API MCP server or an API key. It makes the form and sends you the link.

text
Create this form with the AI Form API create_form tool (or POST https://aiformapi.com/v1/forms with my API key). Then reply with the public_url.

{
  "title": "Log a workout",
  "description": "Add one entry per session. Write the main lift and how it felt. Small notes now save guesswork later.",
  "fields": [
    {
      "id": "workout_date",
      "label": "Date",
      "type": "date",
      "required": true
    },
    {
      "id": "session_type",
      "label": "What kind of session was it?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Strength",
        "Cardio",
        "Mobility or stretching",
        "Sport or class",
        "A mix"
      ]
    },
    {
      "id": "muscle_groups",
      "label": "What did you train?",
      "type": "multi_choice",
      "options": [
        "Legs",
        "Chest",
        "Back",
        "Shoulders",
        "Arms",
        "Core",
        "Full body"
      ]
    },
    {
      "id": "minutes_trained",
      "label": "Minutes trained",
      "type": "number",
      "min": 1,
      "max": 300
    },
    {
      "id": "main_exercise",
      "label": "Main exercise",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "sets_done",
      "label": "Sets",
      "type": "number",
      "min": 1,
      "max": 30
    },
    {
      "id": "reps_per_set",
      "label": "Reps per set",
      "type": "number",
      "min": 1,
      "max": 200
    },
    {
      "id": "load_used",
      "label": "Weight used, in the unit you always use",
      "type": "number",
      "min": 0,
      "max": 1000
    },
    {
      "id": "effort_score",
      "label": "How hard did it feel?",
      "type": "rating",
      "help": "1 is very easy and 10 is all you had.",
      "min": 1,
      "max": 10
    },
    {
      "id": "new_record",
      "label": "I set a new personal record",
      "type": "checkbox"
    },
    {
      "id": "something_hurt",
      "label": "Something hurt during the session",
      "type": "checkbox"
    },
    {
      "id": "session_notes",
      "label": "Notes for next time",
      "type": "long_text",
      "max_length": 1000
    }
  ]
}

Or call the API

bash
curl -X POST https://aiformapi.com/v1/forms \
  -H "Authorization: Bearer $AIFORMAPI_KEY" \
  -H "Content-Type: application/json" \
  -d '{"title":"Log a workout","description":"Add one entry per session. Write the main lift and how it felt. Small notes now save guesswork later.","fields":[{"id":"workout_date","label":"Date","type":"date","required":true},{"id":"session_type","label":"What kind of session was it?","type":"single_choice","required":true,"options":["Strength","Cardio","Mobility or stretching","Sport or class","A mix"]},{"id":"muscle_groups","label":"What did you train?","type":"multi_choice","options":["Legs","Chest","Back","Shoulders","Arms","Core","Full body"]},{"id":"minutes_trained","label":"Minutes trained","type":"number","min":1,"max":300},{"id":"main_exercise","label":"Main exercise","type":"short_text","max_length":150},{"id":"sets_done","label":"Sets","type":"number","min":1,"max":30},{"id":"reps_per_set","label":"Reps per set","type":"number","min":1,"max":200},{"id":"load_used","label":"Weight used, in the unit you always use","type":"number","min":0,"max":1000},{"id":"effort_score","label":"How hard did it feel?","type":"rating","help":"1 is very easy and 10 is all you had.","min":1,"max":10},{"id":"new_record","label":"I set a new personal record","type":"checkbox"},{"id":"something_hurt","label":"Something hurt during the session","type":"checkbox"},{"id":"session_notes","label":"Notes for next time","type":"long_text","max_length":1000}]}'

JSON definition

json
{
  "title": "Log a workout",
  "description": "Add one entry per session. Write the main lift and how it felt. Small notes now save guesswork later.",
  "fields": [
    {
      "id": "workout_date",
      "label": "Date",
      "type": "date",
      "required": true
    },
    {
      "id": "session_type",
      "label": "What kind of session was it?",
      "type": "single_choice",
      "required": true,
      "options": [
        "Strength",
        "Cardio",
        "Mobility or stretching",
        "Sport or class",
        "A mix"
      ]
    },
    {
      "id": "muscle_groups",
      "label": "What did you train?",
      "type": "multi_choice",
      "options": [
        "Legs",
        "Chest",
        "Back",
        "Shoulders",
        "Arms",
        "Core",
        "Full body"
      ]
    },
    {
      "id": "minutes_trained",
      "label": "Minutes trained",
      "type": "number",
      "min": 1,
      "max": 300
    },
    {
      "id": "main_exercise",
      "label": "Main exercise",
      "type": "short_text",
      "max_length": 150
    },
    {
      "id": "sets_done",
      "label": "Sets",
      "type": "number",
      "min": 1,
      "max": 30
    },
    {
      "id": "reps_per_set",
      "label": "Reps per set",
      "type": "number",
      "min": 1,
      "max": 200
    },
    {
      "id": "load_used",
      "label": "Weight used, in the unit you always use",
      "type": "number",
      "min": 0,
      "max": 1000
    },
    {
      "id": "effort_score",
      "label": "How hard did it feel?",
      "type": "rating",
      "help": "1 is very easy and 10 is all you had.",
      "min": 1,
      "max": 10
    },
    {
      "id": "new_record",
      "label": "I set a new personal record",
      "type": "checkbox"
    },
    {
      "id": "something_hurt",
      "label": "Something hurt during the session",
      "type": "checkbox"
    },
    {
      "id": "session_notes",
      "label": "Notes for next time",
      "type": "long_text",
      "max_length": 1000
    }
  ]
}