Use when running LinkedIn social selling as a repeatable motion — Sales Navigator saved searches and trigger alerts, weekly request budgets, fixing a low acceptance rate, turning profile views and post engagers into warm threads, logging every touch. NOT the note or DM copy (that is `cold-outreach`), NOT the deal after a reply (that is `sales-pipeline`).
Installs into .claude/skills of the current project.
Are you the author of Linkedin Outreach?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/ericrisco-linkedin-outreach)
---
name: linkedin-outreach
description: "Use when running LinkedIn social selling as a repeatable motion — Sales Navigator saved searches and trigger alerts, weekly request budgets, fixing a low acceptance rate, turning profile views and post engagers into warm threads, logging every touch. NOT the note or DM copy (that is `cold-outreach`), NOT the deal after a reply (that is `sales-pipeline`)."
tags: [linkedin, social-selling, sales-navigator, outreach, pipeline]
recommends: [cold-outreach, lead-gen, sales-pipeline, linkedin-strategy, linkedin-content]
origin: risco
---
# Linkedin Outreach — The Loop and Its Ledger
*You run the LinkedIn social-selling motion and keep its score: **who** to touch, **when**, through **what** warm-up, and **how** the loop is run and logged. The thesis is warm-first — engagement before connection, signal before send, ledger before "I'll remember it." The output is a running system plus a touch ledger under `02-DOCS/`, never a finished line of copy: when prose is needed you write the brief and hand it off, then stay in the loop.*
## Boundary
The sharpest line is against `../cold-outreach/SKILL.md`, and it splits on message-vs-system:
- **A single message** — the connection note (≤300 chars), the DM bump, its wording and per-inbox send cadence → cold-outreach. If the ask is "write this" or "fix this template," it is not yours.
- **The system** — who to touch, when, the warm-up, the budget, the ledger → here. When both are in play, this skill drives and delegates the copy.
Also not yours: sourcing / scoring the raw prospect list and ICP definition → `../lead-gen/SKILL.md`; the deal after a reply, i.e. stages, forecast, CRM tasks → `../sales-pipeline/SKILL.md`; writing or scheduling LinkedIn *posts* → `../linkedin-content/SKILL.md`; brand growth and positioning → `../linkedin-strategy/SKILL.md`.
## The loop
Five phases, in order. Each has a *why* and yields one artifact; the artifact gates the next phase. Skipping a phase is how acceptance collapses.
1. **Target** — *why:* outreach timed to a reason beats outreach timed to a calendar. → Yields a Sales Nav saved search + trigger alerts (job change, funding, recent post).
2. **Warm** — *why:* a cold, context-free request is the worst-accepting move you can make; engaging first is what fixes it. → Yields a logged pre-touch (profile view + one genuine comment/like 1–2 days prior).
3. **Connect** — *why:* the request is the smallest, most rate-limited move; spend it deliberately. → Yields a sent request inside the weekly budget, note-or-no-note chosen by goal.
4. **Convert** — *why:* an accept is not a conversation; the choreography turns a signal into a warm 1:1. → Yields a thread with a real reply, copy delegated to cold-outreach when needed.
5. **Log** — *why:* a motion you can't measure you can't repeat or fix. → Yields a row in the `02-DOCS/` ledger with the outcome.
Each phase gets a section below; the last one compresses all five into a day.
## Target with Sales Navigator
Build the saved search from the ICP, not from a name list:
- **Filters that matter:** geography, current job title (use the title field, not keywords, to avoid past-role noise), seniority, company headcount, industry, and `Posted on LinkedIn in past 30 days` (active profiles accept and reply far more). Save it; Sales Nav re-runs it and surfaces new matches.
- **Trigger alerts worth turning on:** *changed jobs in last 90 days* (new role = new budget, new pain), *company funding events*, and *posted recently* (a fresh post is your warm-up hook). Time the request to a trigger, never to a Tuesday.
- **InMail reality:** Core and Advanced both ship **50 InMail credits/mo**, rolling over up to 3 months (max 150 accumulated); an InMail that gets a reply within 90 days is **credited back**. Spend InMail on out-of-network leads where a connection request can't reach — not on people you could warm up and connect to for free.
Free vs Core vs Advanced — buy on the job, not the brand:
| You need | Tier | 2025 price | Why |
| --- | --- | --- | --- |
| Run the loop on a tight ICP, manual budget | Free | $0 | Works if you stay disciplined; no saved-search alerts. |
| Saved searches, 40+ filters, lead/account alerts, 50 InMail/mo | Core | $119.99/mo ($1,079.88/yr) | The default for a working social seller. |
| + TeamLink, Smart Links, buyer-intent, Account/Lead IQ, CRM sync | Advanced | $159.99/mo ($1,799.88/yr) | Only when a team or CRM sync is real. |
Filter recipes per ICP, trigger-alert setup, and the full Core-vs-Advanced buy math → `references/sales-navigator-playbook.md`.
## The connection motion
**Engagement-before-connect ritual.** 1–2 days before the request: view the profile, follow the company page, and drop **one genuine** comment or like on a recent post. This is what moves acceptance from ~20–30% (cold) to ~60%+. Log the pre-touch — it is phase 2, not optional flavor.
**Note or no note — read the paradox correctly.** A personalized note barely moves *acceptance* (26.42% with vs 26.37% without; some 2025/26 datasets show no-note accepting *higher*). But a note with real context nearly **doubles the post-accept reply rate** (9.36% vs 5.44%). So decide by goal:
| Your goal | Note? | Why |
| --- | --- | --- |
| Maximize the **accept** (build network, retarget later) | No note (or near-empty) | Notes don't lift acceptance; an empty request often accepts as well or better. |
| Maximize the **reply** after accept | Short context note | Real context roughly doubles reply; worth the friction only when you have a true hook. |
| No genuine hook exists | No note | A generic note is worse than none — it reads as a pitch. |
When you do send a note, you do **not** write it here — hand the brief (the hook, the person, the goal) to `../cold-outreach/SKILL.md`.
**Weekly request budget — the cap is a rolling weekly limit, not a daily reset.**
| Account | Realistic weekly cap | Daily target | Health rule |
| --- | --- | --- | --- |
| Free | ~100/wk | ~20/weekday, stay under ~80/wk | Pause and warm more if acceptance drops below ~30%. |
| Premium / Sales Nav | up to ~200/wk | up to ~40/day | Only with strong SSI and acceptance >40%; otherwise treat as free. |
Over the cap, requests get throttled or the account flagged. Below ~30% acceptance you are spraying — go back to phase 2 instead of pushing volume, and withdraw stale pending requests before they pile up.
## Engagement → conversation
A signal is an opening. Match the signal to a play; the play is choreography (timing, sequence, what to reference), never finished prose.
| Signal | Play | Copy? |
| --- | --- | --- |
| Connection just accepted | Wait, don't pitch. Reference *why* you reached out (their post/role/trigger), ask one genuine question. | Brief → cold-outreach |
| Profile viewer (they viewed you) | Soft, warm reply: "Saw you stopped by — noticed [their thing], curious how you handle X?" | Brief → cold-outreach |
| Post engager (liked/commented your post) | Thank or build on their comment, then DM a related question tied to their work. | Brief → cold-outreach |
| Comment thread (they engaged a third party's post) | Add value in-thread first, connect with that context the next day. | Brief → cold-outreach |
Worked example — the move, not the words:
```text
Bad (pitch-on-accept):
Accepted → "Thanks for connecting! We help teams like yours cut reporting
time 40% with our analytics platform — open to a 15-min demo Thursday?"
Reads as a trap; reply rate craters.
Good (reference-then-ask):
Accepted → "Appreciate the connect — your post on attribution gaps in
ecommerce hit home. How are you splitting paid vs organic credit right now?"
Opens a real thread; the product never comes up until they ask.
```
## Hand off to pipeline
You run the loop up to a **warm intro or a booked call** — then you stop and hand off.
Buying-signal tells in a thread: they ask about price/timeline, mention an active project or pain, reference budget or a decision date, or say "send me more." When you see one:
1. Book the call or send the warm intro.
2. Log the outcome (`call_booked`) in the ledger.
3. Hand the thread + context to `../sales-pipeline/SKILL.md` — the moment a deal exists it is theirs, and you set no stages or forecasts.
## The ledger (02-DOCS)
One file. Path: `02-DOCS/linkedin-outreach/touches.csv`. The header row is fixed (verify.sh checks it verbatim):
```csv
date,name,profile_url,channel,trigger,action,stage,outcome,next_touch
```
- `channel`: `connect` | `inmail` | `dm` | `comment` | `view`.
- `outcome` (enum, no blanks): `requested` | `accepted` | `replied` | `conversation` | `call_booked` | `dead`.
- Never leave a literal merge token (`{first_name}`, `[company]`, `XXXX`, `TODO`) in a cell — verify.sh fails on it.
Full column spec, the outcome enum, a filled 5-row example, and the weekly-review formulas → `references/ledger-schema.md`.
**Weekly review ritual** (15 min, same day each week). Compute from the ledger:
- **Acceptance %** = accepted ÷ requested.
- **Post-accept reply %** = replied ÷ accepted.
- **Conversations → calls %** = call_booked ÷ conversation.
- **Touches/week** = rows added this week (is the loop actually running?).
If acceptance < ~30%, warm harder (phase 2). If reply < ~10%, your hooks are weak (better brief to cold-outreach). If touches/week is near zero, the loop stopped — that's the real failure.
## Anti-patterns
| Bad | Why it bites | Do instead |
| --- | --- | --- |
| Spray connection requests over the cap | Rolling weekly limit; throttled or account-flagged | Stay under ~80/wk free, ~200 Premium with >40% accept |
| Pitch the instant a connection accepts | Reads as a trap; reply rate craters | Reference their context, ask one real question first |
| Automation that ignores the rolling limit | Bursts trip LinkedIn's detection; account at risk | Pace within the budget; warm-up beats volume |
| Read "notes don't help" as "context never helps" | Notes don't lift *accept*, but context doubles *reply* | Decide note by goal: accept→none, reply→context |
| Chase SSI as the goal | SSI is a lagging proxy; high SSI ≠ pipeline | Track acceptance/reply/calls; let SSI follow |
| Run outreach with no ledger | No measurement → no repeatable motion | Log every touch + outcome to `02-DOCS/` |
## Daily 30-minute routine
Run this as a checklist; it is the loop compressed into a day.
- [ ] **Engage (10 min):** comment genuinely on 5–8 posts from your saved search and from people you plan to connect with this week (phase 2 warm-up bank).
- [ ] **Connect (5 min):** send today's requests from the saved search / trigger alerts, inside the weekly budget; note-or-no-note by goal (phase 3).
- [ ] **Convert (10 min):** progress 2–3 warm threads — accepted connections, profile viewers, post engagers — using the signal→play table; delegate any copy to cold-outreach.
- [ ] **Hand off (2 min):** any buying signal → book/intro, then route to sales-pipeline.
- [ ] **Log (3 min):** write every touch and outcome to `02-DOCS/linkedin-outreach/touches.csv`.
Weekly, run the review ritual and adjust the next week's targeting. That closes the loop back to phase 1.