🔓 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

Google Sheets + Browserflow: LinkedIn invites tracked

Lisa Granqvist Partner Workflow Automation Expert

Your LinkedIn outreach starts organized… then turns into a mess. You send a few invites, lose track of who you contacted, accidentally hit someone twice, and your “simple spreadsheet” becomes a half-truth you don’t fully trust.

Sales reps feel it when pipelines get noisy. Recruiters feel it when candidates get annoyed. Founders doing their own networking run into it too. This LinkedIn invite tracking automation keeps one Google Sheet accurate while Browserflow sends the right invite to the right person.

Below, you’ll see how the workflow runs, what results it creates, and what you need to set it up safely (without turning your LinkedIn account into a science experiment).

How This Automation Works

The full n8n workflow, from trigger to final output:

n8n Workflow Template: Google Sheets + Browserflow: LinkedIn invites tracked

The Problem: LinkedIn invite tracking breaks the moment you get busy

Manual LinkedIn outreach sounds manageable until you do it every day. You copy a profile URL, write a message, send the invite, then try to remember where you logged it. Some days you update your sheet. Other days you don’t. A week later, you can’t tell who’s pending, who’s already connected, and who you should not touch again. That’s when duplicates happen, and frankly, it looks sloppy. Worse, you waste the best part of your day doing admin instead of real conversations.

It adds up fast. Here’s where it usually breaks down.

  • You end up checking LinkedIn profiles one-by-one just to confirm you’re not already connected.
  • Status fields in Google Sheets drift, so “Pending” might actually mean “Sent two weeks ago.”
  • Personalized messages get inconsistent because you’re rushing and rewriting the same thing repeatedly.
  • Scaling from 10 invites to 50 invites becomes risky because the process relies on memory.

The Solution: Send invites from Google Sheets and auto-update statuses

This workflow turns your Google Sheet into a simple outreach control center. You keep a list of prospects (including their LinkedIn profile URLs), mark who is ready for an invite, and run the automation. n8n pulls the pending rows, works through them in small batches, and asks Browserflow to check each profile’s connection status first. If you’re already connected (or an invite is already pending), the workflow skips sending anything and updates the row so your sheet stays truthful. If the person is not connected, it composes your invitation message, sends the invite, and then writes the “sent” status back to Google Sheets. A built-in delay helps keep the behavior human-like instead of blasting requests back-to-back.

The workflow starts when you run it in n8n. From there, Google Sheets supplies the next contacts, Browserflow verifies the connection state, and an If/Switch branch decides what happens next. Finally, Google Sheets is updated and the workflow waits briefly before moving to the next record.

What You Get: Automation vs. Results

Example: What This Looks Like

Say you send 20 LinkedIn invites each workday from a curated list. Manually, you might spend about 5 minutes per person between opening the profile, checking connection state, writing a note, and updating your sheet, which is roughly 100 minutes a day. With this workflow, you update the Google Sheet once, then run the automation: a minute to start it, a short delay between contacts, and Browserflow does the checking and sending. You still review your list, but the repetitive clicking and status cleanup largely disappears.

What You’ll Need

  • n8n instance (try n8n Cloud free)
  • Self-hosting option if you prefer (Hostinger works well)
  • Google Sheets for your outreach list and statuses
  • Browserflow to check connections and send invites
  • Browserflow credentials (get it from your Browserflow account dashboard)

Skill level: Intermediate. You will connect accounts, paste a Sheet ID, and adjust message and limits carefully.

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

How It Works

You run the workflow manually. It starts from an n8n manual trigger, which is useful while you’re testing and keeping invite volume under control.

Your sheet settings are applied. A quick configuration step stores the Sheet ID, then n8n retrieves contact rows from Google Sheets and filters down to the ones that are actually pending.

Each contact is checked before anything is sent. The workflow processes rows in batches, calls Browserflow to check the LinkedIn connection status, then branches: send an invite with your message, or skip the row if it’s already connected or already in a pending state.

Status stays accurate as it goes. After sending (or skipping), the workflow updates the contact’s status in Google Sheets, then waits briefly before moving to the next record so the pattern stays measured.

You can easily modify the invite message and the daily volume controls (limit and delay) based on your needs. See the full implementation guide below for customization options.

Step-by-Step Implementation Guide

Step 1: Configure the Manual Trigger

This workflow begins with a manual start so you can test and control when outreach runs.

  1. Add the Manual Execution Start node as the trigger.
  2. Leave default settings since it uses manual execution to start the workflow.
  3. Connect Manual Execution Start to Configure Sheet Settings.

Step 2: Connect Google Sheets

Define your sheet ID and connect the Google Sheets nodes that retrieve and update contact rows.

  1. Open Configure Sheet Settings and set googlesheetid to <input your google sheet ID here>.
  2. In Retrieve Contact Rows, set Document to ={{ $json.googlesheetid }} and Sheet Name to contacts.
  3. Credential Required: Connect your googleSheetsOAuth2Api credentials in Retrieve Contact Rows.
  4. In Mark Invitation Sent, set Operation to update, Sheet Name to contacts, and Document to ={{ $('Configure Sheet Settings').item.json.googlesheetid }}.
  5. Credential Required: Connect your googleSheetsOAuth2Api credentials in Mark Invitation Sent.
  6. In Update Contact Status, set Operation to update, Sheet Name to contacts, and Document to ={{ $('Configure Sheet Settings').item.json.googlesheetid }}.
  7. Credential Required: Connect your googleSheetsOAuth2Api credentials in Update Contact Status.

