🔓 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

BlueSky to Google Sheets, metrics tracked for you

Lisa Granqvist Partner Workflow Automation Expert

You post, you wait, and then you end up copying likes and replies into a spreadsheet by hand. It’s tedious. Worse, it’s easy to miss a day, grab the wrong numbers, or forget that one post that spiked late.

This hits social media managers hardest, but agency reporting leads and solo creators feel it too. With BlueSky metrics sync in place, your content calendar becomes a live performance dashboard without you babysitting it.

This workflow pulls engagement from BlueSky once per day, updates the right rows in Google Sheets, and avoids wasting API calls on old posts. Below, you’ll see exactly what it automates, the results you can expect, and what you’ll need to run it reliably.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: BlueSky to Google Sheets, metrics tracked for you

The Problem: Manual BlueSky reporting never stays accurate

BlueSky numbers move after you post. Sometimes a lot. A thread might look “meh” at 10 a.m. and then pick up reposts overnight, which means yesterday’s report is already stale. When you track performance in Google Sheets (because clients want spreadsheets, or your team plans content there), manual updates become a recurring chore. You open BlueSky, find the post, copy likes, copy reposts, copy replies, paste them into the right row, then do it again for every post. One interruption and you paste into the wrong line. Now your trend analysis is off, and you’ll be second-guessing the data all month.

The friction compounds. Here’s where it breaks down.

  • You end up spending about 5 minutes per post just to refresh three numbers, which adds up fast across a two-week posting cadence.
  • Copy-paste reporting creates small mistakes that are annoying to catch and embarrassing to present.
  • Viral spikes often happen late, so “end of day” reporting quietly undercounts your best posts.
  • Older posts clutter the process, so you either waste time or you stop updating altogether.

The Solution: Daily BlueSky metrics syncing into your Google Sheet

This n8n workflow turns your Google Sheets content calendar into a self-updating analytics log. It runs on a daily schedule, logs into BlueSky via API, then pulls only the rows in your sheet that are marked as posted. From there, it filters down to a smart “active window”: posts from the last 14 days. That window is the sweet spot because it captures delayed engagement (and those surprise spikes) without wasting time on archived content that won’t change much. For each qualifying row, the workflow fetches the latest like, repost, and reply counts from BlueSky and writes them back into the correct columns. If a post was deleted or the link is invalid, it handles the error gracefully so the whole run doesn’t collapse.

The workflow starts with a timed trigger, then sets the key parameters and authenticates with BlueSky. Next, it retrieves posted rows from Google Sheets, filters to recent posts, and iterates through them in batches. Finally, it fetches metrics per post and updates the sheet, leaving you with numbers you can actually trust.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you publish 2 BlueSky posts per day and track them in Google Sheets for two weeks. That’s roughly 28 posts, and manual updating is usually about 5 minutes per post to open the link, copy three counts, and paste them cleanly (so about 2 hours total). With this workflow, the “work” is basically zero: it runs once daily at 9 a.m., spends a few minutes pulling and updating rows, and you just open the sheet when you need it. Your numbers stay fresh without blocking your morning.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for your content calendar and reporting.
  • BlueSky account to pull post engagement metrics.
  • BlueSky App Password (create it in your BlueSky account settings).

Skill level: Beginner. You’ll connect accounts, pick the right sheet, and paste credentials into the configuration node.

Don’t want to set this up yourself? Talk to an automation expert (free 15-minute consultation).

How It Works

A daily schedule kicks it off. The workflow uses a timed trigger (for example, every morning) so your sheet is updated before you start reporting or planning.

It logs into BlueSky and loads your “posted” content list. n8n sets the parameters, creates a BlueSky session via HTTP request, then retrieves rows from Google Sheets that are marked as Posted.

Only recent posts get processed. A filter checks the “Posted At” date and keeps items from the last 14 days, then a batch iterator moves through each row without overwhelming the API.

Metrics are fetched and written back to your spreadsheet. For each post link, it requests the latest engagement counts, then updates Like Count, Repost Count, and Reply Count in the same row.

You can easily modify the 14-day “active window” to 7 days (for faster-moving accounts) or 30 days (for slower burn content) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Schedule Trigger

Set the workflow to run on a daily schedule so it can track analytics consistently.

  1. Add and open Timed Run Trigger.
  2. Set the schedule rule to trigger at hour 9 (based on the node’s interval rule with triggerAtHour).
  3. Connect Timed Run Trigger to Setup Parameters.

Step 2: Connect Google Sheets

Pull posted records from your sheet and prepare to update metrics in the same file.

  1. Open Retrieve Posted Rows and choose the correct Document and Sheet.
  2. Keep the filter so only rows with Status set to Posted are retrieved.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Posted Rows.
  4. Open Write Metrics to Sheet, select the same Document and Sheet, and keep Operation set to update.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Write Metrics to Sheet.

Step 3: Set Up the Authentication and Parameters

