🔓 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

LinkedIn + Google Sheets: track invites and followers

Lisa Granqvist Partner Workflow Automation Expert

You start with good intentions: “I’ll follow up with everyone who commented.” Then reality hits. Tabs everywhere, duplicate profiles, invites you can’t remember sending, and a spreadsheet that’s already out of date.

This LinkedIn Sheets tracking automation hits marketing managers and growth-focused founders first, but agency operators feel it too. You will turn post engagement into a clean, deduplicated list of leads, invited connections, accepted connections, and Company Page follow invites. Logged automatically.

Below, you’ll see how the workflow runs end-to-end, what you need to set it up, and what kind of time you get back once it’s running on a schedule.

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: LinkedIn + Google Sheets: track invites and followers

The Problem: LinkedIn outreach falls apart after the first day

LinkedIn Company Page growth looks simple on paper. Post content, watch engagement roll in, connect with the right people, then invite new connections to follow your page. In practice, it’s death by tiny tasks. You copy profile URLs from commenters, you forget which post you already scraped, and you end up sending invites twice (or not at all). Even worse, you can’t tell what’s working because your “system” lives in browser history, notes, and half-finished spreadsheets.

It adds up fast. Here’s where it breaks down once you try to do it consistently.

  • Manually collecting commenters and checking profiles burns about 1-2 hours per batch of posts, and that’s before you send a single invite.
  • Without deduping, you keep revisiting the same people, which means you waste time and look sloppy with repeat outreach.
  • Invite status is basically invisible unless you click through profiles one by one, so follow-up timing turns into guesswork.
  • Inviting accepted connections to follow your Company Page is easy to forget, and that’s the whole point of doing this in the first place.

The Solution: Automated LinkedIn engagement → invites → followers tracking

This workflow turns LinkedIn engagement into a repeatable growth loop using n8n, Browserflow for LinkedIn actions, and a Google Sheets dashboard that stays accurate. It starts by pulling a list of LinkedIn post URLs from a Google Sheet, then scrapes the people who commented (and optionally liked) those posts. Each profile is normalized and checked against your existing sheet so you only add new leads once. From there, scheduled runs take over: the workflow checks who hasn’t been invited yet, sends connection requests, tracks which invites are pending vs. accepted, and finally invites accepted connections to follow your Company Page. Every action updates the same Google Sheet so you always know what happened and when.

The workflow begins when you manually kick off a scrape or when your schedules run. Then it moves through four stages: collect engaged profiles, send connection invites, sync acceptance status, and push Company Page follow invites. The end result is one clean list you can trust, not a pile of screenshots and “I think I already sent that.”

What You Get: Automation vs. Results

Example: What This Looks Like

Say you scrape engagement from 10 recent posts each week and you typically find 20 real prospects per post. Manually, you might spend about 2 minutes per profile to open, sanity-check, copy the URL, and log it, which is roughly 6-7 hours before invites and follow-ups. With this workflow, you trigger the scrape once, then scheduled runs handle the invites, acceptance sync, and Company Page follow invites automatically. Your “work” becomes reviewing the sheet for a few minutes and tweaking targeting, not doing the clicking.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for the lead log and post queue.
  • Browserflow to scrape engagement and perform LinkedIn actions.
  • Browserflow API key (get it from your Browserflow dashboard settings).

Skill level: Intermediate. You’ll connect credentials, install a community node, and paste in your Company Page URL.

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

How It Works

Engagement scraping kicks off from your sheet. You start with a Google Sheet that contains the LinkedIn post URLs you want to mine for leads, and a manual trigger runs the first scrape. As each post is handled, the workflow flags it as processed so you don’t keep re-scraping the same thing.

Profiles get cleaned up before they hit your lead list. Commenters are expanded into individual items, company profiles are filtered out, and profile URLs are normalized so duplicates don’t sneak in under slightly different formats. Then the workflow checks Google Sheets to verify whether the lead already exists.

Connection invites run on a schedule. Every few minutes (or whatever interval you choose), n8n pulls “uninvited” leads from Google Sheets, checks each person’s connection status via Browserflow, and sends an invite only when it makes sense. Pending and connected statuses are written back with timestamps, so the sheet stays truthful.