⚠️ Common Pitfall: If you leave <input your google sheet ID here> unchanged in Configure Sheet Settings, Retrieve Contact Rows will fail to load contacts.

Step 3: Set Up Filtering and Batching Logic

Filter out contacts who already received invites, limit daily volume, and iterate through records.

  1. In Filter Pending Invitations, keep the condition that checks invitation with ={{ $json.invitation }} and compares to ={{ $('Configure Sheet Settings').item.json.employee }}.
  2. In Restrict Item Count, set Max Items to 5 to cap outreach per run.
  3. Use Iterate Records to split contacts into batches for sequential processing.

Step 4: Configure Connection Checks and Invite Dispatch

Check current LinkedIn connection status, branch logic, and send invites when appropriate.

  1. In Check Connection Status, set LinkedIn URL to ={{ $('Retrieve Contact Rows').item.json.url }}.
  2. Credential Required: Connect your browserflowApi credentials in Check Connection Status.
  3. In Connection Branch Check, keep the two false checks: ={{ $json.is_connection }} and ={{ $json.is_pending }}.
  4. In Compose Invite Message, set message to =Dear {{ $('Retrieve Contact Rows').item.json.firstname }}, We're building a framework to help revenue teams drive efficient outbound strategies. This automation is part of the solution. Happy to connect and get your feedback! The Outreach Team..
  5. In Dispatch Connection Invite, set Operation to sendConnectionInvite, Add Message to true, Message to ={{ $json.message }}, and LinkedIn URL to ={{ $('Retrieve Contact Rows').item.json.url }}.
  6. Credential Required: Connect your browserflowApi credentials in Dispatch Connection Invite.

Step 5: Configure Status Updates and Timing Controls

Update invite status in your sheet and apply a delay between outreach attempts.

  1. In Mark Invitation Sent, ensure invitation is set to Y and row_number to ={{ $('Retrieve Contact Rows').item.json.row_number }}.
  2. In Update Contact Status, set invitation to ={{ $('Check Connection Status').item.json.is_pending ? "pending" : "connected" }} and row_number to ={{ $('Retrieve Contact Rows').item.json.row_number }}.
  3. In Delay Before Next, set Amount to 60 to pause one minute between batches.
  4. Ensure Skip Connected Or Pending routes to Update Contact Status for contacts that are already connected or pending.

If outreach needs slower pacing, increase the Amount in Delay Before Next to reduce LinkedIn rate limits.

Step 6: Test and Activate Your Workflow

Run a manual test to verify that invites are sent and statuses update correctly.

  1. Click Execute Workflow and start from Manual Execution Start.
  2. Confirm Retrieve Contact Rows loads rows from contacts and Filter Pending Invitations returns only eligible contacts.
  3. Verify Dispatch Connection Invite sends an invite and Mark Invitation Sent writes Y to the invitation column.
  4. Check that Delay Before Next pauses execution for 60 seconds before the next batch.
  5. When satisfied, switch the workflow to Active so it is ready for production runs.
🔒

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 screen and confirm the connected Google account can access that exact 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 credits and access can silently block runs. If invites aren’t sending, check your Browserflow dashboard for remaining credits and make sure the workflow is allowed to access LinkedIn in your Browserflow setup.

Frequently Asked Questions

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

About 30 minutes if your sheet and Browserflow account are ready.

Do I need coding skills to automate LinkedIn invite tracking?

No. You will connect credentials, paste your Google Sheet ID, and edit the invite message text.

Is n8n free to use for this LinkedIn invite 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 (credits vary by usage).

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 invite tracking workflow for different outreach messages?

Yes, and you should. Update the Compose Invite Message step to match your voice, then adjust the Google Sheets filter so only the right segment is marked “pending.” Common tweaks include different messages by role, skipping certain industries, and lowering the daily limit for a newer LinkedIn account.

Why is my Browserflow connection failing in this workflow?

Usually it’s expired credentials or missing permissions inside Browserflow. Reconnect Browserflow in n8n, then confirm your Browserflow workspace has access to the LinkedIn actions used for checking status and sending invites. If it still fails, check for credit limits or temporary LinkedIn restrictions, which can cause Browserflow actions to return errors even when your setup is correct.

How many contacts can this LinkedIn invite tracking automation handle?

Practically, as many rows as you can store in Google Sheets, but you should keep daily invite volume modest and use the Limit and Wait controls. On n8n Cloud, the cap is based on monthly executions, so higher-volume outreach may require a paid plan. If you self-host, there’s no execution limit from n8n, but LinkedIn’s natural limits matter more than your server. This workflow is designed to run in small batches, check status, send or skip, then pause. That pacing is the point.

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

Often, yes, because this flow needs branching logic (check status, then send or skip), batching, and a deliberate wait between actions. n8n handles that without making every path a separate paid “task.” Zapier or Make can still work for simpler two-step tracking, like “new row in Sheets → send Slack alert,” but they’re less comfortable when you’re iterating through lots of contacts. If you’re torn, Talk to an automation expert and describe your outreach volume and risk tolerance.

Once this is running, your Google Sheet stays honest and your outreach stays consistent. Set it up once, then spend your time on replies instead of record-keeping.

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