LinkedIn Automation Guide
Automate LinkedIn prospecting with profile views, connections, and messages
This guide covers how to set up and use LinkedIn automation for sales prospecting, including profile views, connection requests, messages, and integration with outreach sequences.
Overview
Girard's LinkedIn automation enables:
- Profile Views - Warm up prospects by viewing their profiles
- Connection Requests - Send personalized connection requests
- Direct Messages - Message connections with personalization
- InMail - Reach non-connections (Sales Navigator)
- Sequence Integration - Include LinkedIn steps in multi-channel sequences
- Rate Limiting - Stay within LinkedIn's limits
- Queue Management - Priority-based action scheduling
Getting Started
Prerequisites
Before using LinkedIn automation:
- LinkedIn Account - Active LinkedIn account
- Sales Navigator - Recommended for full features
- Chrome Extension - Install our LinkedIn helper extension
- Session Capture - Authenticate via the extension
Setting Up Your Account
- Navigate to Outreach > LinkedIn Accounts
- Click Add Account
- Install the Chrome extension if not already installed
- Open LinkedIn in Chrome
- Click the extension icon
- Select "Capture Session"
- Your account will appear in the dashboard
Account Settings
Configure your account settings:
linkedin_account:
name: "Sales Team Account"
owner: "john@company.com"
daily_limits:
profile_views: 100
connection_requests: 25
messages: 50
inmails: 20
schedule:
active_hours: ["09:00", "17:00"]
timezone: "America/New_York"
days: [1, 2, 3, 4, 5] # Mon-Fri
safety:
min_delay_seconds: 30
max_delay_seconds: 120
randomize_delays: true
respect_rate_limits: true
LinkedIn Actions
Profile Views
View profiles to create a notification and warm up prospects:
action:
type: LINKEDIN_VIEW
profile_url: "https://linkedin.com/in/johndoe"
account_id: "acc_123"
Best Practices:
- View profiles before sending connections
- Creates curiosity and increases connection acceptance
- 1-3 day delay between view and connect
Connection Requests
Send personalized connection requests:
action:
type: LINKEDIN_CONNECT
profile_url: "https://linkedin.com/in/johndoe"
account_id: "acc_123"
note: |
Hi {{firstName}},
I saw your post about {{topic}} and would love to connect.
I work with companies in {{industry}} on similar challenges.
Looking forward to connecting!
Note Limits:
- Character limit: 300
- Keep notes concise and personalized
- Reference something specific (post, mutual connection, company news)
Direct Messages
Message existing connections:
action:
type: LINKEDIN_MESSAGE
profile_url: "https://linkedin.com/in/johndoe"
account_id: "acc_123"
message: |
Hi {{firstName}},
Thanks for connecting! I noticed {{company}} is
{{trigger_event}}.
Would you be open to a quick chat about how we're
helping similar companies with {{solution}}?
Best,
{{senderName}}
InMail (Sales Navigator)
Reach non-connections with InMail:
action:
type: LINKEDIN_INMAIL
profile_url: "https://linkedin.com/in/johndoe"
account_id: "acc_123"
subject: "Quick question about {{company}}"
message: |
Hi {{firstName}},
I hope this message finds you well...
InMail Best Practices:
- Subject line is crucial (keep under 50 chars)
- More formal than connection messages
- Include clear value proposition
- Request specific, low-commitment action
Post Engagement
Engage with prospect posts:
# Like a post
action:
type: LINKEDIN_LIKE
post_url: "https://linkedin.com/posts/..."
account_id: "acc_123"
# Comment on a post
action:
type: LINKEDIN_COMMENT
post_url: "https://linkedin.com/posts/..."
account_id: "acc_123"
comment: "Great insights! {{personalized_comment}}"
Sequence Integration
Adding LinkedIn Steps
Include LinkedIn actions in outreach sequences:
sequence:
name: "Enterprise Outreach"
steps:
- day: 0
type: LINKEDIN_VIEW
description: "View profile"
- day: 1
type: EMAIL
subject: "{{firstName}}, quick question about {{company}}"
body: "..."
- day: 2
type: LINKEDIN_CONNECT
note: "Hi {{firstName}}, I just sent you an email about..."
- day: 4
type: EMAIL
subject: "Re: Quick question about {{company}}"
body: "Following up..."
- day: 5
condition: "linkedin_connected"
type: LINKEDIN_MESSAGE
message: "Thanks for connecting! I wanted to follow up..."
- day: 7
type: CALL
script: "Enterprise discovery call"
Conditional LinkedIn Steps
Execute steps based on LinkedIn status:
- day: 5
type: CONDITION
condition: "contact.linkedinConnected == true"
then:
- type: LINKEDIN_MESSAGE
message: "..."
else:
- type: EMAIL
subject: "..."
body: "..."
Rate Limiting
Default Limits
Girard enforces safe defaults:
| Action | Daily Limit | Hourly Limit |
|---|---|---|
| Profile Views | 100 | 20 |
| Connection Requests | 25 | 5 |
| Messages | 50 | 10 |
| InMails | 20 | 5 |
| Comments | 30 | 5 |
Custom Limits
Configure custom limits per account:
rate_limits:
daily:
profile_views: 80
connections: 20
messages: 40
hourly:
profile_views: 15
connections: 4
messages: 8
consecutive_max: 5
min_delay_seconds: 45
Warmup Period
For new accounts, gradually increase limits:
warmup:
enabled: true
duration_days: 14
start_percentage: 20 # Start at 20% of limits
increment_per_day: 6 # Increase by 6% daily
Queue Management
Action Queue
All LinkedIn actions are queued for execution:
queue_status:
pending: 45
processing: 1
completed_today: 32
failed_today: 2
next_action_at: "2026-02-08T14:30:00Z"
Priority Levels
Set action priorities:
| Priority | Description | Use Case |
|---|---|---|
urgent | Execute immediately | Time-sensitive follow-ups |
high | Top of queue | Hot leads |
normal | Standard processing | Regular sequences |
low | When queue is empty | Bulk operations |
Retry Logic
Failed actions are automatically retried:
retry:
max_attempts: 3
backoff: exponential
initial_delay: 300 # 5 minutes
max_delay: 3600 # 1 hour
Personalization
Available Variables
Use these variables in messages:
| Variable | Description |
|---|---|
{{firstName}} | First name |
{{lastName}} | Last name |
{{company}} | Company name |
{{title}} | Job title |
{{industry}} | Industry |
{{location}} | Location |
{{mutualConnections}} | Mutual connection names |
{{recentPost}} | Recent post topic |
{{companyNews}} | Recent company news |
AI Personalization
Enable AI-powered personalization:
personalization:
enabled: true
model: claude-sonnet-4
instructions: |
Research the prospect's profile and recent activity.
Reference something specific and relevant.
Keep the tone professional but conversational.
Avoid generic openings like "I came across your profile."
fields:
- opening_line
- relevant_insight
- value_prop
Analytics
Performance Metrics
Track LinkedIn performance:
| Metric | Description |
|---|---|
| Connection Rate | % of requests accepted |
| Reply Rate | % of messages replied |
| View-to-Connect | Conversion from view |
| Message Opens | LinkedIn read receipts |
| Profile Views Received | Views from prospects |
Reporting
linkedin_report:
period: "last_30_days"
account: "acc_123"
metrics:
views_sent: 450
connections_sent: 120
connections_accepted: 72
connection_rate: 60%
messages_sent: 95
messages_replied: 28
reply_rate: 29.5%
Safety & Compliance
LinkedIn Terms
Stay compliant with LinkedIn's terms:
- No automation tools - Use session-based access
- Reasonable limits - Stay within daily limits
- No spam - Personalize all outreach
- Opt-out respect - Honor unsubscribe requests
Account Protection
Protect your LinkedIn account:
- Gradual scaling - Use warmup periods
- Randomized delays - Vary timing between actions
- Working hours only - Operate during business hours
- Profile completeness - Maintain complete profile
- Engagement - Mix outreach with genuine engagement
Warning Signs
Watch for these indicators:
- Temporary restrictions from LinkedIn
- Unusual captcha prompts
- Connection request limits
- Profile view limits
If you see warnings, pause automation for 24-48 hours.
Troubleshooting
Session Expired
If your session expires:
- Open LinkedIn in Chrome
- Log in manually
- Click extension icon
- Select "Capture Session"
- Verify in Girard dashboard
Action Failures
Common failure reasons:
| Error | Cause | Solution |
|---|---|---|
session_expired | Session token invalid | Recapture session |
profile_not_found | Invalid profile URL | Verify URL |
rate_limited | LinkedIn limit hit | Wait 24 hours |
connection_exists | Already connected | Skip action |
message_blocked | Messaging restricted | Check settings |
Connection Request Pending
If connections stay pending:
- Target may have restricted connection requests
- Review and improve your note
- Ensure profile is complete
- Consider alternative approach (InMail, email)
Best Practices Summary
- View before connect - Always view profiles first
- Personalize everything - Generic messages fail
- Respect limits - Stay within safe thresholds
- Mix channels - Combine with email and phone
- Engage genuinely - Like and comment on posts
- Track results - Monitor and optimize
- Stay compliant - Follow LinkedIn's terms
Previous: Prompt Engineering | Next: API Authentication