🔓 Unlock all 10,000+ workflows & prompts free Join Newsletter →
✅ Full access unlocked — explore all 10,000 AI workflow and prompt templates Browse Templates →
Home n8n Workflow
January 22, 2026

Strava to Google Sheets, a clean training log

Lisa Granqvist Partner Workflow Automation Expert

Exporting Strava, pasting into Sheets, fixing formats, then realizing you already logged that run last week. It’s annoying, and it quietly breaks your “source of truth.”

Coaches feel it when they’re chasing athlete compliance. Marketing ops folks who run wellness challenges run into the same mess. Even a busy founder training for a race ends up with a half-trustworthy spreadsheet. This Strava Sheets log automation keeps your training log clean without weekly cleanup sessions.

You’ll set up an n8n workflow that checks Strava on a schedule, compares what’s already in Google Sheets, deduplicates, then appends only what’s new. And you’ll know exactly what to tweak if your sheet uses different date, time, or distance formats.

How This Automation Works

Here’s the complete workflow you’ll be setting up:

n8n Workflow Template: Strava to Google Sheets, a clean training log

Why This Matters: Your Training Log Stops Being Trustworthy

A training spreadsheet is only useful when you believe it. Manual Strava exports tend to drift: dates come in differently than your sheet expects, distances show up in mixed units, and “activity reference” fields get duplicated after you re-import or edit something in Strava. Then you spend your time fixing the log instead of using it. It’s also easy to miss the simple stuff (like a recovery walk) when you’re doing batch exports every few weeks, which makes your charts and weekly totals look “off.”

The friction compounds, because the moment the sheet looks unreliable, you stop opening it.

  • Manual exports create duplicate rows, especially when you re-run the same date range.
  • Formatting mismatches (date/time/distance) force you to clean columns before you can chart anything.
  • You waste about 30 minutes each week doing “spreadsheet housekeeping” that should not exist.
  • Sharing the log with a coach or team becomes awkward because you can’t guarantee it’s complete.

What You’ll Build: Strava Activities That Auto-Append to Sheets (Deduped)

This workflow turns Strava into a living Google Sheets log that stays clean without you touching it. On a schedule you choose, n8n loads the existing rows from your spreadsheet, pulls the latest activities from your Strava account, and compares the two using a stored activity reference/ID. Anything that’s already in Sheets is ignored. Anything new gets formatted to match your sheet (dates, durations, distances, elevation), sorted in a predictable order, and appended as fresh rows. The end result is boring in the best way: a spreadsheet you can filter, chart, share, and trust.

The workflow starts with a scheduled trigger, then reads your existing “saved activities” list from Google Sheets. From there it fetches Strava activities, deduplicates, filters out anything you already have, and appends only the missing items back into Sheets.

What You’re Building

Expected Results

Say you train 5 days a week and log about 7 activities (runs, rides, a walk). Manually, a weekly export plus import and cleanup is usually about 30 minutes, sometimes more when formats break. With this workflow, the “work” is basically zero: the scheduled trigger runs in the background, and Sheets updates after the Strava fetch and filtering completes. You still get the same spreadsheet, but you stop paying the weekly admin tax.

Before You Start

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for storing your training log rows.
  • Strava to provide the activity source data.
  • Google + Strava credentials (created inside n8n’s Credentials section).

Skill level: Beginner. You’ll connect accounts, pick a spreadsheet + sheet name, and adjust a couple of formatting fields if your columns differ.

Want someone to build this for you? Talk to an automation expert (free 15-minute consultation).

Step by Step

A scheduled check runs automatically. You decide the cadence (daily, every few hours, weekly). n8n starts the run without you opening Strava or touching a spreadsheet.

Your current training log is loaded from Google Sheets. The workflow pulls existing rows, sorts them, and maps them into a clean list of “already saved” references so it can compare against Strava.

Strava activities are fetched, cleaned, and deduplicated. It requests recent activities from Strava, sorts by ID, removes duplicates, then limits to a manageable set so you’re not reprocessing your whole history every time.

Only missing activities get appended back into Sheets. A filter step keeps only new items, then the workflow sorts those results and appends formatted rows into your target sheet.

You can easily modify the date/time/distance formatting to match your existing columns. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Scheduled Trigger

Set the workflow to run automatically on a schedule so it can sync new Strava activities at regular intervals.

  1. Open Scheduled Run Trigger.
  2. Set the Rule interval to hours with Hours Interval set to 2.
  3. Ensure Scheduled Run Trigger connects to Load Saved Activities.

Step 2: Connect Google Sheets

Load previously saved activities from a Google Sheet and later append new activities to the same sheet.

  1. Open Load Saved Activities and set Document to [YOUR_ID] and Sheet to [YOUR_ID].
  2. Credential Required: Connect your googleSheetsOAuth2Api credentials in Load Saved Activities.
  3. Open Append to Sheets and confirm Operation is append.
  4. Set the column mappings in Append to Sheets to use expressions like ={{ $json.distancia }}, ={{ $json.id }}, and ={{ $json.fecha }}, and set Track to =http://www.strava.com/activities/{{ $json.id }}.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Append to Sheets.

Step 3: Set Up Activity Reference Processing

Sort and limit the saved activity references to build a compact list of known IDs for comparison.

  1. In Sort Saved Refs, set the Sort Field to Ref.
  2. In Limit Saved Records, set Keep to lastItems and Max Items to 10.
  3. In Map Saved IDs, add an assignment with Name id, Type string, and Value ={{ $json.Ref }}.

Step 4: Configure Strava Fetch and Deduplication