Store BlueSky credentials and timezone, then create a session token for API calls.

  1. Open Setup Parameters and set bluesky_handle and app_password to your BlueSky account values.
  2. Set timezone to Asia/Kolkata or your preferred zone.
  3. Open BlueSky Session Login and confirm URL is https://bsky.social/xrpc/com.atproto.server.createSession.
  4. Ensure the JSON body is configured as { "identifier":"{{$('Setup Parameters').first().json.bluesky_handle}}", "password": "{{ $('Setup Parameters').first().json.app_password }}" }.

Step 4: Filter, Batch, and Fetch Post Metrics

Validate recent posts, process in batches, and request metrics from BlueSky.

  1. Open Validate Recent Posts and keep the conditions for non-empty Post Link and Posted At with the date window check.
  2. Verify the date filter expressions are set to {{ DateTime.fromFormat($json['Posted At'], 'yyyy-MM-dd HH:mm', { zone: $('Setup Parameters').first().json.timezone }) }} and {{ $now.setZone($('Setup Parameters').first().json.timezone || 'UTC').minus({days: 14}) }}.
  3. Keep Batch Iterate Records connected after Validate Recent Posts to process results in batches.
  4. Open Fetch Post Metrics and confirm URL is https://bsky.social/xrpc/app.bsky.feed.getPosts.
  5. Set the query parameter uris to =at://{{ $('BlueSky Session Login').first().json.did }}/app.bsky.feed.post/{{ $('Batch Iterate Records').item.json["Post Link"].split("/post/")[1] }}.
  6. Set the header Authorization to =Bearer {{ $('BlueSky Session Login').first().json.accessJwt }}.

If your posts are older than 14 days or the date format doesn’t match yyyy-MM-dd HH:mm, the filter may exclude all rows. Update the format or window if needed.

Step 5: Configure Metrics Writeback

Map the returned metrics back into the Google Sheet row using the row number from each record.

  1. In Write Metrics to Sheet, map Like Count to {{ $json?.posts[0]?.likeCount || 0 }}.
  2. Map Reply Count to {{ $json?.posts[0]?.replyCount || 0 }} and Repost Count to {{ $json?.posts[0]?.repostCount || 0 }}.
  3. Map row_number to {{ $('Batch Iterate Records').item.json.row_number }} and keep it as the matching column.
  4. Ensure Write Metrics to Sheet is connected back to Batch Iterate Records to continue looping.

⚠️ Common Pitfall: If the sheet does not include a row_number field, the update operation will fail or overwrite the wrong row. Make sure it exists and is read-only.

Step 6: Test and Activate Your Workflow

Run a manual test and confirm that metrics are written back to your sheet before enabling the schedule.

  1. Click Execute Workflow and watch each node run from Timed Run Trigger through Write Metrics to Sheet.
  2. Successful execution should update the Like Count, Reply Count, and Repost Count columns in your sheet for recent posts.
  3. If results are missing, check the output of Validate Recent Posts and Fetch Post Metrics for filtering or API errors.
  4. When everything looks correct, toggle the workflow to Active to run on schedule.
🔒

Unlock Full Step-by-Step Guide

Get the complete implementation guide + downloadable template

Common Gotchas

  • Google Sheets credentials can expire or need specific permissions. If things break, check the n8n credential connection status and the spreadsheet sharing settings first.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Default prompts in AI nodes are generic. Add your brand voice early or you’ll be editing outputs forever.

Frequently Asked Questions

How long does it take to set up this BlueSky metrics sync automation?

About 20–30 minutes if your sheet is ready.

Do I need coding skills to automate BlueSky metrics syncing?

No. You’ll connect Google Sheets, then paste your BlueSky handle and app password into the configuration node.

Is n8n free to use for this BlueSky metrics sync 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 BlueSky API usage (typically negligible for a daily 14-day window).

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 customize this BlueSky metrics sync workflow for weekly reporting instead of daily?

Yes, but you may miss late spikes. The easiest change is the schedule trigger (switch it to weekly), and many teams also widen the “active window” filter from 14 days to about 30 days so posts still get a few refresh cycles. You can also adjust which rows get pulled by changing the Google Sheets query so only specific campaigns or tags are included.

Why is my BlueSky connection failing in this workflow?

Usually it’s an app password issue. Create a fresh BlueSky App Password, update it in the “Configuration” or setup node, then re-run the login request. If it still fails, check that the handle format matches what the workflow expects and that BlueSky isn’t rate-limiting you because of too many runs close together.

How many posts can this BlueSky metrics sync automation handle?

Dozens per day is fine for most accounts.

Is this BlueSky metrics sync automation better than using Zapier or Make?

Often, yes. This workflow benefits from n8n’s control over filtering (the 14-day active window), batching, and error handling, which is where simpler tools can get brittle or expensive when you scale. Zapier and Make can work if you only track a handful of posts and don’t care about smart filtering. But if you want stability, fewer wasted calls, and the option to self-host, n8n is a strong fit. Honestly, the “best” tool depends on how many posts you track and how strict your reporting needs are. Talk to an automation expert if you’re not sure which fits.

Once this is running, your reporting sheet stops being a chore and starts being a live snapshot. Set it up once, then get on with the work that actually moves the needle.

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