Accepted connections turn into Company Page follow invites. Another schedule syncs your current LinkedIn connections, matches them back to the sheet, and updates acceptance status. Once someone is marked connected and not yet invited to follow your Company Page, Browserflow sends the “Invite to Follow Page” action and logs that too.

You can easily modify the schedule timing and the lead filters to match your outreach pace. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

This workflow starts with a manual run and includes three scheduled checks for ongoing LinkedIn actions.

  1. Open Manual Start Trigger to confirm it will be used for initial testing and on-demand runs.
  2. Open Scheduled Lead Check and set the interval rule to daysInterval: 2 so it pulls uninvited leads every two days.
  3. Open Scheduled Connection Sync and set the interval rule to daysInterval: 2 for connection status syncing.
  4. Open Scheduled Page Invites and set the interval rule to daysInterval: 2 for page-follow invites.
Keep Manual Start Trigger connected to Retrieve Posts List while testing so you can validate scraping before running schedules.

Step 2: Connect Google Sheets

Google Sheets powers the posts list, lead records, and status updates across the workflow.

  1. In Retrieve Posts List, set Document to [YOUR_ID] and Sheet to Posts. Ensure the filter includes scraped_at with =.
  2. In Flag Post Processed, set Operation to update and map url to {{ $('Batch Iterate Posts').item.json.url }} and scraped_at to {{$now.toISO()}}.
  3. In Verify Existing Lead, filter by linkedin_url with {{ $('Batch Process Profiles').item.json.linkedin_url }} in the Profiles sheet.
  4. In Append Leads Sheet, set Operation to append and map name to {{ $('Batch Process Profiles').item.json.name }} and linkedin_url to {{ $('Batch Process Profiles').item.json.linkedin_url }}.
  5. Apply the same Google Sheets document and sheet IDs to the remaining sheets nodes used for status updates and filters (profiles, accepted leads, and invite flags).
  6. Credential Required: Connect your googleSheetsOAuth2Api credentials to all Google Sheets nodes (11 nodes handle posts, profiles, and invite statuses).
⚠️ Common Pitfall: Make sure every Google Sheets node references the same spreadsheet ID ([YOUR_ID]) or updates will land in the wrong file.

Step 3: Set Up Comment Scraping and Lead Intake

This section pulls LinkedIn post commenters, filters out companies, and stores new leads.

  1. In Batch Iterate Posts, keep the default batch settings to iterate through the posts list.
  2. In Extract Commenters, set Operation to scrapeProfilesFromPostComments, Post URL to {{ $('Retrieve Posts List').item.json.url }}, and keep commentsLimit at 20.
  3. Credential Required: Connect your browserflowApi credentials to Extract Commenters.
  4. In Expand Comments, set Field To Split Out to comments.
  5. In Filter Company Profiles, keep the condition linkedin_url notContains company to exclude company pages.
  6. In Branch If New Lead, keep the condition {{ $json.linkedin_url }} notExists to only append new leads.
The loop Retrieve Posts List → Batch Iterate Posts → Extract Commenters → Expand Comments is the critical path for gathering new profiles. Validate this path first before activating schedules.

Step 4: Configure the Connection Invite Loop

This scheduled loop checks uninvited leads, assesses their status, and sends connection invites as needed.

  1. In Retrieve Uninvited Leads, keep filters for invited_as_connection and accepted blank to find eligible leads.
  2. In Assess Connection Status, set linkedinUrl to {{ $json.linkedin_url }}.
  3. In Connection Needed?, keep the conditions where is_connection equals false and is_pending equals false so only new invites are sent.
  4. In Send Connection Invite, set Operation to sendConnectionInvite and linkedinUrl to {{ $('Iterate Lead Queue').item.json.linkedin_url }}.
  5. In Record Invite Sent and Mark Pending Invite, keep the invited_as_connection timestamp to {{$now}} and match on linkedin_url.
  6. Credential Required: Connect your browserflowApi credentials to Assess Connection Status and Send Connection Invite.
⚠️ Common Pitfall: In Record Invite Sent, confirm the expression is formatted correctly. The default value shows {{ $now }} but an extra brace may cause a validation error.

Step 5: Sync Connections and Normalize URLs

