Send personalized LinkedIn connection requests with Google Sheets and Unipile

Go to Workflow
1 views
Built by Salman Mehboob Salman Mehboob
Created on June 05, 2026

Description

Send personalized LinkedIn connection requests automatically using n8n, Google Sheets, and Unipile — with built-in safety limits, duplicate prevention, and full invitation tracking.

Scale your LinkedIn outreach without manually sending a single connection request. This workflow reads your leads from a Google Sheet, filters out already-contacted prospects, and sends each one a personalized connection note via LinkedIn — automatically, on a schedule, and safely within LinkedIn's limits.

Built for founders, sales teams, and recruiters who want consistent LinkedIn outreach without repetitive manual work. Every request is tracked back to your sheet with its invitation ID and status, making follow-up workflows easy to build on top.

Good to know

Unipile pricing is based on the number of connected accounts, not per API call or per message sent. The base plan starts at €49/$55 per month and includes up to 10 linked accounts
For this workflow, connecting one LinkedIn account counts as one account
Unipile does not enforce usage limits — you can send as many requests as you need. However, LinkedIn itself applies its own rate limits and usage policies
A 7-day free trial is available with all features included and no credit card required
LinkedIn has daily connection request limits — keep your total across all runs under 20 per day to avoid account restrictions
Already-contacted leads are automatically skipped on every future run — no risk of sending duplicate requests

How it works

Schedule Trigger runs the workflow automatically at your chosen frequency
All leads are fetched from your Google Sheet and filtered to only those with an empty connection_request_status column
A configurable Limit node caps how many requests go out per run to stay within LinkedIn's safe limits
A Code node extracts the LinkedIn username from each profile URL
All required data — username, connection note, and Unipile credentials — is bundled in the Data Arrangement node
The Loop node processes leads one by one, sending each through the full request flow individually
Unipile API resolves the LinkedIn username to an internal Provider ID required for sending invites
The connection request is sent with the personalized note pulled directly from your Google Sheet
The sheet is immediately updated with the invitation status and unique invitation ID
A Wait node pauses between each request to mimic human behavior and avoid LinkedIn restrictions
The loop continues until all leads in the current batch are processed

Set up steps

Step 1: Prepare Your Google Sheet
Create a sheet with these exact columns:

first_name | last_name | linkedin_url | connection_note | connection_request_status | invitation_id | row_number

Leave connection_request_status and invitation_id empty — the workflow fills these automatically
Write a personalized message per lead in the connection_note column

Step 2: Get Your Unipile Credentials
Sign up at unipile.com — a 7-day free trial is available with no credit card required
Connect your LinkedIn account from the Unipile dashboard
Copy your API Key, DSN, and LinkedIn Account ID
Open the Data Arrangement node and replace the three placeholder values with your credentials

Step 3: Connect Google Sheets
In n8n, go to Credentials → New Credential → Google Sheets OAuth2
Authenticate with the Google account that owns your leads sheet
Update the Get Leads and Update Connection Request Status and ID nodes to point to your sheet

Step 4: Set Your Safety Limits
Open the Limit Connection Request node — set max items per run (recommended: 10–15)
Open the Wait node — set your delay between requests (recommended: 3–5 minutes)
Open the Schedule Trigger — set your run frequency (recommended: every 4–8 hours)

Requirements

Unipile account with LinkedIn connected — starts at €49/$55/month for up to 10 accounts, 7-day free trial available
Google Sheet with lead data in the required column format
n8n instance (cloud or self-hosted)

Customising this workflow

Build a follow-up message workflow triggered when a connection is accepted, using the stored invitation_id
Replace the Schedule Trigger with a webhook to fire outreach from your CRM when a new lead is added
Add an AI node to auto-generate personalized connection notes from each lead's job title or company name
Add Slack or email notifications for a daily outreach summary
Add error handling nodes to catch failed API calls and log them in a separate sheet tab
Filter leads by industry, title, or location by adding extra conditions to the Filter node

*For assistance and support: [email protected]
Linkedin: https://www.linkedin.com/in/salman-mehboob-pro/*

Nodes Used (3)

Code
n8n-nodes-base.code
Google Sheets
n8n-nodes-base.googleSheets
HTTP Request
n8n-nodes-base.httpRequest