Pull recent Strava activities, sort and deduplicate them, then limit the results for efficient processing.

  1. Open Fetch Strava Activities and set Operation to getAll and Limit to 10.
  2. Credential Required: Connect your Strava credentials in Fetch Strava Activities (this node needs credentials but none are configured).
  3. In Sort Strava IDs, set the Sort Field to id.
  4. In Deduplicate Records, set Compare to selectedFields and Fields to Compare to id.
  5. In Limit Strava Records, set Keep to lastItems and Max Items to 10.

Step 5: Set Up Mapping and Filtering Logic

Transform Strava data into your sheet schema and filter out activities already saved.

  1. In Map Latest Strava, map fields using expressions: id ={{ $json.id }}, fecha ={{ DateTime.fromISO($json.start_date_local).toFormat('d/M/yyyy') }}, distancia ={{ Math.round($json.distance / 100) / 10 }}, elevacion ={{ Math.round($json.total_elevation_gain) }}, and tiempo ={{ `${Math.floor($json.moving_time / 3600)}:${Math.floor(($json.moving_time % 3600) / 60).toString().padStart(2, '0')}:${($json.moving_time % 60).toString().padStart(2, '0')}` }}.
  2. In Filter New Activities, keep the JavaScript logic that compares Map Latest Strava results with Map Saved IDs to filter out duplicates.
  3. In Sort Filtered Results, set the Sort Field to id.

⚠️ Common Pitfall: Ensure the saved IDs from Map Saved IDs are strings so they match the filtered Strava IDs correctly. The provided code handles this via String(item.json.id).

Step 6: Configure Output to Google Sheets

Append new activities into your Google Sheet with the correct column mapping.

  1. In Append to Sheets, confirm the Columns mapping uses: Kms ={{ $json.distancia }}, Ref ={{ $json.id }}, Fecha ={{ $json.fecha }}, Track =http://www.strava.com/activities/{{ $json.id }}, Tiempo ={{ $json.tiempo }}, and Desnivel ={{ $json.elevacion }}.
  2. Verify Append to Sheets connects from Sort Filtered Results so only new items are appended.

Step 7: Test and Activate Your Workflow

Run a manual execution to validate that new Strava activities are detected and appended correctly.

  1. Click Execute Workflow to run from Scheduled Run Trigger or test nodes sequentially.
  2. Confirm that Filter New Activities returns only new items and Append to Sheets adds rows to the spreadsheet.
  3. When satisfied, toggle the workflow to Active to enable the scheduled sync.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Troubleshooting Tips

  • Google Sheets credentials can expire or need specific permissions. If things break, check the n8n Credentials screen and confirm the Google account can edit the target spreadsheet.
  • Strava tokens can be finicky if you revoke app access. If the Strava node starts failing, re-authorize the Strava credential in n8n and confirm the correct athlete/account is selected.
  • Formatting is the silent killer here. If dates or durations look wrong in your rows, adjust the mapping/format in the “latest Strava” field-mapping step so it matches how your sheet stores values.

Quick Answers

What’s the setup time for this Strava Sheets log automation?

About 30 minutes if your Strava and Google accounts are ready.

Is coding required for this Strava Sheets log?

No. You’ll mostly select accounts and set the spreadsheet and sheet name. The workflow already includes the logic for filtering new activities.

Is n8n free to use for this Strava Sheets log workflow?

Yes. n8n has a free self-hosted option and a free trial on n8n Cloud. Cloud plans start at $20/month for higher volume. You’ll also need to factor in Strava and Google access, which are typically free for this use case.

Where can I host n8n to run this automation?

Two options: n8n Cloud (managed, easiest setup) or self-hosting on a VPS. For self-hosting, Hostinger VPS is affordable and handles n8n well. Self-hosting gives you unlimited executions but requires basic server management.

Can I modify this Strava Sheets log workflow for different use cases?

Yes, and you’ll probably want to. You can change which columns get written by editing the field-mapping steps (the “Map Saved IDs” and “Map Latest Strava” parts). Common tweaks include storing activity type (run/ride), adding moving time vs. elapsed time, and changing date formatting so charts group by week the way you prefer.

Why is my Strava connection failing in this workflow?

Usually it’s an expired or revoked Strava authorization. Reconnect the Strava credential in n8n, then open the Strava node and make sure it’s pointing at that refreshed credential. If it still fails, check your Strava account’s connected apps and confirm n8n is allowed, because removing access there will break future runs.

What volume can this Strava Sheets log workflow process?

Plenty for typical training logs. Most people only add a handful of activities per day, and this workflow limits and sorts recent records so each run stays lightweight. On n8n Cloud, your practical limit is your monthly execution quota; if you self-host, it’s mostly your server capacity and how often you schedule it.

Is this Strava Sheets log automation better than using Zapier or Make?

Often, yes, because deduping and “compare what’s in Sheets vs. what’s in Strava” gets awkward fast in simpler tools. n8n handles branching logic and data shaping without charging you for every tiny step, which matters when you add sorting, limits, and filtering. The self-host option is also a big deal if you want unlimited runs. That said, if you only need “new Strava activity → add row,” Zapier or Make can be fine. Talk to an automation expert if you want the simplest option for your exact setup.

Once this is running, your spreadsheet stops being a side project. It becomes the place you can actually rely on, week after week.

Need Help Setting This Up?

Our automation experts can build and customize this workflow for your specific needs. Free 15-minute consultation—no commitment required.

Lisa Granqvist

Workflow Automation Expert

Expert in workflow automation and no-code tools.

×

Use template

Get instant access to this n8n workflow Json file

💬
Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Get a free quote today!
Get a free quote today!

Tell us what you need and we'll get back to you within one working day.

Launch login modal Launch register modal