This scheduled path syncs current connections and updates accepted statuses in the leads sheet.

  1. In List Current Connections, keep Operation as listConnections and limit as 20.
  2. In Expand Connection List, set Field To Split Out to data so each connection is processed individually.
  3. In Normalize Profile URLs, keep the JavaScript that appends a trailing slash to linkedin_url values.
  4. In Update Accepted Status, set accepted to and match on linkedin_url.
  5. Credential Required: Connect your browserflowApi credentials to List Current Connections.
If accepted connections are not updating, validate that Normalize Profile URLs outputs a trailing slash, matching the format stored in Google Sheets.

Step 6: Configure Page Follow Invites

Once a lead is accepted, this flow sends an invite to follow your LinkedIn company page.

  1. In Retrieve Accepted Leads, keep filters for accepted equal to and invited_to_page empty.
  2. In Iterate Page Invites, keep default batch settings.
  3. In Send Page Follow Invite, set Operation to inviteToFollowPage, searchTerm to {{ $('Retrieve Accepted Leads').item.json.name }}, and linkedinUrl to https://linkedin.com/company/[YOUR_ID].
  4. In Update Page Invite Flag, set invited_to_page to and match on linkedin_url.
  5. Credential Required: Connect your browserflowApi credentials to Send Page Follow Invite.
⚠️ Common Pitfall: Replace [YOUR_ID] in Send Page Follow Invite with your actual LinkedIn company ID, or invites will fail silently.

Step 7: Test and Activate Your Workflow

Run a manual test to verify the full data loop before turning on the schedules.

  1. Click Execute Workflow on Manual Start Trigger to confirm posts are read and commenters are extracted.
  2. Check that Append Leads Sheet adds new profiles and Flag Post Processed updates scraped_at with {{$now.toISO()}}.
  3. Manually run Scheduled Lead Check to validate the invite loop and confirm updates in Record Invite Sent, Mark Pending Invite, or Mark Connected.
  4. Once validated, toggle the workflow to Active to enable the scheduled triggers.
🔒

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 Credentials page and confirm the connected Google account still has edit access to the sheet.
  • If you’re using Wait nodes or external rendering, processing times vary. Bump up the wait duration if downstream nodes fail on empty responses.
  • Browserflow prompts and defaults are not “your” process. Honestly, if you don’t tune what counts as a valid lead (and filter out company pages early), you will be cleaning junk rows forever.

Frequently Asked Questions

How long does it take to set up this LinkedIn Sheets tracking automation?

About 45 minutes if you already have the Google Sheet template and Browserflow account ready.

Do I need coding skills to automate LinkedIn Sheets tracking?

No. You’ll mostly connect accounts and paste in a few values like your Company Page URL.

Is n8n free to use for this LinkedIn Sheets tracking 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 Browserflow costs (it has a free trial, then paid plans).

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 LinkedIn Sheets tracking workflow for scraping likers too, not just commenters?

Yes, but keep it intentional. You can enable the “likers” scrape in the Browserflow extraction step, then keep the same Google Sheets dedupe check so you don’t flood your lead list. Common customizations include scraping only certain posts (by tag in your sheet), tightening the “company profile” filter, and slowing the invite schedule so your account stays safe.

Why is my Browserflow connection failing in this workflow?

Usually it’s an expired API key or the credential is pointing at the wrong Browserflow workspace. Regenerate the Browserflow API key, update it in n8n credentials, and rerun a single test item. If it still fails, check that the Browserflow for LinkedIn community node is installed and that your LinkedIn session inside Browserflow is valid. Rate limits can also show up as flaky behavior when you run big batches, so reducing batch size often fixes it.

How many leads can this LinkedIn Sheets tracking automation handle?

A few thousand leads in Google Sheets is fine for most teams, and the real limit is your n8n execution allowance and how aggressively you schedule invites.

Is this LinkedIn Sheets tracking automation better than using Zapier or Make?

For this workflow, n8n is usually the better fit because you need looping, branching, and scheduled sync logic across multiple stages (scrape, invite, accept, follow invite). Zapier and Make can handle pieces of it, but the moment you add deduping, status checks, and multi-workflow scheduling, costs and complexity creep in. n8n also gives you the option to self-host, which matters if you’re running frequent checks. If you only want a lightweight “new comment → add row” automation, Zapier or Make can be faster to set up. Talk to an automation expert if you want help choosing.

Once this is live, LinkedIn growth stops being a “when I have time” task. The workflow handles the repetitive tracking, and you get a reliable pipeline you can actually build on.

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