Expandi
Config

LinkedIn Automation Sequence

Automate LinkedIn connection requests and follow-up message sequences via LinkedIn automation tools

Instructions

LinkedIn Automation Sequence

Automate LinkedIn outreach at scale: connection requests, follow-up messages, profile visits, and skill endorsements. These tools operate via browser extension or cloud proxy to simulate human LinkedIn activity.

Tool Options

| Tool | API/Integration | Best For | |------|----------------|----------| | Dripify | REST API + webhooks | Cloud-based, safe daily limits, CRM sync | | Expandi | REST API + webhooks | Smart sequences with multi-channel, IP warmup | | PhantomBuster | REST API | Scraping + automation combos, flexible triggers | | Linked Helper | Local app + CSV export | Budget option, runs from desktop | | Waalaxy | REST API + webhooks | Combined LinkedIn + email sequences |

Authentication

Dripify:

Authorization: Bearer {DRIPIFY_API_KEY}
Base URL: https://api.dripify.io/v1

Expandi:

Authorization: Bearer {EXPANDI_API_KEY}
Base URL: https://api.expandi.io/api/v1

PhantomBuster:

X-Phantombuster-Key: {PHANTOMBUSTER_API_KEY}
Base URL: https://api.phantombuster.com/api/v2

Operations

1. Create a campaign / sequence

Dripify:

POST https://api.dripify.io/v1/campaigns
{
  "name": "Mar24-Series-A-CTOs-LI-Outreach",
  "linkedin_account_id": "{ACCOUNT_ID}",
  "sequence": [
    {
      "action": "visit_profile",
      "delay_days": 0
    },
    {
      "action": "connect",
      "delay_days": 1,
      "message": "Hi {{firstName}}, saw your post about {{topic}}. We're working on something similar for {{companyName}} -- would love to connect."
    },
    {
      "action": "message",
      "delay_days": 3,
      "message": "Thanks for connecting, {{firstName}}. Quick question: how is your team currently handling {{pain_point}}? Curious if you've run into the same issues we hear from other {{title}}s.",
      "condition": "connected"
    },
    {
      "action": "message",
      "delay_days": 7,
      "message": "Last thought, {{firstName}} -- we helped {{similar_company}} cut {{metric}} by {{result}}. Worth a 15-min chat? Here's my calendar: {{booking_link}}",
      "condition": "no_reply"
    }
  ],
  "daily_limits": {
    "connections": 20,
    "messages": 40,
    "profile_visits": 50
  }
}

Expandi:

POST https://api.expandi.io/api/v1/campaigns
{
  "name": "Mar24-Series-A-CTOs-LI-Outreach",
  "type": "connector",
  "steps": [
    {"type": "view_profile", "delay": 0},
    {"type": "connect", "delay": 86400, "note": "Hi {{firstName}}..."},
    {"type": "message", "delay": 259200, "text": "Thanks for connecting..."},
    {"type": "message", "delay": 604800, "text": "Last thought..."}
  ],
  "schedule": {
    "timezone": "America/New_York",
    "days": ["mon", "tue", "wed", "thu", "fri"],
    "hours": {"start": 8, "end": 17}
  }
}

2. Import prospects to campaign

Dripify:

POST https://api.dripify.io/v1/campaigns/{CAMPAIGN_ID}/leads
{
  "leads": [
    {
      "linkedin_url": "https://www.linkedin.com/in/janesmith",
      "first_name": "Jane",
      "company_name": "Acme Corp",
      "custom_vars": {
        "topic": "pipeline automation",
        "pain_point": "manual CRM updates",
        "similar_company": "TechCo",
        "booking_link": "https://cal.com/founder/discovery"
      }
    }
  ]
}

PhantomBuster (via Sales Navigator search):

POST https://api.phantombuster.com/api/v2/agents/launch
{
  "id": "{SALES_NAV_SEARCH_EXPORT_AGENT_ID}",
  "argument": {
    "searchUrl": "https://www.linkedin.com/sales/search/people?query=...",
    "numberOfProfiles": 100
  }
}

3. Monitor campaign replies and connection accepts

Dripify webhook:

POST {YOUR_WEBHOOK_URL}
// Dripify sends events for:
// - connection_accepted
// - message_replied
// - message_sent
// Payload includes lead data, message content, and timestamp

Expandi webhook:

POST {YOUR_WEBHOOK_URL}
{
  "event": "reply_received",
  "lead": {"linkedin_url": "...", "first_name": "..."},
  "message": "Sure, I'd be happy to chat...",
  "campaign_id": "..."
}

Route these webhooks to n8n for CRM updates and cross-channel coordination.

4. Retrieve campaign analytics

Dripify:

GET https://api.dripify.io/v1/campaigns/{CAMPAIGN_ID}/stats

Returns: connection_requests_sent, connections_accepted, messages_sent, replies_received, acceptance_rate, reply_rate.

5. Pause or stop a campaign

PUT https://api.dripify.io/v1/campaigns/{CAMPAIGN_ID}
{
  "status": "paused"
}

Pause immediately if: acceptance rate drops below 15%, reply rate drops below 5%, or LinkedIn sends a warning.

Safety Guardrails

  • Daily limits: Never exceed 25 connection requests/day (LinkedIn's soft limit). Start at 15 and ramp over 2 weeks.
  • Warm up: New or inactive accounts need 2 weeks of manual activity (posting, commenting, browsing) before automation.
  • Personalization: Never send identical messages to more than 10 people. Vary templates using merge fields.
  • Business hours only: Send during 8am-5pm in the prospect's timezone. Weekend sends look automated.
  • Withdraw stale requests: Withdraw pending connection requests older than 3 weeks. Too many pending requests flags your account.
  • Stop on positive signal: If a prospect replies positively, immediately stop the automation sequence and hand off to human follow-up.

Error Handling

  • LinkedIn restriction warning: Pause all automation for 48-72 hours. Reduce daily limits by 50% when resuming.
  • Account temporarily restricted: Stop automation entirely. Do manual activity only for 1 week. Resume at half limits.
  • Prospect has open profile: Skip connection request, send InMail directly (requires Sales Navigator).
  • Duplicate detection: Check CRM before adding to campaign. Never run the same prospect through two LinkedIn campaigns simultaneously.